私はゲーム豚のサイコロを再生するプログラムを作成しています。次のことを行う必要があります。1。ユーザーまたはコンピューターのどちらが最初のターンをプレイするかを選択します。2.コンピューターが最初に起動した場合、コンピューターは1ターン再生します。3。コンピューターのスコアが100未満である限り、繰り返します。ユーザーは1ターンプレイします。b。ユーザーのスコアが100に達した場合、ループを終了しますc。コンピューターは1ターン再生します。4.結果を印刷します。私の問題は、プログラムを実行すると無限ループが発生し、どこでこの問題が発生するのかわからないことです。誰かが問題が発生している場所を指摘し、おそらくこれを防ぐ方法について提案をすることができますか?私はPythonを初めて使用するので、他のエラーを指摘することもできます。
from random import randint
def print_scores(uscore, cscore):
uscore = 0
cscore = 0
print(uscore, cscore)
def roll_two_dice():
roll1 = randint(1, 6)
roll2 = randint(1, 6)
if roll1 or roll2 == 1:
return 0
elif roll1 and roll2 == 1:
return 25
else:
return roll1 + roll2
def computerTurn(score):
turn_score = 0
while score + turn_score < 100 and turn_score < 20:
roll = roll_two_dice()
if roll == 0:
return 0
score = roll + turn_score
return turn_score
def userTurn(score):
turn_score = 0
while score + turn_score < 100 or user == hold:
roll = roll_two_dice()
if roll == 0:
return 0
score = roll + turn_score
return turn_score
def final_result(uscore, cscore):
uscore = 0
cscore = 0
print('Final results:{}'.format(uscore, cscore))
if uscore >= 100:
print('You win')
else:
print('Computer wins')
def main():
c_score = 0
u_score = 0
if randint(0, 1) == 0:
print('Computer starts')
c_turn = computerTurn(c_score) + c_score
while c_score < 100:
print('Current scores')
print_scores(u_score, c_score)
u_turn = userTurn(u_score) + u_score
if u_score >= 100:
exit
c_turn = computerTurn(c_score)
print(c_turn)
c_score = c_score + c_turn
final_result(u_score, c_score)
main()
私はあなたのコードを広範囲に調べたので、あなたのコードにはいくつかの問題があります。
次のコードセグメント
def roll_two_dice():roll1 = randint(1、6)roll2 = randint(1、6)
if roll1 or roll2 == 1:
return 0
elif roll1 and roll2 == 1:
return 25
else:
return roll1 + roll2
どちらの場合も、、が含まれている必要があります
roll1 == 1
記述した条件では、roll1 = 1またはroll2 = 1のいずれかがチェックされないため、実際には、roll2 = 1およびroll1が1以外のものをチェックします。これにより、無限ループが発生する可能性があります。
第二に、次の2つの機能で:-
computerTurn(スコア)
そして
userTurn(スコア)
turn_scoreの値を更新せず、結果として問題を悪化させる値を返します。c_scoreの値は常に0になり、コードは無限ループに陥ります。
機能的にも
def final_result(uscore、cscore):
uscore> = 100の条件が発生することはないため、uscoreおよびcscore = 0の値を作成しないでください。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加