首页 > 解决方案 > Python If 语句评估为真,但不执行?

问题描述

ranked = [100, 100, 50, 40, 40, 20, 10]
player = [5, 25, 50, 120]



def climbingLeaderboard(ranked, player):
    ranks = []
    for score in player:
        iteration = 0
        temp = 0
        ranks.append(0)
        for rank in ranked:

            if rank == temp:
                continue

            elif iteration == 0 & score >= rank:
                ranks[player.index(score)] += 1

            elif iteration == 0 & score < rank:
                ranks[player.index(score)] += 2

            elif score < rank:
                ranks[player.index(score)] += 1

            elif score == rank:
                break

            iteration += 1
            temp = rank

    print(ranks)


climbingLeaderboard(ranked, player)

这段代码应该给出 [6,4,2,1] 的相应等级,但会产生 [6,4,2,2]。当我运行调试器时,问题是当 120 被评估为玩家分数之一时,

elif iteration == 0 & score < rank: ranks[player.index(score)] += 2

elif iteration == 0 & score >= rank: ranks[player.index(score)] += 1

Python 认为 120 小于 100,它认为 score 小于 rank,并评估第一个语句而不是第二个语句,即 True 。我已经进入调试器以确保这是问题所在,确实如此。我该怎么做才能解决这个问题?

标签: python

解决方案


推荐阅读