python - 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 。我已经进入调试器以确保这是问题所在,确实如此。我该怎么做才能解决这个问题?
解决方案
推荐阅读
- selenium - Serenity 测试错误元素在无头模式下不可用
- java - Spring AOP:将参数传递给目标方法:params null。为什么?
- sql - 用于oracle的基于Web的查询工具(类似于oracle-sqldeveloper)可以用作Web应用程序
- c++ - 自定义问题中奇怪的直接照明
- tensorflow - “NoneType”对象不可下标 - Keras 自定义回调类出错
- json - Spring Boot 无法解析从 Angular 发送的 JSON
- docker - Docker Tomcat Image:部署 WAR 文件时使用 Umlaute 的编码问题
- bash - 脚本用 SH 发送命令
- sql - 如何从一个列中获取不同的数据
- node.js - 如何在 NodeJS 中提取密钥大小