我有以下二維串列
listItem = [["Apple", "TP123", "67", "77"], [
"Orange", "TP223", "55", "66"], ["Banana", "TP777", "98", "88"], ["Cherry", "TP123", "98", "88"]]
我想將用戶輸入與 listItem 中每個串列中的第二個元素進行比較,如果值匹配,則列印出整個串列。如果值不匹配,我會要求用戶一次又一次地輸入值。
這是我的代碼:
def repeat():
tp = input("Please enter your tp: ")
for i in range(len(listItem)):
if tp == listItem[i][1]:
print(listItem[i])
break
else:
repeat()
我在這里面臨一些問題。在listItem中,有兩個“TP123”。但是,如果用戶輸入“TP123”,它只會列印出一個結果而不是兩個。但是如果我沒有使用中斷,代碼將繼續要求用戶輸入另一個值,即使他們輸入的值匹配。
我是python初學者,誰能幫我解決這個問題,非常感謝。
uj5u.com熱心網友回復:
在它找到下一個專案之前,您就已經中斷了。也無需使用range回圈遍歷串列。
def repeat():
tp = input("Please enter your tp: ")
print(*(i for i in listItem if i[1] == tp), sep='\n')
或者在完整for回圈中:
def repeat():
tp = input("Please enter your tp: ")
for i in listItem:
if tp == i[1]:
print(i)
uj5u.com熱心網友回復:
使用額外的變數并將其設定為True是否匹配,如果匹配,則使用if陳述句repeat再次觸發該函式False:
沒有更好的range:
def repeat():
tp = input("Please enter your tp: ")
match = False
for i in listItem:
if tp == i[1]:
print(i)
match = True
if not match:
repeat()
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/327229.html
