Python 2.7 将字符串设置为用户输入的字母

Python 2.7 将字符串设置为用户输入的字母,python-2.7,Python 2.7,我正在用python编写一些东西,我不明白为什么这段代码不起作用 m = 1 f = 0 gender_choice = False while gender_choice == False: gender = input('Are you male or female? Type m for male or f for female. ') if gender == m or gender == f: print gender_choice = True el

我正在用python编写一些东西,我不明白为什么这段代码不起作用

m = 1
f = 0
gender_choice = False

while gender_choice == False:
    gender = input('Are you male or female? Type m for male or f for female. ')
    if gender == m or gender == f:
    print
    gender_choice = True
else:
    print
    print "Hey, this is a text based game. Read and follow bro."

print gender

我想我理解将字符串设置为“m”或“f”有问题,但除非我将原始输入更改为输入,否则循环将继续。另外,正如目前所写的,如果用户输入的不是数字、m或f,我将得到一个错误,即字符串未定义,例如,如果他们输入“y”。

好,首先检查缩进

这是我认为您希望它看起来的样子:

m = 1
f = 0
gender_choice = False

while gender_choice == False:
    gender = input('Are you male or female? Type m for male or f for female. ')
    if gender == m or gender == f:
        print
        gender_choice = True
    else:
        print
        print "Hey, this is a text based game. Read and follow bro."

print gender
然后,只有当if语句的计算结果为False时,else语句才会被执行,这总是在此时,因为它计算的是gender==1还是gender==0,这只有在用户不“读取并遵循bro”时才会发生我不知道您以后是否需要代码中的m和f变量,但我假设您需要,所以我要做的是:

gender_choice = False

while gender_choice == False:
    gender = raw_input('Are you male or female? Type m for male or f for female. ')
    if gender == "m":
        print
        gender_bool = 1
        gender_choice = True
    elif gender == "f":
        print
        gender_bool = 0
        gender_choice = True
    else:
        print "\nHey, this is a text based game. Read and follow bro.\n"

print gender

这样,您的逻辑工作,m和f变量被放入一个变量(gender_bool)中,可以在以后的逻辑中进行计算,if语句计算更有意义的内容(imho),您使用原始输入,这样您就可以在其中输入任何内容而不会引起错误(并且我添加了一些\n(换行符)来满足我的OCD:p).

您正在比较当前写入的字符串和数字,您有一个
缩进错误
,因为
if
语句后面的行没有缩进。
m
是一个变量(在您的代码中,它等于
1
),而
'm'
是您要求用户输入的字符串,您正在为其分配名称
性别
。如果用户输入
m
作为他们的答案,您的If语句就是
If'm'==1
,这当然永远不会是真的。它完全按照我的想象工作,谢谢。我不太明白布尔做什么,为什么我需要它。我暂时把它注释掉了,没有它代码的功能是一样的。@TylerDuncan我可以在原始代码中用SEXT_bool代替前面的m=1 f=0变量,认为它们存在是有原因的。。。但是,您可以稍后在文本游戏逻辑中使用它来查看字符是男性还是女性。