Python实现用户输入合法浮点数的问题及解决方法
解决Python中浮点数输入校验的问题
刚好碰到过类似的问题,你遇到的核心问题在于isnumeric()方法的局限性——它只能识别纯数字组成的字符串(比如"2"),像"2.5"、"1.6"这种带小数点的浮点数字符串会被它判定为非数字,所以才会导致合法的浮点数输入也触发错误提示,陷入循环。
先看下你之前的初始代码:
psrc = input("Enter starting pressure for source: ") # Druck Quelle [Pa] / pressure source while psrc.isnumeric() == False or float(psrc) <=0 or float(psrc) >=3: print ("Starting pressure must be numeric value in range 0-3. Please enter valid pressure value.") psrc = input("Enter new pressure: ")
要正确校验浮点数输入,最可靠的方式是尝试将输入转换为浮点数,通过捕获异常来判断输入是否合法。我们可以写一个自定义的校验函数来实现这个逻辑:
def is_float(n): try: float(n) return True except: return False
然后把这个函数整合到你的循环校验中,优化后的代码如下:
psrc = input("Enter starting pressure for source: ") # Druck Quelle [Pa] / pressure source while is_float(psrc) != True or float(psrc) <=0 or float(psrc) >=3: print ("Starting pressure must be numeric value in range 0-3. Please enter valid pressure value.") psrc = input("Enter new pressure: ")
这个方法不仅能正确识别带小数点的浮点数,还能兼容像"1e3"这类科学计数法的数字输入,比单纯用字符串方法校验更全面,后续的循环压力计算就能正常执行啦。
内容的提问来源于stack exchange,提问作者Fatima
相关产品推荐
相关产品推荐

