无法统计字典中指定状态值数量,代码输出始终为0求排查
代码问题排查与修复
原代码的核心问题:
- 缩进混乱:Python是缩进敏感语言,原代码里
for循环、if语句、末尾的print(y)以及函数调用的缩进全部不符合规范,会直接触发语法错误。 - 判断逻辑错误:
if status.values() == "online"这行逻辑完全错误——status.values()返回的是字典所有值的集合视图,不可能等于单个字符串"online",应该用循环里的变量i来做判断。 - 冗余输出:循环内部的
print(y)会在每次计数时都打印数值,属于不必要的冗余代码。
修正后的代码:
statuses = { "Alice": "online", "Bob": "online", "Eve": "offline" } def online_count(status): y = 0 for i in status.values(): if i == "online": y += 1 print(y) online_count(statuses)
额外优化(可选):
还可以用Python内置方法简化代码,一行搞定计数:
statuses = { "Alice": "online", "Bob": "online", "Eve": "offline" } def online_count(status): return list(status.values()).count("online") print(online_count(statuses))
内容的提问来源于stack exchange,提问作者DannyMoham1
相关产品推荐
相关产品推荐

