我希望用户输入一个整数(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/

10-14 18:21
查看更多