输入选择后,什么也不会发生

时间:2019-04-03 15:53:18

标签: python python-3.x

我不确定如何将我的问题实际表达出来。

此代码是我制作的骰子游戏的一部分。游戏开始时,用户可以选择以下选项:

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>

2 个答案:

答案 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”后,循环将终止