Python单行输入三个整数报错,求修复方案及单行写法
问题修复方案
问题原因
原代码里input()每次读取一整行输入,当你在同一行输入2 5 6时,第一次input()拿到的是完整字符串'2 5 6',直接转整数会触发ValueError——带空格的字符串不是合法的十进制整数。
修复方法
1. 适配单行输入的标准写法
把整行输入按空格分割后转成整数,再分配给变量:
a, b, c = map(int, input().split()) print(min(a+b, b+c, c+a))
input().split():将输入的整行文本按空格(含多连续空格、制表符)分割成字符串列表,比如输入2 5 6会得到['2', '5', '6']map(int, ...):把列表里的每个字符串转成整数a, b, c = ...:将三个整数分别赋值给对应变量
2. 兼容单行/多行输入的灵活写法
如果要支持用户既可以一行输三个数,也可以分多行输入,可先收集所有输入的整数再处理:
nums = [] while len(nums) < 3: nums.extend(map(int, input().split())) a, b, c = nums[:3] print(min(a+b, b+c, c+a))
3. 极简单行写法(技巧性)
追求代码简洁的话,能用生成器表达式直接计算:
print(min(sum(p) for p in zip(*[iter(map(int, input().split()))]*2)))
原理:通过iter和zip把整数列表两两分组,计算每组的和后取最小值。
4. 增加输入合法性校验
要确保用户恰好输入三个整数,可添加判断逻辑:
nums = list(map(int, input().split())) if len(nums) != 3: print("请输入且仅输入三个整数") else: print(min(nums[0]+nums[1], nums[1]+nums[2], nums[0]+nums[2]))
内容的提问来源于stack exchange,提问作者MASAKADEV
相关产品推荐
相关产品推荐

