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

技术问询:如何根据用户需求替换关联列表中的对应值

完善高尔夫球员成绩替换逻辑的Python实现

我来帮你梳理并补全这段代码的核心逻辑——目前你的框架已经搭好了,但还有几处关键细节需要完善,才能真正实现“替换关联列表对应值”的需求,同时让交互更友好。

原代码的待完善点

  • 用户选择不替换时,缺少对应的反馈提示
  • 确认替换后,仅打印了提示但没有实际更新数据(原列表name/result和字典dct都没变化)
  • 未处理“输入新球员信息”的场景(循环输入次数内的新姓名应该被添加)

完善后的完整代码

count = 0
x = 'yes'
name = ['thilini', 'umanda', 'dilki']
result = [20, 40, 22]
# 用更简洁的字典推导式创建姓名-成绩映射
dct = {player: score for player, score in zip(name, result)}

golf_no = int(input('请输入组内高尔夫球员人数?'))

while golf_no > count:
    count += 1
    print('\n请输入姓名和成绩')
    name_new = input('请输入姓名:')
    result_new = int(input('请输入成绩:'))
    
    if name_new in name:
        print('该姓名已存在')
        answer = input('确定要替换吗?(yes/no) ')
        # 统一转为小写,兼容不同输入格式(Yes/YES等)
        if answer.lower() == x:
            # 找到对应姓名的索引,同步更新列表和字典
            player_idx = name.index(name_new)
            result[player_idx] = result_new
            dct[name_new] = result_new
            print(f'✅ {name_new}的成绩已成功修改为{result_new}')
        else:
            print('❌ 已取消修改,保留原有成绩')
    else:
        # 处理新球员:添加到列表和字典中
        name.append(name_new)
        result.append(result_new)
        dct[name_new] = result_new
        print(f'➕ 已添加新球员{name_new},成绩为{result_new}')

# 最后打印更新后的所有数据,方便验证
print('\n📋 更新后的球员名单及成绩:')
for player, score in dct.items():
    print(f'{player}: {score}')

关键改进说明

  1. 数据一致性保障:确认替换时,同时更新result列表和dct字典,避免两处数据不一致
  2. 交互友好性:
    • 补充了取消修改时的提示文本
    • 对用户输入的确认指令做了大小写兼容(比如输入Yes/YES也能识别为确认)
    • 添加了emoji提示,让反馈更直观
  3. 新球员处理:如果输入的姓名不在原列表中,自动将其添加到名单和成绩列表里,符合循环输入球员人数的逻辑
  4. 代码可读性优化:用字典推导式替代原有的dict((a,b)...)写法,变量名更语义化(比如player_idx)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:21:30