Python用户输入后if条件对字符串用or判断不生效问题求助
问题解答
a、当前写法的错误原因
你写的判断条件name == "Mike" or "mike"不符合Python的逻辑运算规则:
- Python中
or会分别计算左右两侧表达式的布尔值,只要有一侧为真,整个条件就为真 - 右侧的
"mike"是独立的非空字符串,非空字符串的布尔值固定为True - 因此不管用户输入的内容是什么,整个判断条件永远成立,所以程序始终输出问候语句
正确的完整判断写法应该是name == "Mike" or name == "mike",你漏写了第二个相等判断的左半部分。
b、多合法姓名的高效实现方案
最简单的方式是把所有合法姓名存入集合,用in做成员判断,优势是后续新增姓名只要修改集合内容即可,不需要改判断逻辑,且集合的成员查询效率远高于列表,适合后续扩展:
name = input('Who are you?') # 后续新增合法姓名直接加到这个集合里即可 ALLOWED_NAMES = {"Mike", "mike", "Susie", "susie"} if name in ALLOWED_NAMES: print('Hi',name,', nice to see you!') else: print("I don't know you.")
内容的提问来源于stack exchange,提问作者Mike D'Amico
相关产品推荐
相关产品推荐

