能否在同一行给变量赋值多个字符串?实现大小写不敏感输入判断
问题解答
问题1:能否在同一行将多个字符串赋值给同一个变量?
你尝试的answer_YES = 'Yes' or "yes"是错误的,这是布尔逻辑运算,Python会返回第一个非空的字符串(也就是'Yes'),根本达不到“绑定多个值”的目的。
如果要让一个变量关联多个字符串,直接用集合或列表存储即可,一行就能完成:
# 集合(推荐,查询速度更快) answer_YES = {'Yes', 'yes', 'YES'} # 或者列表 answer_YES = ['Yes', 'yes', 'YES']
问题2:如何让单个变量绑定yes的多种拼写,接受大小写不同的有效回答?
给你两种实用方案:
方案1:统一转换输入的大小写(最简洁)
不需要存储多种拼写,直接把用户输入转成小写(或大写),再和固定的小写(或大写)字符串对比:
answer = input("Answer: ").strip().lower() # 去除首尾空格+转小写 if answer == 'yes': print("Awesome! Thank you", Name) elif answer == 'no': print("Please re-enter your birthday.")
方案2:用集合存储所有有效选项
如果需要严格限定只接受指定的几种拼写(比如只认Yes/yes/YES,不接受y这类简写),用集合存储所有有效取值,判断输入是否在集合内:
answer_YES = {'Yes', 'yes', 'YES'} answer_NO = {'No', 'no', 'NO'} answer = input("Answer: ").strip() if answer in answer_YES: print("Awesome! Thank you", Name) elif answer in answer_NO: # 这里可以添加重新输入生日的逻辑 print("Let's re-enter your birthday.") else: print("Please enter Yes or No.")
修正你的原代码
把错误的赋值语句替换成集合,就能实现需求:
answer_YES = {'Yes', 'yes'} answer_NO = {'No', 'no'} Name = input("What's your name? ") Last_Name = input("What's your last name? ") print("\nHello,", Name, Last_Name + "!") num1 = float(input("Give me one number: ")) num2 = float(input("Give me a better number: ")) print("\nHere is your Summary:") print(int(num1), '+', int(num2), '=', int(num1 + num2)) BD = input("\nOK, now give me your birthday m/d/y: ") print("Is this your birthday?", '"' + BD + '"' "\n\nCorrect? (Yes) Incorrect? (No)\n") answer = input("Answer: ") if answer in answer_YES: print("Awesome! Thank you", Name) elif answer in answer_NO: print("Please re-enter your birthday.") else: print("Invalid input, please enter Yes or No.")
内容的提问来源于stack exchange,提问作者Cameron
相关产品推荐
相关产品推荐

