如何在Python中区分负数与非数字输入?
问题根源
你的代码里用了isdigit()方法判断输入是否为数字,但这个方法只认不带负号的纯数字字符串,像"-3"这种带负号的输入会被它判定为非数字,直接走到else分支,根本没机会转成整数去判断是不是负数。
修复后的代码
换成try-except结构处理输入转换,不管是正数还是负数,只要是合法整数就能被正确识别,还能接住非数字的输入:
while True: user_guess = input("Guess a number: ") try: user_guess = int(user_guess) if user_guess < 0: print("Too low, guess a number between 0 and 10.") elif user_guess > 10: print("Too high, guess a number between 0 and 10.") else: # 这里可以添加猜对后的逻辑,比如结束循环 print("That's a valid guess!") break except ValueError: print("It is not a number.") break
补充说明
try-except是处理用户输入的更可靠方式,比isdigit()覆盖的场景多,正负整数、零都能处理。- 把原来的两个独立
if改成elif和else,逻辑更严谨——之前的代码如果输入0-10之间的数,不会有任何输出,现在会给出有效提示,也避免了多个条件同时触发的问题。
内容的提问来源于stack exchange,提问作者Boris Vian
相关产品推荐
相关产品推荐

