使用列表推导式计算奇数平方时遇ValueError问题求助
问题分析与解决方案
错误原因
你遇到的ValueError是因为输入多个数字时,原代码直接把带空格的整段字符串传给int()转换,比如输入"1 3 5",int("1 3 5")无法识别包含空格的字符串为有效整数,所以触发报错。
修正后的代码
# 将输入字符串分割为单个数字字符串,再转成整数列表 ka = [int(num) for num in input("g: ").split()] # 用列表推导式筛选奇数并计算平方 xo = [v * v for v in ka if v % 2 != 0] print(xo)
关键细节说明
input("g: ").split():自动按空格分割输入的字符串,比如输入"2 4 5 7"会得到["2","4","5","7"]- 第一个列表推导式把每个分割后的字符串转成整数,得到纯整数列表
- 第二个列表推导式里无需重复用
int()转换,因为v已经是整数类型,v*v本身就是整数,直接用v%2 !=0判断奇数即可
测试示例
输入:1 2 3 4 5
输出:[1, 9, 25]
内容的提问来源于stack exchange,提问作者Ale
相关产品推荐
相关产品推荐

