所以我正在尝试用Python创建一个程序:
A)提示用户输入一定数量的数字 B)然后将这些数字存储在列表中并以相反的顺序打印它们。
这是我的代码:
for numbers in range (1,4):
print("Please enter a number.")
numbers = input()
numbersList = list(reversed(str(numbers)))
print(numbersList)
当我运行它时,它只打印<list_reverseiterator object at 0x105447da0>
。即使我在代码中没有添加“反向”的情况下尝试它,而不是像我想要的那样打印以相反顺序输入的所有数字的列表,它会以列表格式输出最新的数字。因此,如果我为一个数字输入'4',它只会打印:['4']。不知道为什么会这样做。任何帮助,将不胜感激。感谢。
答案 0 :(得分:1)
尝试这样的事情:
numbersList = []
for numbers in range (1,4):
print("Please enter a number.")
numbersList.append(input())
numbersList.reverse()
print(numbersList)
首先,您必须定义numbersList
。然后,在循环中将值附加到in中,最后将其打印出来。
您的问题是,每次运行for
循环时都定义了列表(在上面的示例中为3次),因此它只有最后一个值。 (另外,你也想在每次迭代时将它打印出来)。
此外,还有“兴趣点” - 您可以使用input("User prompt here: ")
来避免使用print()
之前的行。
答案 1 :(得分:1)
如果我理解正确,这就是您正在寻找的:
numbers = []
for i in range (1,4):
print("Please enter a number.")
numbers.append(input())
numbersList = str(numbers)
numbersList.reverse()
print (numbersList)
如评论所述,i
是由range
命令生成的迭代器。从用户收集3个号码的一种方法是将它们附加到列表中,在这种情况下为numbers
。
之后,您可以在循环外处理列表。一旦完全创建列表再次指向循环外,它似乎更可行。我使用Python 2.7,因此解决方案与初始解决方案略有不同,但结果与预期一致 - 首先它使用map
将所有数字转换为字符串,然后使用{{1}将列表转换为适当的列表}。
答案 2 :(得分:1)
l=[]
for _ in range(1,5):
l.append(int(input("enter the number: ")))
print(l[::-1])