我希望用户输入一个整数(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。
最佳答案
在 Python 2.7 中,input()
返回一个整数。要将输入读取为字符串,请使用函数raw_input()
。或者,您可以切换到 Python 3,其中 input()
始终返回字符串。
此外,如果用户提供的数字超过 1 位,您的解决方案也不是很简洁。例如,字符串“123”可以解释为 [1, 2, 3]、[12, 3] 等。
一个巧妙的解决方案是要求用户提供用空格分隔的输入,如下 x_1, x_2, ... x_n
那么 Python 3.0 中的代码将如下所示
lst = [int(x) for x in input().split()]
对于 Python 2.7
lst = [int(x) for x in raw_input().split()]
关于python - 在Python中将输入的整数字符串转换为列表,然后转换为整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39945615/