Python中如何实现可同时为浮点数或字符串类型的变量?
现有代码核心问题
- 浮点数转换结果未保存,后续所有比较均为字符串ASCII码比较,并非数值比较,例如
"10"比较结果会小于"2" - 浮点数转换逻辑早于
done输入判断,输入done时会先触发异常走错误分支 - 异常分支仅定义了字符串字面量,未实际打印错误提示
- 首次给
largest赋值时未判空,直接拿数值与None比较会抛出类型错误 - 非法输入内容未被跳过,会参与后续大小值计算,导致结果异常
修正后代码
largest = None smallest = None while True: num_input = input("Enter a number: ") # 优先判断退出条件 if num_input == "done": break # 尝试转换为浮点数 try: num = float(num_input) except: print("invalid input") # 非法输入跳过后续逻辑,重新发起输入 continue # 计算最大值 if largest is None or num > largest: largest = num # 计算最小值 if smallest is None or num < smallest: smallest = num print(num) print("Maximum is", largest) print("Minimum is", smallest)
修正后的代码完全匹配需求:输入同时支持数字(自动转换为浮点数执行数值比较)和done字符串(命中直接退出程序),非法输入会触发提示且不影响正常计算逻辑。
内容的提问来源于stack exchange,提问作者Sara
相关产品推荐
相关产品推荐

