gpt4 book ai didi

python - 当输入选择时什么也不会发生

转载 作者:行者123 更新时间:2023-12-01 01:04:34 25 4
gpt4 key购买 nike

我不确定如何实际用语言表达我的问题。

此代码是我制作的骰子游戏的一部分。当游戏开始时,用户有一个多项选择选项,如下:

如果您是新用户,请输入“n”;如果您是现有用户,请输入“e”;如果显示分数,请输入“s”;如果您忘记了密码,请输入“f”:

例如,如果用户输入字母 n,他们就会为游戏创建一个新帐户,然后我会调用函数 ens1 让他们选择做点什么。

我遇到的问题是,如果用户在创建帐户后输入 n 来创建新帐户,我会调用函数 ens1 让他们选择要执行的操作其他内容并说他们想通过输入e来开始游戏,由于某种原因没有任何反应,我不知道为什么会发生这种情况。

def ens1():
global ens
print("\n")
ens = input("Please enter 'n' if you are a new user, 'e' if you are an existing user, or 's' to display scores, or 'f' if you forgot your password: ")
while ens not in ('e', 'n', 's', 'f'):
ens = input("Please enter 'n' if you are a new user, 'e' if you are an existing user, or 's' to display scores, or 'f' if you forgot your password: ")


if ens == "f": # f stands for forgotton password
#code here
ens1()


if ens == "e": # e stands for existing user
#code here
ens1()


if ens == "n": # n stands for new account
#code here
ens1()


if ens == "s": # s stands for scores
#code here
ens1()

最佳答案

您遇到的问题是,在调用 ens1() 之后,执行不会从顶部重新开始,即。如果用户按 's',则

if ens == "s": # s stands for scores
#code here
ens1() # <=== after this call...
# <============ code continues here (not at the top)

使用全局变量来表示状态(即当前用户的选择)被认为是不好的。这也是不必要的 - 只需让您的函数返回用户选择即可:

def ens1():
ens = " " # don't use global variable (cannot be an empty string ;-)
prompt = """
Please enter

'n' if you are a new user,
'e' if you are an existing user,
's' to display scores,
'f' if you forgot your password

or 'q' to quit: """
while ens not in 'ensfq':
ens = input(prompt)
return ens

然后在 while 循环中使用函数的结果:

while True:
ens = ens1()
if ens == 'q':
break # exit if the user presses 'q'
elif ens == "f": # f stands for forgotton password
print('f chosen')
elif ens == "e": # e stands for existing user
print('e chosen')
elif ens == "n": # n stands for new account
print('n chosen')
elif ens == "s": # s stands for scores
print('s chosen')
else:
print('unknown option chosen:', ens)

更新: ens = ""(空字符串)不起作用,因为

"" in 'ensfq'

始终为真。将其更改为 ens = ""(即单个空格)即可正常工作。

关于python - 当输入选择时什么也不会发生,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55499361/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com