Я попытался добавить простую функцию повторного воспроизведения в свою игру в угадайку

#python #python-3.x

#python #python-3.x

Вопрос:

Я попытался добавить функцию «Хочешь снова поиграть» в мою игру в угадайку, и она перестала работать: ( пожалуйста, помогите. Я очень новичок в python, поэтому держу пари, что я совершил много неосознанных ошибок: S

 import random

n = random.randint(1, 100)

play_game = input("Do you want to play ? Y/N :")
play_game = play_game.upper()
print("play_game")

while play_game == 'Y':
    guess = int(input("Guess a number between 1 och 100: "))
while n != "gissning":
    if guess < n:
        print("You guessed to low")
        guess = int(input("Guess a number between 1 och 100: "))
    elif guess > n:
        print ("You guessed to high")
        guess = int(input("Guess a number between 1 och 100: "))
    else:
        print("Gratz you guessed it")
        break
    
while play_game == 'Y':
    # your game 

    play_game = input("Do you want to play again? Y/N :").upper()
  

Комментарии:

1. Вам не нужны 3 отдельных цикла, таким образом, ваша программа может застрять. Сделайте это только с одним циклом, с условием выхода игрока, который не хочет играть снова. Конечно, угадывание может быть другим циклом.

Ответ №1:

На самом деле в вашем коде есть несколько небольших проблем, но с некоторой логикой вы можете разобраться.

Во-первых, вам не нужны три отдельных while цикла, поскольку, когда вы выходите из одного, вы никогда не достигнете его снова, если не перезапустите свой код. Вам действительно нужны вложенные циклы. Внешний будет проверять, хочет ли пользователь играть снова, в то время как внутренний будет продолжать задавать догадки, пока не совпадет со случайным числом.

И, во-вторых, вы хотите сравнить n случайное число с guess вводом пользователя. В вашем коде, который вы сравниваете n != "gissning" , который никогда не будет истинным, поскольку n это число и "gissning" строка.

Имея это в виду, вы можете немного изменить свой код и получить что-то вроде:

 import random

print("play_game")
play_game = input("Do you want to play ? Y/N :").upper()
highscore = 0

while play_game == 'Y':
    n = random.randint(1, 100)
    guess = int(input("Guess a number between 1 och 100: "))
    score = 1
    while n != guess:
        if guess < n:
            print("You guessed to low")
        elif guess > n:
            print("You guessed to high")
        guess = int(input("Guess a number between 1 och 100: "))
        score  = 1
    else:
        print("Gratz you guessed it")
        highscore = score if score < highscore or highscore == 0 else highscore
        print('Your score this turn was', score)
        print('Your highscore is', highscore)
        play_game = input("Do you want to play again? Y/N :").upper()
  

Надеюсь, это вам поможет. Удачи в вашем путешествии по Python! Дайте нам знать, если у вас возникнут дополнительные вопросы.

Комментарии:

1. Эй, братан, ты мне очень помог, я был бы бесконечно благодарен, если бы ты также показал мне, как добавить функцию рекордов, которая обновляется 🙂

2. Ха-ха, не за что, приятель. Что вы подразумеваете под «функцией рекордов»? Вы хотели бы показать счет вашего текущего пользователя, который обновляется каждый раз, когда он / она угадывает правильное число?

3. Например, если я угадаю число за 6 попыток в первом раунде, тогда рекорд будет равен 6. Но если я угадаю число во втором раунде за 4 попытки, тогда рекорд обновится до 4.

4. Я только что отредактировал ответ. Посмотрите, это ли то, что вы хотели

5. Ваш кровавый мастер делает это таким простым, большое вам спасибо. Какие-нибудь советы для меня по улучшению? Когда я вижу код, я понимаю его, но мне трудно создавать свой собственный. Извините за многие вопросы; P

Ответ №2:

Следующее приглашение ввода должно быть внутри цикла outer-while. Вам также нужно напечатать «Гратц, о котором вы догадались» вместе с приглашением и вне цикла inner-while, когда уже n == угадать.

 import random

play_game = input("Do you want to play ? Y/N :")
play_game = play_game.upper()

while play_game == 'Y':
  print("play_game")
  n = random.randint(1, 100)

  guess = int(input("Guess a number between 1 och 100: "))
  while n != guess:
    if guess < n:
        print("You guessed to low")
        guess = int(input("Guess a number between 1 och 100: "))
    elif guess > n:
        print ("You guessed to high")
        guess = int(input("Guess a number between 1 och 100: "))

  print("Gratz you guessed it")

  play_game = input("Do you want to play ? Y/N :")
  play_game = play_game.upper()