私は抵抗色コードを覚えるのに役立つ教育的ツールを作成しています。 GUI用にTkinterを使用しています。これは私のコードで問題関数である:明確化のためループでユーザスコアが更新されない
score = 0
def nextResistor():
global score
global timeLeft
x = random.randint(0,9)
y = random.randint(0,9)
z = random.randint(0,9)
t = random.randint(0,2)
xcolor = getColor(x)
ycolor = getColor(y)
zcolor = getColor(z)
tcolor, tol = getTolerance(t)
if timeLeft > 0:
entryBox1.focus_set()
entryBox2.focus_set()
entryBox3.focus_set()
entryBox4.focus_set()
xguess = entryBox1.get()
yguess = entryBox2.get()
zguess = entryBox3.get()
tguess = entryBox4.get()
# Show the label
if xguess == x and yguess == y and zguess == z and tguess == tol:
score = score + 1
else:
score += 0
print(str(xguess), str(yguess), str(zguess), str(tguess))
entryBox1.delete(0, Tkinter.END)
entryBox2.delete(0, Tkinter.END)
entryBox3.delete(0, Tkinter.END)
entryBox4.delete(0, Tkinter.END)
rlabel.config(text=xcolor + " " + ycolor + " " + zcolor + " " + tcolor)
scoreLabel.config(text="Score: " + str(score))
print(str(score))
、私の関数getColor()
は、単にそれが与えられた整数の引数に対応する文字列を返します。 getTolerance()
は同じことをしますが、それ以外は整数tol
を返します。ユーザの入力が正しい推測であっても、すなわち条件が真であっても、スコア値は変更されない。私は現在、私のデバッグプロセスを助けるために推測とスコアを印刷していますが、私は運がありませんでした。ここに私の出力のサンプルです:
私は、これは単純なものである疑いがあるが、私はそれを見つけようと、私の髪をリッピングしています。 Tkinterのメインループは本質的にこのプログラムを再実行しますが、時間は依然としてゼロよりも大きいです。
編集:実際の問題は、xguess
、yguess
などが実際にユーザーの入力と一致しないことです。これをどうやって解決するのですか?
EDIT#2:ランダムな回答が生成されたときと、ユーザーが対応する回答を求められたときの間にオフセットがあります。プログラムでは、ユーザーはループを開始するために 'Enter'を押すように促されます。下のスクリーン・シートでは、ユーザーが答えを求める前に、その答えがループで表示されていることを明確に確認できます。出力は形式(答え、推測)です。
'type(xguess)== str;タイプ(x)== int' –
私はあなたが無作為の答えを生成し、同じ関数で入力を取得していると懸念しています。質問の生成と入力内容が正しいかどうかを確認する間に何か入力する時間は全くありません。 –