Python新手疑问:输入0时`if != ''`判断为何返回true?
问题解答:为什么输入0时
!= ''判断返回True? 嘿,我来帮你搞懂这个问题~
首先得明确一个关键知识点:Python的input()函数不管你输入什么内容,都会返回一个字符串类型的值。你输入的0其实被转换成了字符串"0",而不是数字0。
你写的判断条件if name != ''是在比较字符串:"0"和空字符串""显然不相等,所以条件成立,返回True,自然会执行print('Thank you for entering a name, ' + name)这行代码。这和数字0的“假值(falsy)”属性没关系,因为这里你处理的根本不是数字,是字符串呀!
如何让输入0时判断返回False?
根据你的需求,有几种简单的实现方式:
方式1:直接判断输入是否为空或"0"
如果只是想把输入0和空输入同等对待,直接扩展判断条件即可:
print('Enter a name') name = input() if name not in ('', '0'): print('Thank you for entering a name, ' + name) else: print('You didn\'t enter a name')
如果还要排除用户输入全空格的情况(比如输入一堆空格后回车),可以加上strip()处理:
print('Enter a name') name = input().strip() if name not in ('', '0'): print('Thank you for entering a name, ' + name) else: print('You didn\'t enter a name')
方式2:尝试将输入转为数字判断
如果你想把所有数字输入都当成无效名字(不只是0),可以用异常处理来实现:
print('Enter a name') name = input().strip() try: # 尝试把输入转为整数,如果成功说明是数字 int(name) print('You didn\'t enter a name') except ValueError: # 转不成整数,说明是有效名字(排除空输入) if name != '': print('Thank you for entering a name, ' + name) else: print('You didn\'t enter a name')
这样调整后,输入0的时候就会执行else分支,输出You didn't enter a name啦~
内容的提问来源于stack exchange,提问作者Lse Library
相关产品推荐
相关产品推荐

