我的第一个问题是,如果我没有正确地做某事,请告诉我,以便我可以纠正它和/或下次正确地做。
我试图允许用户输入十个数字,然后按照他们给出的相反顺序将它们吐出来。但是,我无法正确地获得范围,因为它不仅要求我提供9个数字,要么不为我列表中的最后一个变量指定任何内容。
我正在使用Python 3.x。
这是我的代码:
#Creating my list
myNumbers=[1,2,3,4,5,6,7,8,9,10,11]
#Creating a for loop for inputs
for A in range (1,10):
myNumbers[A]=input("Enter a number: ")
#Creating a for loop for outputs
for B in range (10,1,-1):
print(myNumbers[B])
它只允许我输入9个数字,然后我的输出是数字11,然后我的反向输入。
非常感谢任何帮助。
答案 0 :(得分:3)
range
总是省略最后一个值,默认情况下从0开始(请记住,列表在Python中为0索引,因此10个元素的列表的索引为0到9)。
>>> list(range(10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
此外,我建议您只使用range(10,1,-1)
:
reversed
for i in reversed(range(10)): # iterates from 9 down to 0
或者,由于您只是打印出列表中的项目,只需直接遍历反向列表项目:
for item in reversed(myNumbers):
print(item)
答案 1 :(得分:1)
它只允许您输入9个数字的原因是,列表中的第一个元素的索引为0
,因此您应该分配给A[0]...A[9]
如果您从一个空列表开始,您可以根据需要append
多次,因此您无需事先知道大小。
my_numbers = []
for i in range(10):
my_numbers.append(input("Enter a number: "))
for item in reversed(my_numbers):
print(item)
Python中的循环变量不一定是数字,你可以迭代任何返回一系列对象的东西。
创建一个名为list rerehension的列表有一种简便方法。然后你的程序只有3行
my_numbers = [input("Enter a number: ") for i in range(10)]
for item in reversed(my_numbers):
print(item)
答案 2 :(得分:0)
尝试使用范围(0,10)而不是范围(1,10)
范围(1,10)类似于for (i=1;i<10;i++)
,它只运行9次(对于i = 10不运行)
此外,数组索引从0开始而不是1
答案 3 :(得分:0)
print( '\n'.join(reversed([input("Enter a number: ") for i in range(10)])) )
或
li = []
for i in xrange(4):
li.insert(0,input("Enter a number: ")
print( '\n'.join(li) )
此解决方案不会创建新的(反向)列表对象。我们直接构建所需的列表 它可以缩短为
li = []
any(li.insert(0,input("Enter a number: ")) for i in xrange(4))
print( '\n'.join(li) )