你的第一個問題是,input
返回string
所以你需要如果你想用它索引,將它投射到int
。您可能會收到以下錯誤。
TypeError: list indices must be integers or slices, not str
# Won't work with string
numberList[positiveNum]
positiveNum -= 1
# Need to cast to int first
positiveNum = int(input("Enter a positive number:"))
它在你的while循環將只對條件下工作的轉換,它不會在變量值更改爲int
,它仍然是一個string
# Works only once
while int(positiveNum) >= 0:
現在下一個問題是您正在使用positiveNum
作爲索引號。這將導致IndexError
如果最後輸入的數大於SIZE
更大,說100
SIZE = 5
number_lst = []
while len(number_lst) < SIZE:
# Should perform error checking if you must have positive numbers
num = int(input("Enter a positive number: "))
number_lst.append(num)
# Output backwards using while
i = len(number_lst) - 1
while i >= 0:
print(number_lst[i])
i -= 1
這裏也是循環的替代品
# Output backwards using for
for item in number_lst[::-1]:
print(item)
for item in reversed(number_lst):
print(item)
for i in range(len(number_lst) - 1, -1):
print(number_lst[i])
for i in reversed(range(len(number_lst))):
print(number_lst[i])
注意了,你正在使用positiveNum既作爲需要被訪問,並同時作爲給出的實際數量列表索引用戶。這就是說,如果用戶給你「100」,你將嘗試訪問numberList [100],而numberList可能只有一個數字,而不是慣用的Python中的 – deathyr
while循環不是正確的構造使用。即使在其他語言中,當您不知道要迭代多少項時,通常也會使用while循環。對於兩個循環,你知道有多少。作爲一種教育性的東西很好,但不認爲這是正確的做法。 –