这是我要制作的RPG的开始,它会顺利运行,直到我尝试通过声明是或激活if语句的任何其他答案来更改性别。有什么我忘了吗?附:为此表示歉意。我是业余爱好者。
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()
答案 0 :(得分:2)
if子句的then语句从函数gender()返回。所以你永远不会在性别上达到你的第二份印刷声明。
答案 1 :(得分:1)
我不确定您遇到问题的输入顺序,但至少有两种方法可能出错。
首先,如果您提供的信息既不属于'm', 'male', 'boy', 'guy', 'dude'
也不属于'f', 'female', 'girl', 'woman'
,那么您只是从gender
函数的末尾开始,因此返回None
,并且然后,您会从TypeError: Can't convert 'NoneType' object to str implicitly
调用中获得print
,因为您尝试将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()