Python实现可兼容整数和浮点数输入的两数相乘功能
问题原因
原代码使用
int()强制转换输入字符串,仅支持整数格式输入,遇到带小数点的浮点输入就会抛出ValueError: invalid literal for int() with base 10错误;如果直接替换为float(),整数输入计算后会输出带.0的浮点结果,不符合常规输出预期。
解决方案
修正后可同时兼容整数、浮点输入的代码如下:
def multiplication(): a = input() b, c = a.split() # 统一转float计算,兼容整数、浮点格式的输入 d = float(b) * float(c) # 自动适配输出格式,整数结果不会带.0 print(int(d) if d % 1 == 0 else d)
代码说明
- 移除了原代码中无意义的
a.split()冗余行(该行仅做拆分但没有赋值给变量,不会产生实际作用) - 用
float()转换输入值:float()可以同时识别整数格式(如"4")和浮点格式(如"4.5")的字符串,不会触发格式错误 - 输出前做格式适配:如果计算结果取模1等于0,说明是整数,转成int输出避免带
.0,否则直接输出浮点结果 - 测试验证:输入
4 5输出20,输入4.5 5输出22.5,两种场景都符合预期
可选优化
如果需要处理输入格式错误的场景(比如输入超过两个值、输入非数字内容),可以增加异常捕获逻辑:
def multiplication(): try: a = input() b, c = a.split() d = float(b) * float(c) print(int(d) if d % 1 == 0 else d) except ValueError: print("输入格式错误,请输入两个用空格分隔的数字")
内容的提问来源于stack exchange,提问作者user16858339
相关产品推荐
相关产品推荐

