私は何時間もの間問題を解決していますが、なぜ動作していないのか分かりません。私のコードは、私が取り除くことができない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(と呼ばれているので
あなたのこの機能はplayHand()ですか? playHand()を繰り返し呼び出すと、スタックが始まります。ループスタックを分割する必要があります。 playHand、dealHand、playGameの呼び出しを削除すると、if/elif/elseが正常に動作することがわかります。 – ooknosi
この関数はplayGame()であり、imはdealHand()とplayHand()を呼び出しています。私はそれが機能するようにそれらの関数を呼び出す必要がある、別の方法はありませんか?問題の仕様でもこれらの関数が呼び出されるように要求します – dmnte
playHand、dealHand、およびplayGameへの呼び出しを削除することは、if/elseコードがそれ自身で動作するかどうかを確認するデバッグプロセスの一部です。呼び出しを1つずつ追加して、関数呼び出しの1つがあなたのバグを引き起こすかどうかを調べることができます。 – ooknosi