簡體   English   中英

我在使用“范圍內”的Python列表顯示時遇到問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM