NBA球队数据程序开发:子列表归属与用户输入索引提取问题
解决NBA球队嵌套列表的用户输入查询问题
嘿,我来帮你搞定这个问题!看起来你已经把球队数据整理成嵌套列表结构了,现在核心要解决的就是「接收用户输入→定位对应球队子列表→提取指定索引元素」这三个环节对吧?下面我用Python给你分步骤讲解具体实现,还会给你优化方案哦:
第一步:明确你的数据结构
首先假设你的嵌套列表是类似这样的(每个子列表第一个元素是球队名,后面跟着对应数据):
nba_teams = [ ['Atlanta', '107.5', '105.6', '.516', '.543'], ['Boston', '110.2', '104.8', '.521', '.538'], ['Lakers', '108.7', '106.3', '.509', '.541'] ]
第二步:实现用户输入+球队子列表定位
我们可以用input()接收用户输入,然后遍历嵌套列表匹配球队名。这里建议忽略大小写,避免用户输入大小写不一致导致匹配失败:
# 接收用户输入,去除首尾空格 team_input = input("请输入要查询的NBA球队名称:").strip() # 遍历嵌套列表,定位目标球队 target_team = None for team in nba_teams: # 统一转小写进行匹配,提升用户体验 if team[0].lower() == team_input.lower(): target_team = team break
第三步:提取指定索引的元素
找到目标球队后,就可以根据需求提取对应索引的元素了。这里可以加入容错处理,避免用户输入无效的索引值:
if target_team: # 提示用户选择要查询的指标 print("可选指标:1-场均得分,2-对手场均得分,3-RPI,4-篮板率") metric_input = input("请输入要查询的指标序号:") try: # 转换为整数索引(注意子列表里数据从索引1开始) metric_index = int(metric_input) # 验证索引是否有效 if 1 <= metric_index <= 4: metric_value = target_team[metric_index] print(f"{target_team[0]}的{['场均得分','对手场均得分','RPI','篮板率'][metric_index-1]}值为:{metric_value}") else: print("⚠️ 请输入1-4之间的有效序号!") except ValueError: print("⚠️ 请输入有效的数字序号!") else: print(f"❌ 未找到名为{team_input}的球队数据,请检查输入名称!")
更高效的优化方案:改用字典存储数据
如果你的球队数量较多,用嵌套列表遍历查找效率会比较低(时间复杂度O(n)),改用字典存储会更高效(查找时间复杂度O(1)),结构如下:
nba_teams_dict = { 'Atlanta': ['107.5','105.6','.516','.543'], 'Boston': ['110.2','104.8','.521','.538'], 'Lakers': ['108.7','106.3','.509','.541'] }
对应的查询逻辑会更简洁:
team_input = input("请输入要查询的NBA球队名称:").strip() if team_input in nba_teams_dict: print("可选指标:1-场均得分,2-对手场均得分,3-RPI,4-篮板率") metric_input = input("请输入要查询的指标序号:") try: # 字典里的子列表从索引0开始,所以要减1 metric_index = int(metric_input) - 1 if 0 <= metric_index <= 3: metric_value = nba_teams_dict[team_input][metric_index] print(f"{team_input}的{['场均得分','对手场均得分','RPI','篮板率'][metric_index]}值为:{metric_value}") else: print("⚠️ 请输入1-4之间的有效序号!") except ValueError: print("⚠️ 请输入有效的数字序号!") else: print(f"❌ 未找到名为{team_input}的球队数据,请检查输入名称!")
这样不管是用户交互还是数据查找,都能更顺畅地完成需求啦~
内容的提问来源于stack exchange,提问作者Jack Hudgins
相关产品推荐
相关产品推荐

