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

如何通过输入枚举编号获取Python列表对应元素值

问题背景

需求为通过选择界面展示的枚举编号(1、2或3)获取列表内的对应值,要求choosen变量最终存储的是列表中的对应元素,而非用户输入的字符内容。原有实现代码无法达到预期效果,需要修正。
原有错误代码如下:

List = ['apple', 'berry', 'cherry']

List_Display = '\n'.join(['[{}]{}'.format(n,i) for n, i in (enumerate(List,start=1))])

print(List_Display)

choosen = []

choose = input('Enter choices: ')

if choose in List_Display:

    choosen.append(choose)

    print('choosen:',choosen)

else:

    print('No item choosed') 
原有代码缺陷
  • 判断逻辑错误:if choose in List_Display仅检查用户输入的字符串是否存在于拼接后的展示文本中,没有实现编号到列表元素的映射转换
  • 无有效输入校验:用户输入非数字、超出编号范围的内容时,原有逻辑会出现误判,甚至抛出运行时错误
  • 存储内容不符合要求:最终追加到choosen里的是用户输入的原始字符串(比如输入1时存储的是字符"1",而非对应的列表元素"apple")
正确实现方案
# 避免使用List作为变量名,防止覆盖Python内置list类型引发异常
fruit_list = ['apple', 'berry', 'cherry']
# 生成带编号的选项展示文本
list_display = '\n'.join([f'[{n}]{item}' for n, item in enumerate(fruit_list, start=1)])
print(list_display)

choosen = []
# 获取输入时自动过滤首尾多余空格
choose = input('Enter choices: ').strip()

# 分层做输入合法性校验
if choose.isdigit():
    choose_num = int(choose)
    # 编号从1开始计数,对应列表索引需要减1
    if 1 <= choose_num <= len(fruit_list):
        selected_item = fruit_list[choose_num - 1]
        choosen.append(selected_item)
        print('choosen:', choosen)
    else:
        print('No item choosed')
else:
    print('No item choosed')
实现逻辑说明
  • 输入获取阶段增加strip()处理,自动过滤用户误输入的首尾空格,提升交互容错性
  • 先用isdigit()判断输入是否为纯数字,避免字符串转整数时抛出类型错误
  • 转成整数后判断编号是否落在1到列表长度的合法区间内,后续如果增减列表选项,不需要修改判断逻辑即可自动适配
  • 合法编号通过编号-1取到对应的列表原始元素存入choosen,完全满足存储列表元素而非输入字符的要求
  • 所有非法输入(非数字、超出范围的数字)都会触发无有效选择的提示,逻辑闭环无遗漏

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 20:36:10