[英]Comparing list values (numbers, order matters) in Python
我嘗試在所有地方尋找答案,我敢肯定這確實很簡單,但是以某種方式我無法使它起作用。
我有兩個列表,它們具有完全相同的值數量,並且我想知道其中有多少個完全匹配值和位置。 這是我一直在使用的代碼:
ListA = [1, 2, 3, 4, 5]
solved = 0
While solved == 0:
rr = 0
i = 0
userinput = input("Enter a 5 digit number):")
ListB = []
for u in userinput:
ListB.append(u)
While i < 5:
if ListA[i] == ListB[i]:
rr = rr + 1
print(rr)
solved = 1
例如,我要查找的輸出是,如果輸入為12763,2,但它似乎從未將if評估為true,因此它永遠不會將rr
1。 我嘗試了for循環和該設置的變體,但看不到錯誤的地方。
非常感謝您的寶貴時間!
ListA
包含整數,而ListB
包含(單個字符)字符串。 嘗試改用int(ListB[i])
。
而且,內部的while
循環是無限的,因為i
從不改變。
在我看來,您似乎太復雜了。 幾個列表理解應該可以解決這個問題:
ListB = [int(x) for x in userinput]
rr = sum([ListA[i] == ListB[i] for i in range(len(ListA))])
您有幾個問題:
While
應while
int
因為您想比較整數。 i
變量永遠不會增加,因此您處於無限循環中。 嘗試這個:
ListA = [1, 2, 3, 4, 5]
solved = 0
while solved == 0:
rr = 0
i = 0
userinput = input("Enter a 5 digit number):")
ListB = []
for u in userinput:
ListB.append(int(u))
while i < 5:
if ListA[i] == ListB[i]:
rr = rr + 1
i += 1
print(rr)
solved = 1
input()
函數返回一個字符串。 在比較它們之前,您需要將單個數字隱藏為int
。 您還可以使用zip()
比較兩個列表中的相應項目:
>>> listA = [1, 2, 3, 4, 5]
>>> userinput = input("Enter a 5 digit number: ")
Enter a 5 digit number: 12567
>>> listB = [int(x) for x in userinput]
>>> sum(x == y for x, y in zip(listA, listB))
2
我認為解決方案可能是這樣的:
首先, 雖然沒有,但您也永遠不會將我增加到第二,而最后如何將副本復制到列表輸入中? 您使用空間還是如何? 你怎么知道你有5個號碼? 我猜他們被空間划分了嗎?
ListA = [1, 2, 3, 4, 5]
solved = 0
while solved == 0:
rr = 0
i = 0
userinput = input("Enter a 5 digit number: ")
ListB = [int(x) for x in userinput.split(' ') if x.isdigit()]
while i < 5:
if ListA[i] == ListB[i]:
rr += 1
i += 1
print(rr)
solved = 1
如果輸入為1 2 3 4 5
,則輸出5
更新: 如果輸入的是5位數字,您沒有划分空格,請尋找其他用戶解決方案
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.