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
相关产品推荐
相关产品推荐

