我的目标非常简单,这让我一再感到烦恼:
我希望将输入整数转换为由输入范围内的所有数字组成的字符串,因此如果输入为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() ]
我知道这不是正确的语法,我到底该怎么说这个呢?
答案 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="")