如何在给定Python代码中实现各运动项目的总得分计算?
实现各运动项目总得分计算的解决方案
看起来你已经搭好了基础的输入框架,现在只需要完善分数存储和总得分计算的逻辑就行。我帮你梳理下修改思路,直接上可运行的代码和关键说明:
先修正现有代码的小问题
你的原始代码有两个需要先调整的点:
- 直接修改全局的
STATES列表会导致后续调用函数时列表元素丢失,应该操作副本而非原列表 - 输入的分数没有被存储,自然无法计算总得分
修改后的完整代码
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
相关产品推荐
相关产品推荐

