如何修改Python代码实现浮点数校验并使用while循环?
问题原因
你代码的核心错误是直接把输入的字符串和float类型做比较:input()返回的永远是字符串,而float是Python的类型对象,两者不可能相等,所以循环会一直触发错误提示。
修正方案
正确的浮点数校验应该用异常捕获:尝试把输入字符串转换成浮点数,如果转换失败(比如输入非数字内容),就捕获ValueError异常,提示错误并重新输入,直到转换成功为止。
修正后的代码:
def get_float(): while True: try: # 尝试将输入转换为浮点数 number = float(input('Input a decimal number ')) return number except ValueError: # 转换失败时触发,提示错误并重新循环 print('bad input ') get_float()
代码说明
while True创建无限循环,直到成功返回浮点数才退出try-except块处理转换异常:- 输入能转成浮点数时,执行
return number跳出循环和函数 - 输入无法转成浮点数(比如字母、符号)时,触发
ValueError,执行提示后回到循环开头重新输入
- 输入能转成浮点数时,执行
内容的提问来源于stack exchange,提问作者Z-0
相关产品推荐
相关产品推荐

