为何输入未匹配列表元素时Python的if语句仍执行?
问题原因
你的代码逻辑判断出错了。原条件if city in Newyork or texas:的实际执行逻辑是:先判断city in Newyork,如果这个不成立,就会判断texas这个列表本身的布尔值——非空列表在Python中会被视为True,所以不管你输入什么,这个条件都会成立,自然永远输出yes。
修正方法
你需要明确判断输入的城市是否在任意一个列表里,有两种常见写法:
写法一:分别判断两个列表
texas = ['austin', 'houston', 'dallas'] Newyork = ['albany','stony', 'nyc'] city = input('enter city name?\n>>') if city in Newyork or city in texas: print('yes') else: print('no')
写法二:合并列表后判断
如果列表不大,也可以把两个列表合并后再判断,代码更简洁:
texas = ['austin', 'houston', 'dallas'] Newyork = ['albany','stony', 'nyc'] city = input('enter city name?\n>>') # 合并两个列表,再判断是否包含输入的城市 if city in Newyork + texas: print('yes') else: print('no')
另外注意输入语句里的换行,原代码的换行写法可能导致语法错误,已经一并修正为input('enter city name?\n>>')。
内容的提问来源于stack exchange,提问作者Speedster_knight
相关产品推荐
相关产品推荐

