簡體   English   中英

在Python中比較列表值(數字,順序很重要)

[英]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))])

您有幾個問題:

  1. Whilewhile
  2. 您從用戶那里收到的輸入是一個字符串,因此在進行迭代時應將其轉換為int因為您想比較整數。
  3. 您的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM