我正在编写一个读入列表的程序,然后显示列表的长度,并显示每行显示一个数字的列表。这就是我到目前为止所做的:
from List import *
def main():
numbers = eval(input("Give me an list of integers: "))
strings = ArrayToList(numbers)
length = len(strings)
print("The length of the list: ", length)
这就是我期待的结果:
Enter a list of integers: [3, [5, [1, [6, [7, None]]]]]
The length of the list:
5
The list:
3
5
1
6
7
有人可以帮帮我吗?我得到列表的长度显示为2而不是5,这应该是它。
答案 0 :(得分:4)
如果没有看到ArrayToList
的实现,这只是猜测。
那就是说,我想你的问题是你没有输入整数列表,你输入的是一个由整数和另一个列表组成的列表......它本身就是一个包含整数和另一个列表的列表,一直往下。因此len(strings)
为2,因为len
不是递归的。
您可以尝试输入[1, 2, 3, 4, 5]
之类的列表。
或者,您可以在循环中构建列表,询问每个字符的用户输入,直到命中“输入结束”事件(您选择的)为止。这样可以让你完全避免eval
,这通常是一个好主意。
答案 1 :(得分:1)
def main():
numbers = input("Give me a list of space-separated integers: ").split()
print("length of the list:", len(numbers))
print("The list:", *numbers, sep='\n')
输出
In [14]: main()
Give me a list of space-separated integers: 3 5 1 6 7
length of the list: 5
The list:
3
5
1
6
7
答案 2 :(得分:0)
我假设您在Python3
,因为在Python2
中,您不需要eval
周围input
。
numbers = eval(input("Give me an list of integers: "))
length = len(numbers)
print("The length of the list: %d" % length)
print("The list: ")
for i in numbers:
print(i)
在这里,您必须以标准Python方式输入列表:
[1,2,3,4,5]
Python2
中的等价物只会是一行更改。
numbers = input("Give me an list of integers: ")
答案 3 :(得分:0)
在Python 2
我会这样做:
def main():
numbers = []
integers = []
numbers.append(raw_input("Give me an list of integers: "))
for integer in numbers[0]:
print integer
if integer.isdigit():
integers.append(integer)
print ("The length of the list: ", len(integers))
main()