2016-09-15 76 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="")