0

我正在用 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”存在问题,但除非我将 raw_input 更改为 input,否则循环将继续。此外,如目前所写,如果用户输入除数字、m 或 f 以外的任何内容,我将收到一个错误,即字符串未定义,例如,如果他们输入“y”。

4

1 回答 1

1

好的,首先检查你的缩进!

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

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 语句才会被执行,因为它评估的是性别 == 1 还是性别 == 0,只有当您的用户不“阅读并关注兄弟”时才会发生这种情况。” 我不知道你的代码后面是否需要 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 语句评估更有意义的内容(恕我直言)并且您使用 raw_input 以便您可以输入任何内容在那里没有引发错误(我添加了一些 \n (换行符)来取悦我的强迫症:P)。

于 2013-10-23T07:04:40.863 回答