[英]I am having trouble with a Python list display using “in range”
我的第一個問題是,如果我沒有正確地做某事,請告訴我,以便我可以糾正它和/或下次正確地做。
我試圖允許用戶輸入十個數字,然后按照他們給出的相反順序將它們吐出來。 但是,我不能正確地獲得范圍,因為它不僅要求我提供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,然后我的反向輸入。
任何幫助將非常感激。
range
始終省略最后一個值,默認情況下從0開始(請記住,列表在Python中為0索引,因此10個元素的列表具有索引0到9)。
>>> list(range(10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
另外,我建議只使用reversed
,而不是使用range(10,1,-1)
。
for i in reversed(range(10)): # iterates from 9 down to 0
或者,由於您只是打印出列表中的項目,只需直接遍歷反向列表項:
for item in reversed(myNumbers):
print(item)
它只允許你輸入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中的循環變量不必是數字,您可以迭代返回一系列對象的任何東西。
有一種創建像這樣稱為列表理解的列表的簡便方法。 然后你的程序只有3行
my_numbers = [input("Enter a number: ") for i in range(10)]
for item in reversed(my_numbers):
print(item)
嘗試使用范圍(0,10)而不是范圍(1,10)
范圍(1,10)類似於for (i=1;i<10;i++)
,它只運行9次(不運行i = 10),數組索引從0開始而不是1
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) )
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.