2017-02-21 63 views
0

我需要一個代碼,要求輸入5個pos數字,然後向後輸出這些數字。我想用一個while循環。這是我迄今爲止提出的,但第二個while循環不起作用。輸出向後輸入數字的Python列表

positiveNum = 0 
SIZE = 5 
numberList= [] 
ARRAY_LIMIT = SIZE -1 

while len(numberList) < SIZE : 
    positiveNum = input("Enter a positive number:") 
    numberList.append(positiveNum) 
while int(positiveNum) >= 0: 
    print(numberList[positiveNum]) 
    positiveNum -= 1 
+0

注意了,你正在使用positiveNum既作爲需要被訪問,並同時作爲給出的實際數量列表索引用戶。這就是說,如果用戶給你「100」,你將嘗試訪問numberList [100],而numberList可能只有一個數字,而不是慣用的Python中的 – deathyr

+0

while循環不是正確的構造使用。即使在其他語言中,當您不知道要迭代多少項時,通常也會使用while循環。對於兩個循環,你知道有多少。作爲一種教育性的東西很好,但不認爲這是正確的做法。 –

回答

0

你應該迭代numberList的長度而不是正數。 基本上修改第二個while循環到這個。

i = SIZE; 
while i>0: 
     print(numberList[i-1]) 
     i=i-1 
0

在第二循環中,您使用的是相同的positiveNum變量沒有它正在重置到數組的大小,請嘗試:

SIZE = 5 
numberList= [] 
ARRAY_LIMIT = SIZE -1 

while len(numberList) < SIZE : 
    positiveNum = input("Enter a positive number:") 
    numberList.append(positiveNum) 
index = SIZE - 1 
while index >= 0: 
    print(numberList[index]) 
    index -= 1 
0

你的第一個問題是,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]) 
0

使用while循環一對夫婦:

size = 5 
number_list = [] 

while len(number_list) < size: 
    number_list.append(int(input("Enter a positive number: "))) 
i = 1 
while i <= size: 
    print(number_list[size - i]) 
    i += 1 

對第二個循環使用for循環:

size = 5 
number_list = [] 

while len(number_list) < size: 
    number_list.append(int(input("Enter a positive number: "))) 
for i in number_list[::-1]: 
    print(i) 

使用兩個for循環,這將是更明智的在這種情況下:

size = 5 
number_list = [] 

for _ in range(size): 
    number_list.append(int(input("Enter a positive number: "))) 
for i in number_list[::-1]: 
    print(i)