2017-02-13 8 views
0

私は何時間もの間問題を解決していますが、なぜ動作していないのか分かりません。私のコードは、私が取り除くことができない1つのエラーを除いて、基本的に終了します。問題は、edxのPython MITコースの紹介です。これは、それが他の関数を呼び出すコードですが、私はそれが重要なことだとは思わない問題設定4問題6.過去の入力を間違って覚えているpythonの入力

uinput = -1 
hand = -1 
while True: 
    uinput = input('Enter n to deal a new hand, r to replay the last hand, or e to end game:') 
    if uinput == 'n': 
     hand = dealHand(HAND_SIZE) 
     playHand(hand, wordList, HAND_SIZE) 
    elif uinput == 'r' and hand == -1: 
     print('You have not played a hand yet. Please play a new hand first!') 
    elif uinput == 'r' and hand != -1: 
     playHand(hand, wordList, HAND_SIZE) 
    elif uinput not in ('n', 'r', 'e'): 
     print("Invalid command.") 
     playGame(wordList) 
    else: 
     break 
    print('') 

です。私が持っている問題は、私が「e」を押すと、それは休憩に入り、ループから出てきます。これは私が初めて 'e'を押すときに行いますが、それ以前に他のキーを押すとインクリメントし、実際に何度も 'e'を押す必要があります。たとえば、「e」を押す前に「x」を2回押すと、「e」を3回押してブレークに達する必要があります。例えば。 xxeee break。デバッグしようとしている間、スタックや何かを空にしているように、uinputの値を 'x'に戻すことさえ見ました。誰がなぜこれが起こっているのか知っていますか?あなたの関数がplayGame(と呼ばれているので

+4

あなたのこの機能はplayHand()ですか? playHand()を繰り返し呼び出すと、スタックが始まります。ループスタックを分割する必要があります。 playHand、dealHand、playGameの呼び出しを削除すると、if/elif/elseが正常に動作することがわかります。 – ooknosi

+0

この関数はplayGame()であり、imはdealHand()とplayHand()を呼び出しています。私はそれが機能するようにそれらの関数を呼び出す必要がある、別の方法はありませんか?問題の仕様でもこれらの関数が呼び出されるように要求します – dmnte

+0

playHand、dealHand、およびplayGameへの呼び出しを削除することは、if/elseコードがそれ自身で動作するかどうかを確認するデバッグプロセスの一部です。呼び出しを1つずつ追加して、関数呼び出しの1つがあなたのバグを引き起こすかどうかを調べることができます。 – ooknosi

答えて

0

)、バグがここにあります:

elif uinput not in ('n','r', 'e'): 
    print("Invalid command.") 
    playGame(wordList) 

あなたは 'X' を押したときには、再度playGameを呼んでいます。これは現在のplayGameループの上に別のループを積み重ねます。 playGame(wordList)への呼び出しを削除してみてください。これでバグが修正されます。

+0

はいthatsは、 'n'と 'r'以外の値を押す問題を取り除き、問題の要件を満たすのに十分な問題を持っています。しかし、最初に 'n'を押してから 'e'を押して出ようとすると、それが起こります。これは避けられますか? – dmnte

+0

dealHand()またはplayHand()にplayGame()の別の呼び出しが含まれているかどうかを確認します。 – ooknosi

+1

あなたの右のplayHand()にplayGame()をもう一度呼び出しました。私はまだPythonには全く新しいので、この問題について知らなかった。ご協力ありがとうございました。 – dmnte

関連する問題