2016-11-17 23 views
0

私は割り当てのためのこのデータ検証プログラムに問題があります。なんらかの理由でループしている間、この問題に悩まされています。他のループは私のコード無事に実行するが、ここで、この機能は...whileループと関数内でそれを停止する方法

def menu():                        
    pick = None 
    while pick != "q" or pick != "Q": 
     print """ 
    \n 

    Welcome to my password validation program. 

    1 - New Account 
    2 - Login 
    q - Quit 

    """ 
    pick = raw_input("What do you want to do?: ") 
    # Quit 
    if pick == "q": 
     print "\t Thanks for coming Good-bye." 
     raw_input("\nPress any key to exit") 
    # New Account 
    elif pick == "1": 
     main()                      
    # Login 
    elif pick == "2": 
     if ps == 100: 
      login()                     
     else: 
      print "Sorry no password has been set. please create a new account." 
    else: 
     print "Sorry, but", pick, "isn't a valid choice." 

menu() 

は間違った方法のまわりのコードを持っていない、両方のあなたの答えが正しいことだった。一方、

def menu(): 
     print \ 
     """ 
     \n 

     Welcome to my password validation program. 

     1 - New Account 
     2 - Login 
     q - Quit 

     """ 

     pick = None 
     pick = raw_input("What do you want to do?: ") 
     # Quit 
     if pick == "q": 
      print "\t Thanks for coming Good-bye." 
      raw_input("\nPress any key to exit") 
     # New Account 
     elif pick == "1": 
      main()                      
     # Login 
     elif pick == "2": 
      if ps == 100: 
       login()                     
      else: 
       print "Sorry no password has been set. please create a new account." 
     else: 
      print "Sorry, but", pick,"isn't a valid choice." 

    menu() 
+1

'print'行だけが' while'ループ内にあることに気が付きましたか? – jonrsharpe

+0

これは、無限ループをどのように停止させるのでしょうか。私は印刷行が次のテキストを出力することを理解していますが、無限ループと何が関係していますか? – Will

+1

*** 'print'行のみ**' pick'の値を変更しない* *。あなたの関数の残りの部分は、*ループが終了した後にのみ実行されます。 – jonrsharpe

答えて

0

@tdelaney @jonrsharpeないあなたprint """ラインは限りピックをqと等しくないかのような印刷を保つために起こっている場合、私は...ここにあなたのコードを掲示しながら、あなたには、いくつかのコピー/貼り付けエラーがあったかもしれないと思いますQ.

1

ここでの問題は、あなたのインデントが
はこの行い、次のとおりです。

def menu():                        
    pick = None 
    while pick != "q" or pick != "Q": 
     print """ 
     \n 

     Welcome to my password validation program. 

     1 - New Account 
     2 - Login 
     q - Quit 

     """ 
     pick = raw_input("What do you want to do?: ") 
     # Quit 
     if pick == "q": 
      print "\t Thanks for coming Good-bye." 
      raw_input("\nPress any key to exit") 
     # New Account 
     elif pick == "1": 
      main() 
     # Login 
     elif pick == "2": 
      if ps == 100: 
       login() 
      else: 
       print "Sorry no password has been set. please create a new account." 
     else: 
      print "Sorry, but", pick, "isn't a valid choice." 

menu() 

pick PARAMETの値の割り当てをerはwhileループスコープでなければなりません。 もう一つは、mainloginの関数が定義されていないので、ローカルスコープにあるかスコープにインポートされていることを確認することです。

関連する問題