我希望用户输入一个整数(6位长,所以123456而不是1),然后将该输入转换为列表[1,2,3,4,5,6]
。
我尝试了这个:
user_input = list(input("Please enter an 8 digit number")
numbers = [int(i) for i in user_input]
我希望能够使用数字列表执行数学运算,但是我不断收到错误“ int不可迭代”。坦率地说,我不确定自己在做什么,或者甚至不确定“ numbers = [...]”是否必要,或者是否应该只是
numbers = user_input
。尝试numbers = [i for i in user_input]
会得到相同的错误。另外,我意识到我可以运行一个循环来从用户那里获取每个数字,或者让他们在每个数字之间使用逗号以使用
.split(",")
,但是我宁愿不要这样做,因为这对用户来说似乎很混乱。编辑:我一直在版本之间进行切换,对于任何混乱,我们深表歉意。这是用2.7编写的,尽管我打算使用Python 3。
最佳答案
函数input
在Python 2和Python 3中的行为完全不同。
这似乎是Python2。在Python 2中,input
将输入的数据评估为Python代码。如果仅输入数字,input
将返回一个整数。无法将其转换为列表,因此会出现错误。input
是不安全的,并且会引起很多问题,因此最好避免这种情况。请改用raw_input
。
user_input = raw_input("Please enter an 8 digit number: ")
这将返回一个字符串,例如
'12345678'
。可以将其转换为列表。该列表将逐字符遍历字符串。
digits = list(user_input) # e.g. ['1', '2', '3', '4', '5', '6', '7', '8']
但这甚至不是必需的,您可以直接执行以下操作:
numbers = [int(i) for i in user_input] # e.g. [1, 2, 3, 4, 5, 6, 7, 8]
顺便说一句,
input
的Python 3版本与Python 2 raw_input
相同。关于python - 将整数输入字符串转换为列表,然后转换为python中的int?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39945615/