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

如何在给定Python代码中实现各运动项目的总得分计算?

实现各运动项目总得分计算的解决方案

看起来你已经搭好了基础的输入框架,现在只需要完善分数存储和总得分计算的逻辑就行。我帮你梳理下修改思路,直接上可运行的代码和关键说明:

先修正现有代码的小问题

你的原始代码有两个需要先调整的点:

  1. 直接修改全局的STATES列表会导致后续调用函数时列表元素丢失,应该操作副本而非原列表
  2. 输入的分数没有被存储,自然无法计算总得分

修改后的完整代码

STATES = ["California", "New Mexico", "Ohio", "Maryland"]
SPORTS = ["Football", "Baseball", "Basketball"]

def results(any_state):
    # 创建剩余州的副本,避免修改原全局列表
    remaining_states = STATES.copy()
    target_state = any_state.title()
    
    # 处理目标州不在列表中的异常情况
    if target_state not in remaining_states:
        print(f"提示:州 {target_state} 不在预设列表中,请重新输入")
        return
    
    remaining_states.remove(target_state)
    
    # 初始化字典,用于存储每个运动的总得分
    sport_total = {sport: 0 for sport in SPORTS}
    # 可选:存储每个州的详细分数(方便后续查看或二次分析)
    state_detail_scores = {}
    
    for state in remaining_states:
        state_detail_scores[state] = {}
        for sport in SPORTS:
            # 循环确保用户输入有效的整数分数,避免程序崩溃
            while True:
                try:
                    # 注意:Python3 用 input(),raw_input() 是 Python2 的语法
                    score = int(input(f"What do you score {sport} in {state}? "))
                    break
                except ValueError:
                    print("请输入有效的整数分数哦!")
            
            # 记录当前州当前运动的具体分数
            state_detail_scores[state][sport] = score
            # 累加对应运动的总得分
            sport_total[sport] += score
    
    # 输出各运动的总得分结果
    print("\n=== 各运动项目总得分 ===")
    for sport, total in sport_total.items():
        print(f"{sport}: {total}")
    
    # 可选:返回详细分数和总得分,方便后续业务使用
    return state_detail_scores, sport_total

核心逻辑说明

  • 保护全局列表:用STATES.copy()创建副本,这样原列表不会被修改,多次调用函数也不会出现元素缺失的问题
  • 高效累加总得分:用字典sport_total对应每个运动的累计分数,每输入一个分数就直接加到对应运动的总得分里,无需后续再遍历汇总
  • 输入合法性校验:通过while循环+try-except捕获非整数输入,确保程序稳定性
  • 可选的详细记录:state_detail_scores字典可以保存每个州每个运动的具体分数,如果你需要后续分析或展示细节,这个结构会很实用

使用示例

假设你已经通过其他函数获取了用户输入的州(比如user_state = input("请输入一个州:")),直接调用函数即可:

user_state = input("请输入一个州:")
detail_scores, total_scores = results(user_state)

运行后会引导你输入剩余每个州每个运动的分数,最后自动输出各运动的总得分。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 02:23:30