Python判断用户输入是否匹配字符串列表时条件判断不生效问题
问题根因
代码不触发打印是两个写法错误:
- 你写for循环遍历
Addition时,每次取出来的单个匹配字符串存在变量x里,但判断条件写的是welcome == Addition——相当于拿用户输入的单个字符串,和存了5个值的整个元组做相等判断,结果永远是False。 - 就算删掉循环直接判断
welcome == Addition,本质还是拿字符串类型和元组类型做比较,不可能匹配成功。
修正方案
根本不需要手动写for循环遍历,Python内置的in关键字原生支持判断元素是否在序列/集合里,写法简洁还不容易错:
# input()本身返回字符串类型,不需要额外套str()转换 welcome = input("Welcome to the calculator, which form of operation do you wish to choose? ") # 加法匹配关键词集合 Addition = ("Add", "add", "Addition", "addition", "+") if welcome in Addition: print("Works") # 后续在这里补加法运算的逻辑即可
如果你是想练习循环写法(实际开发不推荐这么写),正确的循环判断逻辑应该是和遍历出来的单个值做比较:
is_add = False for keyword in Addition: if welcome == keyword: is_add = True break # 匹配到就直接跳出循环,不用多余遍历 if is_add: print("Works")
额外小提示:后续你加其他运算(减法、乘法、除法)的匹配逻辑时,也可以直接用
elif搭配in判断,结构会非常清晰。
内容的提问来源于stack exchange,提问作者Jackc219021
相关产品推荐
相关产品推荐

