#python
#python
Вопрос:
Как вы можете видеть, я полный новичок в Python, поэтому буду признателен за любую помощь. Моя проблема в том, что я пытаюсь протестировать код для всех сценариев, но я не могу протестировать тай-брейк. Конечно, я мог бы просто вставить Player1Score = Player2Score
(который я пометил хэшем, чтобы показать местоположение), но это просто отправило бы программу в бесконечный цикл, что противоречит цели тай-брейка. Итак, есть ли какой-либо способ, которым я могу заставить программу пройти сегмент тай-брейка только один раз, а затем позволить одному игроку выиграть?
(Прошу прощения, если я допустил какие-либо ошибки в своем вопросе, я также новичок в stackoverflow)
import random
def DiceGame():
Count = 0
Player1Score = 0
Player2Score = 0
while Count <= 4:
Count = 1
print ("n It is Round",Count, "n")
print ("It is Player 1's turn.")
x = input("Press [Enter] to roll.")
Score = Rolls()
Player1Score = Score
print ("Player 1, your score so far is",Player1Score)
print ("It is Player 2's turn.")
x = input("Press [Enter] to roll.")
Score = Rolls()
Player2Score = Score
print ("Player 2, your score so far is",Player2Score)
#Player1Score = Player2Score
if Player1Score == Player2Score:
print ("It is a tie!")
print ("There will be a final tiebreaker.")
Count -= 1
DiceGame()
elif Player1Score >= Player2Score:
print ("Player 1 wins!")
elif Player1Score <= Player2Score:
print ("Player 2 wins!")
def Rolls():
Roll1 = random.randint(1,6)
Roll2 = random.randint(1,6)
print ("You got a",Roll1)
print ("You got a",Roll2)
Score1 = Roll1 Roll2
if Score1 == 2 or Score1 == 4 or Score1 == 6 or Score1 == 8 or Score1 == 10 or Score1 == 12:
print ("Your total is even so you get an extra 10 pts.")
Score2 = Score1 10
print ("Your score for this round is" ,Score2)
elif Score1 == 3 or Score1 == 5 or Score1 == 7 or Score1 == 9 or Score1 == 11:
print ("Your total is odd so you lose 5 pts.")
Score2 = Score1 - 5
if Score2 <= 0:
print ("Your score has gone below 0pts. It will therefore be reset to 0pts")
Score2 = 0
print ("Your score for this round is" ,Score2)
return Score2
DiceGame()
Ответ №1:
Если вы действительно хотите, вы можете добавить временные оценки игроков для тестирования функции, а затем снова удалить их, если увидите, что они работают. Обычно его запуска было бы достаточно, но, как вы упомянули, он будет зацикливаться вечно. Я думаю, это как бы показывает, что это работает, но я согласен, что это не оптимально.
def DiceGame(count, p1, p2):
Count = count
Player1Score = p1
Player2Score = p2
...
Затем в нижней части вашего файла назовите его as DiceGame(5, 1, 1)
, а в вашем тай-брейке назовите его as DiceGame(0, 0, 0)
. Это приведет к ничьей при первом запуске и будет выполняться нормально во второй раз.
if Player1Score == Player2Score:
print ("It is a tie!")
print ("There will be a final tiebreaker.")
Count -= 1
DiceGame(0, 0, 0)
... # code inbetween
# end of file
return score2
DiceGame(5, 1, 1)
Комментарии:
1. Спасибо! Я мало что сделал для вызова функций с указанными переменными, поэтому я не думал использовать его для перехода к раунду 5.
2. @Shirotama Нет проблем, но если это решит вашу проблему, вы должны пометить ее как правильный ответ 🙂