-1

这是我将要制作的 RPG 的开始,它运行顺利,直到我尝试通过说是或任何其他激活 if 语句的答案来改变性别。有什么我忘记了吗?PS对此感到抱歉。我是业余爱好者。

import random
import time
def Intro():
    print('Hit enter to begin.')
    input()
    print('Please choose a name for your character.')
    PlayerName=input()

    def KeepName():
        print('You have chosen "' + PlayerName + '" as your character\'s name.') 
        print('Do you wish to keep this as your name? (yes or no)')
        return input().lower().startswith('n')
    while KeepName():
        print('Please choose a name for your character.')
        PlayerName=input()
    planet = 'Sykahrox VII' #Useless as of this point but I kept it in so I can remember the name of the planet.
    def gender():
        print('Do you want to be Male, or Female?')
        choice = input().lower()
        if choice in ('m', 'male', 'boy', 'guy', 'dude'):
            return 'Male'
        if choice in ('f', 'female', 'girl', 'woman'):
            return 'Female'
    ChangeGen = 'y'
    while ChangeGen in ('y', 'yes', 'yeah', 'yup'):
        genderchoice = gender()
        print ('You have chosen ' + genderchoice + ' as your gender. Do you wish to change this?')
        ChangeGen = input().lower
        if ChangeGen in ('y', 'yes', 'yeah', 'yup'):
            gender()

Intro()
4

2 回答 2

2

if 子句的 then 语句从函数 gender() 返回。所以你永远不会达到你的第二个性别印刷声明。

于 2013-05-03T23:34:10.177 回答
1

我不确定您遇到问题的输入序列,但至少有两种方式可能会出错。

首先,如果你给一个既不在'm', 'male', 'boy', 'guy', 'dude'也不的性别'f', 'female', 'girl', 'woman',你只是从函数的末尾掉下来gender,所以它返回None,然后你TypeError: Can't convert 'NoneType' object to str implicitlyprint调用中得到一个,因为你试图将它添加None到字符串'You have chosen '中。

其次,在这一行:

ChangeGen = input().lower

…您不是在调用lower()函数,而是在设置ChangeGen实际函数本身。由于函数永远不会匹配任何字符串'y', 'yes', 'yeah', 'yup',因此这if永远不会为真,while条件也永远不会为真。

然后,如果您解决了这个问题,该if语句将gender再次调用,并且对结果不做任何事情。因此,它会询问您是男性还是女性,忽略您输入的任何内容,返回while循环顶部,然后再次询问。事实上,你根本不需要这个if语句。

解决所有三个问题:

while ChangeGen in ('y', 'yes', 'yeah', 'yup'):
    genderchoice = gender()
    if gender is not None:
        print ('You have chosen ' + genderchoice + ' as your gender. Do you wish to change this?')
        ChangeGen = input().lower()
于 2013-05-04T00:15:55.443 回答