2017-04-25 87 views
1

我想讓用戶輸入交付信息並使用for循環。我不斷收到一個IndexError:列表分配索引超出範圍問題與「for」和列表

我希望它打印並讓用戶輸入每個項目然後詢問信息是否正確,如果不是,則返回它們。但是,在嘗試多種方法後,我無法得到正確的陳述。謝謝。

address = [] 
address_info = ('Name:', 'Address:', 'City:', 'State', 'Zip Code') 

print('***DELIVERY METHOD***') 
print('Please enter the info below from customer...') 
for x in address_info: 
    address[x] = input(address_info[x]) 
    x += 1 
+0

您不能分配給不存在的索引。你需要* append()'*來添加更多的元素,或者至少使用'len(address_info)'元素來啓動你的輸入列表。 –

+0

將'address = []'改爲'地址= {}'並在for循環改變'input(address_info [x])'改爲'input(x)'並移除行'x + = 1' – Szabolcs

+2

刪除'x + = 1'。 –

回答

-1

嘗試使用append-logic而不是使用索引。

address = [] 
address_info = ('Name:', 'Address:', 'City:', 'State', 'Zip Code') 

print('***DELIVERY METHOD***') 
print('Please enter the info below from customer...') 

for info in address_info:  # these are the values not indicies 
    user_input = input(info) 
    address.append(user_input) 

原始代碼中存在問題。首先,for循環將遍歷address_info而不是指示符的值。其次,結果列表需要通過追加來增長;直到列表中已經有可替換位置的某個值,才能進行索引賦值。

+0

謝謝!這工作得很好...我想我是再次超過代碼... –

+0

@MatthewPhaneuf很高興有幫助。我只是給了你一個贊成票,因爲我認爲這是一個很好的問題,有一個有趣的答案。 –