Python中接收多个用户输入并存入列表的高效实现方法咨询
Python 批量接收多值输入并存储为数字列表的解决方案
报错原因说明
你之前写的x = list(input('Enter 10 numbers '))会直接将输入的整行字符串按单个字符拆分,例如输入1 2 3时,拆分结果为['1', ' ', '2', ' ', '3'],转换int时遇到空格字符就会抛出invalid literal for int() with base 10错误。
另外你对split方法的使用存在误区:使用split拆分后不需要逐个定义变量接收,可以直接批量转换后存入列表。
可行实现方案
1. 基础一行式实现(空格分隔输入)
默认适配用户用空格分隔多个输入的场景,代码如下:
# 写法1:map函数实现 num_list = list(map(int, input("请输入10个数字,用空格分隔:").split())) # 写法2:列表推导式实现,逻辑更直观 num_list = [int(i) for i in input("请输入10个数字,用空格分隔:").split()]
如果需要适配逗号、分号等其他分隔符,修改split的参数即可,例如逗号分隔的场景写为split(','),同时如果用户输入可能带空格,可以加strip处理:
num_list = [int(i.strip()) for i in input("请输入10个数字,用逗号分隔:").split(',')]
2. 带校验的鲁棒性实现
如果需要严格控制输入为10个合法数字,避免用户输入数量不对、存在非数字内容的问题,可以加循环校验:
while True: input_seg = input("请输入10个数字,用空格分隔:").split() # 校验输入数量 if len(input_seg) != 10: print(f"仅需输入10个数字,当前输入了{len(input_seg)}个,请重新输入") continue # 校验输入内容是否为合法数字 try: num_list = [int(i) for i in input_seg] break except ValueError: print("输入内容包含非数字,请重新输入") print("最终得到的数字列表:", num_list)
内容的提问来源于stack exchange,提问作者gis
相关产品推荐
相关产品推荐

