You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python 3中如何输出数组中所有最高分对应的冰淇淋口味?

解决多最高分冰淇淋口味的输出问题

别急,这个问题很好解决!我们只需要调整一下找最高分口味的逻辑,从只取第一个匹配项改成收集所有匹配项就行。我给你一步步说明:

先看原始程序的问题

假设你原来的代码大概是这样的:

flavors = ["Vanilla", "Chocolate", "Mint Choc Chip", "Strawberry"]
scores = []

# 获取用户打分
for flavor in flavors:
    score = int(input(f"请给{flavor}打分(1-10):"))
    scores.append(score)

# 仅获取第一个最高分的口味
max_score = max(scores)
favorite_index = scores.index(max_score)
print(f"你的最爱冰淇淋是:{flavors[favorite_index]}")

这里的问题在于scores.index(max_score)只会返回第一个出现最高分的索引,所以当多个口味都是满分时,后面的就被忽略了。

修改后的完整代码

我们可以改成收集所有分数等于最高分的口味,再统一输出:

flavors = ["Vanilla", "Chocolate", "Mint Choc Chip", "Strawberry"]
scores = []

# 带输入验证的打分收集(可选,但让程序更健壮)
for flavor in flavors:
    while True:
        try:
            score = int(input(f"请给{flavor}打分(1-10):"))
            if 1 <= score <= 10:
                scores.append(score)
                break
            else:
                print("⚠️ 分数必须在1到10之间,请重新输入!")
        except ValueError:
            print("⚠️ 请输入有效的整数分数!")

# 找到最高分
max_score = max(scores)

# 收集所有获得最高分的口味
favorite_flavors = [
    flavor 
    for flavor, score in zip(flavors, scores) 
    if score == max_score
]

# 友好输出结果
print(f"\n最高分是:{max_score}分")
if len(favorite_flavors) == 1:
    print(f"你的最爱冰淇淋是:*{favorite_flavors[0]}*")
else:
    print("你的最爱冰淇淋有:")
    for idx, flavor in enumerate(favorite_flavors, 1):
        print(f"{idx}. *{flavor}*")

关键逻辑说明

  • zip(flavors, scores):把口味列表和分数列表一一配对,这样我们可以同时遍历每个口味和它对应的分数。
  • 列表推导式:通过条件score == max_score筛选出所有符合最高分条件的口味,把它们存入favorite_flavors列表。
  • 分情况输出:根据收集到的最爱口味数量,分别处理单个和多个的输出场景,让结果更清晰。

这样修改后,不管有多少个口味拿到最高分,都会被全部输出啦!

内容的提问来源于stack exchange,提问作者Python

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:32:42