Я создал игру, в которой есть секретное число, и ты угадываешь, потом угадывает компьютер. Секретный номер меняется каждый раунд. Чтобы выиграть, либо вы, либо компьютер должны набрать 2 балла.
Я не знаю, сколько раундов это займет, поэтому я зацикливаю игру 100 раз в цикле while с условием, что user_Score и computer_Score не равны 2,
Однако, когда я запускаю свой код, кажется, что он просто пропускает условие и повторяется 100 раз, и я не понимаю, почему.
while user_score != 2 or computer_score != 2:
for _ in range(100):
game()
Приведенный выше код - это та часть, о которой я говорю, она находится в нижней части моего кода.
import random
computer_score = 0
user_score = 0
def game():
global user_score
global computer_score
secret_number = random.randrange(10)
while True:
user_guess = input("Guess a number from 0 - 10: ")
if user_guess.isdigit():
user_guess = int(user_guess)
if 0 <= user_guess <= 10:
break
else:
print("Enter a valid number from 0 - 10")
else:
print("Please enter a valid number from 0 - 10")
computer_guess = random.randrange(10)
if user_guess == secret_number:
print("Hooray! You guessed correctly")
user_score += 1
print(f"Your score is {user_score}")
else:
print("Sorry wrong guess")
print("Now Player 2's turn")
if computer_guess == secret_number:
print("Player 2 guessed the correct number!")
computer_score += 1
print(f"Player 2's score is {computer_score}")
else:
print("Player 2 guesed incorrectly")
print( f" Your score: {user_score}" + " " + f"Player 2 score: {computer_score}")
game()
while user_score != 2 or computer_score != 2:
for _ in range(100):
game()
if user_score == 2:
print(f"Hooray! You won with a score of {user_score} points")
print(f"Player 2 got {computer_score} points")
elif computer_score == 2:
print(f"Sorry, you lost. Your score is {user_score}, and Player 2 got {computer_score} points")
print( f" Your final score: {user_score}" + " " + f"Player 2 final score: {computer_score}" )
Попробуйте использовать if внутри цикла for вместо while снаружи.
И вы должны зацикливаться, пока user_score != 2 и computer_score != 2






while user_score != 2 or computer_score != 2:
for _ in range(100):
game()
Если игрок наберет два балла, это не остановит внутренний цикл for. Он зациклится на 100, потому что это то, что вы ему сказали.
Я не понимаю, зачем вообще нужен внутренний цикл. Разве недостаточно внешнего цикла while?
while user_score != 2 or computer_score != 2:
game()
Кроме того, не хотели бы вы использовать здесь and вместо or? Как это написано, он остановится только в том случае, если оба результата равны 2. И если один из игроков наберет 3 балла, а другой игрок имеет счет 0 или 1, этот цикл никогда не завершится.
Привет, Джон, большое спасибо, я совершенно новичок в этом, и я все еще учусь, но то, что ты сказал, действительно помогло мне. Спасибо.
Он всегда будет показывать одну и ту же ошибку. Потому что в начале игры, когда заканчивается 1-й раунд, цикл for начинает повторяться, и он будет продолжаться 100 раз. Лучший способ — удалить цикл for и просто запустить цикл while.
while user_score != 2 or computer_score != 2:
game()
Вы входите в цикл
while, потому что ниuser_score, ниcomputer_scoreне равны 2, а затем выfor100 раз (несмотря ни на что).