如何编写基于if elif的Python程序判断有效与无效数字
有效数字与无效值区分的Python实现方案
原有代码错误原因
input()函数的返回值永远为字符串类型,直接判断type(x) == int或float永远不成立,你没有对输入内容做数字转换的尝试- 逻辑表达式写法错误:
if type(y) and type(x) == int or float:实际执行逻辑等效于(bool(type(y)) 和 (type(x) == int) 的与结果) 或 float的布尔值,而float作为内置类的布尔值永远为True,所以第一个判断分支永远触发,这就是你不管输入什么内容都提示二者都是有效数字的核心原因。
最优实现方案
我们可以通过异常捕获的方式判断字符串是否可以正常转换为数字,兼容整数、浮点数两类有效格式:
完整可运行代码
def is_valid_number(s: str) -> bool: try: float(s) return True except ValueError: return False x = input(":") y = input(":") valid_count = 0 if is_valid_number(x): valid_count += 1 if is_valid_number(y): valid_count += 1 if valid_count == 2: print('both are valid numbers') elif valid_count == 1: print('one of the values is a valid number') else: print('none are valid numbers')
逻辑说明
- 辅助函数
is_valid_number接收输入的字符串,尝试将其转换为浮点数(整数也可以正常转成浮点数,所以兼容整数场景),如果转换过程抛出ValueError异常,说明输入不是合法数字,返回False,否则返回True - 统计两个输入的有效数字个数,根据个数输出对应结果,逻辑清晰且没有冗余判断
- 支持你提到的所有有效数字、无效值的判断场景:比如
123、43.76、100000都会返回True,123abc、7.9.8、*&^dadsf都会返回False
内容的提问来源于stack exchange,提问作者Zak A
相关产品推荐
相关产品推荐

