打印功能输入到int

时间:2016-09-15 16:12:27

标签: python python-3.x

我的目标非常简单,这让我一再感到烦恼:

我希望将输入整数转换为由输入范围内的所有数字组成的字符串,因此如果输入为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。

2 个答案:

答案 0 :(得分:3)

我认为没有理由在此使用str,您应该使用int;从input返回的值属于str类型,您需要对其进行转换。

单线可能看起来像这样:

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

input包含在int中以将str返回到int并将其作为参数提供给range

作为附录,此处的错误是由n + 1来电中的range引起的,其中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语句中以处理需要的。

答案 1 :(得分:2)

在您的代码中,您应该能够:

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

但您还需要进行一些错误检查,以确保在提示符中实际输入了一个数字。

有效的单线:

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