2016-09-15 103 views
0

我的目標很簡單,這使得它更惱人的是,我一再失敗:打印功能輸入轉換成int

我希望把輸入整數到輸入範圍內由所有的一串數字範圍,因此,如果輸入的是3,代碼爲: print(*range(1, 3+1), sep="")

這顯然使用n = input()然而當作品,無論在哪裏我把str(),我得到了同樣的錯誤:

"Can't convert 'int' object to str implicitly" 

我感到很遺憾浪費你的時間集體對這種煩人簡單的任務..

我的代碼:

n= input() 
print(*range(1, n+1), sep="") 

我也試過列表理解(我的終極目標是讓這一切都在一個線):

[print(*range(1,n+1),sep="") | n = input() ] 

我知道這是不正確的語法,我怎麼應該正確地說這個?

This沒有幫助,同上this,同上this,我放棄 - >問S.O.

+1

你確定你的輸入()函數產生一個整數? – sage88

回答

3

我看不出爲什麼你會在這裏使用str,你應該使用int;從input返回的值的類型爲str,您需要對其進行轉換。

一個班輪看起來是這樣的:

print(*range(1, int(input()) + 1), sep=' ') 

input被包裹在int改造海峽返回到int並提供其作爲參數傳遞給range

作爲附錄,你這裏的錯誤是由n + 1range調用導致其中n仍然str; Python 不會將隱含地將n所保存的值轉換爲int並執行該操作;它會抱怨:

n = '1' 
n + 1 
TypeErrorTraceback (most recent call last) 
<ipython-input-117-a5b1a168a772> in <module>() 
----> 1 n + 1 

TypeError: Can't convert 'int' object to str implicitly 

這就是爲什麼你需要明確int()包裹。此外,請注意,一個班輪失敗,輸入不能轉換爲int,您需要將其包裝在try-except語句中以處理如果需要。

+2

試圖幫助他自己看到這一點,但是這是正確的答案。 – sage88

2

在代碼中,你應該能夠做到:

n = int(input()) 
print(*range(1,n+1),sep="") 

但你也想有一些錯誤檢查,以確保一些實際進入的提示。

一個班輪的作品:

print(*range(1, int(input()) + 1), sep="")