Python代码中if、elif、else条件判断无法正常工作的问题
问题根因
条件判断不生效是因为错误使用is做字符串匹配:
is的作用是校验两个对象是否是内存里的同一个实例,不是比较值是否相等。只有解释器缓存的短字符串、小整数才会碰巧地址一致,input()读取的用户输入和代码里写的字符串字面量通常不属于同一内存实例,所以判断永远无法命中。- 做值相等判断必须使用
==运算符。
另外原代码的greeting函数把拼接好的问候语套了方括号转成列表,直接打印会带出方括号、引号,输出格式不符合预期,可以一并修正。
可直接运行的修正代码
def greeting(string): greet = "早上好 " + string return greet print("请输入你的名字:") name = input() if name == "Saptarshi": greet = greeting(name) print(greet) elif name == "Gurpreet": greet = greeting(name) print(greet) else: print("没有给你的问候语!")
注意事项
is仅适合用来判断单例对象,比如判断变量是否为None(写法为xxx is None),永远不要用它做字符串、数字这类值的相等判断。- 如果不需要返回列表结构,不要随意给字符串加方括号,避免输出格式异常。
内容的提问来源于stack exchange,提问作者saptarshi
相关产品推荐
相关产品推荐

