亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我的列表比較器不想按照我想要的方式運行

我的列表比較器不想按照我想要的方式運行

慕田峪9158850 2023-10-06 18:31:14
我是 python 的初學者,我有一個任務,winner_round 函數比較兩個列表,并計算 Adam 的團隊比對手得分更多的游戲中有多少輪。如果兩個列表不匹配,則返回 -1 這是我的代碼:def winner_round(list1,list2):    list1 = [30, 50, 10, 80, 100, 40]    list2 = [60, 20, 10, 20, 30, 20]    point = 0    for i in winner_round(list1,list2):        if list1>list2:            return -1            print(-1)    for pointA in list1:        for pointE in list2:            if pointA > pointE:                point+=1        break    return(point)    print(point)對不起我的英語不好
查看完整描述

4 回答

?
呼如林

TA貢獻1798條經驗 獲得超3個贊

返回的唯一原因-1是列表的大小是否不同;len在進行迭代之前,您可以使用 O(1) 操作進行檢查。


之后,只需對列表項進行逐點比較即可。假設list1是亞當和list2他的對手,


def winner_round(list1, list2):

    if len(list1) != len(list2):

        return -1


    return sum(x > y for x, y in zip(list1, list2))

zip(list1, list2)生成對(30, 60),(50, 20)等。因為True == 1和False == 0(bool是 的子類int),您可以簡單地對結果求和,其中的值list1是一對中的較大值。


(您還可以使用map,因為作為第一個參數的 2 參數函數允許您將兩個列表作為第二個和第三個參數傳遞,從而無需對實例進行更明確的迭代。提供您需要的zip函數operator.gt:


return sum(map(operator.lt, list1, list2))

哪一個“更好”是個人喜好的問題。)


查看完整回答
反對 回復 2023-10-06
?
蠱毒傳說

TA貢獻1895條經驗 獲得超3個贊

逐項比較,如果大于則加1point


list1 = [30, 50, 10, 80, 100, 40]

list2 = [60, 20, 10, 20, 30, 20]


def winner_round(list1,list2):

  point = 0


  if len(list1)!=len(list2):

    return -1


  for i in range(len(list1)):

      if list1[i] > list2[i]:

          point+=1

  return point


查看完整回答
反對 回復 2023-10-06
?
慕尼黑8549860

TA貢獻1818條經驗 獲得超11個贊

積分總和:


list1 = [30, 50, 10, 80, 100, 40]

list2 = [60, 20, 10, 20, 30, 20]


def winner_round(list1,list2):

    if sum(list1) > sum(list2):

        return 1

    else:

        return 2

比較每輪:


list1 = [30, 50, 10, 80, 100, 40]

list2 = [60, 20, 10, 20, 30, 20]


def winner_round(list1,list2):

    if len(list1) != len(list2): return -1

    score1, score2 = 0

    for i in range(list1):

        if list1[i] > list2[i]:

            score1 +=1

        else:

            score2 +=1

    if score1 > score2:

        return 1

    else:

        return 2


查看完整回答
反對 回復 2023-10-06
?
Helenr

TA貢獻1780條經驗 獲得超4個贊

這將是我對你的問題的解決方案:


    def get_points(teamA,teamB):

    if len(teamA)!=len(teamB):

        print("Both lists have to be of same length.")

        return -1

    points=0

    for i in range(len(teamA)):

        if teamA[i]>teamB[i]:

            points+=1


    print("points:",points)

    return points


我首先檢查兩個列表是否具有相同的長度,然后循環遍歷兩個列表,如果一個列表大于另一個列表,則增加一個計數器。(順便說一句,您嘗試在 return 語句之后打印一些內容,該語句存在該函數)希望有幫助,拉爾斯


查看完整回答
反對 回復 2023-10-06
  • 4 回答
  • 0 關注
  • 229 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號