If string statement: What am I missing?
本问题已经有最佳答案,请猛点这里访问。
我创建了一个简单的代码,如下所示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | name = str(input ("What is your name?")) gender = str(input ("What is your gender?")) if gender == 'male' or 'Male': print ("Hello Mr %s" % (name)) elif gender == 'female' or 'Female': print ("Hello Mrs %s" % (name)) else: print ('Invalid gender. Please try again.') |
然而,无论我输入什么性别(甚至是像
在步骤中
首先使用正确的变量名:
1 | gender = input("What is your gender?") |
其次,使用
1 2 | >>> 'male' or 'Male' 'male' |
用途:
1 | if gender == 'male' or gender == 'Male': |
或者使用:
1 | if gender.lower() == 'male': |
整个程序
1 2 3 4 5 6 7 8 9 | name = input("What is your name?") gender = input("What is your gender?") if gender.lower() == 'male': print("Your are %s" % (gender)) elif gender.lower() == 'female': print("Your are %s" % (gender)) else: print('Invalid gender. Please try again.') |
较短版本
1 2 3 4 5 6 7 | name = input("What is your name?") gender = input("What is your gender?") if gender.lower() in ('male', 'female'): print("Your are %s" % (gender.lower())) else: print('Invalid gender. Please try again.') |
当与多个字符串进行比较时,需要以不同的方式进行比较:
1 | if gender == 'male' or gender == 'Male': |
或者更简单地说:
1 | if gender in ['male', 'Male']: |
或用一套:
1 | if gender in {'male', 'Male'}: |
速度差别不大,只有两件,但有很多项集合将更快,因为它使用哈希表,而列表使用线性搜索。
现在,关于您的代码发生了什么。如果你这样做:
1 | if gender == 'male' or 'Male': |
你是说:
1 | if (gender == 'male') or ('Male'): |
所以,不管