我不确定如何将我的问题实际表达出来。
此代码是我制作的骰子游戏的一部分。游戏开始时,用户可以选择以下选项:
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()
开始游戏,由于某种原因没有任何反应,我也不知道为什么会发生这种情况。
<html>
<script>
function check1(event) {
// check if the event path contains the select element
// Not checking null values for simplicity
var preventFlag = event.path.filter(obj =>
obj.id.include('select')).length > 0
if(!preventFlag) {
// triggered only when preventFlag is false
alert("TR clicked");
}
}
function check2() {
alert("drop_down clicked");
}
</script>
<table border=1>
<tr onclick="check1(event);">
<td>My Options</td>
<td>
<select name="" id="drop_down" onchange="check2();">
<option value="A">A</option>
<option value="B">B</option>
</select>
</td>
</tr>
</table>
答案 0 :(得分:2)
您遇到的问题是调用X = np.expand_dims(X, axis=-1)
后,执行不再从头开始。如果用户按下ens1()
,则
's'
使用全局变量作为状态(即当前用户的选择)被认为是不好的。这也是不必要的-只需让您的函数返回用户选择即可:
if ens == "s": # s stands for scores
#code here
ens1() # <=== after this call...
# <============ code continues here (not at the top)
,然后在while循环中使用函数的结果:
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 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'
(即单个空格)即可使其正常工作。
答案 1 :(得分:0)
您遇到的问题是,一旦用户第一次进入您的en1循环,则执行的下一行代码例如对于新用户来说就是“ n”。然后en1将执行以获取用户输入,例如“ e”。但是请记住,函数en1在if(en=="n")
范围内被调用。因此,程序将因为满足条件而终止。
您需要的是一个连续循环。
塞比约恩的答案是正确的。用户输入“ q”后,循环将终止