В то время как петля усложняет игру в угадывании числа - PullRequest
0 голосов
/ 12 сентября 2018

Так что я угадываю игру с числами в Python 3

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

Вот код:

import random

while True:

    number = random.randint(1, 1000)

    count = 0

    guessed = input("Enter the number you guessed: ")
    count += 1

    if int(guessed) < number:
        print("You guessed too low")
    elif int(guessed) > number:
        print("You guessed too high")
    elif int(guessed) == number:
        print(f'You guessed right and it took you {count} guesses to the right number which is {number}')

Ответы [ 2 ]

0 голосов
/ 12 сентября 2018

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

import random

def promptUser():
  user_continue = input("Do you want to continue playing? y/n")
  if (user_continue == 'y'):
    number = random.randint(1, 10)
    game(0, number)

def game(count, number):
  while True:
    guessed = input("Enter the number you guessed: ")
    count += 1

    if int(guessed) < number:
      print("You guessed too low")
    elif int(guessed) > number:
      print("You guessed too high")
    elif int(guessed) == number:
      print(f'You guessed right and it took you {count} guesses to the right number which is {number}')
      promptUser()
      break

promptUser()
0 голосов
/ 12 сентября 2018

Не уверен, что вставленный вами код был опечаткой (с отступом), но я мог случайно изменить вашу реализацию.

Независимо от этого, вам просто нужно добавить еще один цикл while и условие прерывания, когда пользователь все сделает правильно.

import random
while True:
    number = random.randint(1, 1000)
    count = 0
    while True:                                   # Added, and added another layer of indentation
        guessed = input("Enter the number you guessed: ")
        count += 1

        if int(guessed) < number:
            print("You guessed too low")
        elif int(guessed) > number:
            print("You guessed too high")
        elif int(guessed) == number:
            print(f'You guessed right and it took you {count} guesses to the right number which is {number}')
            break                                 # Added

При этом код будет продолжать цикл, чтобы угадать правильное число, пока они не будут правильными. А затем сгенерируйте новое число, чтобы угадать. Однако этот код никогда не закончится, если вы не добавите другое условие прерывания (например, установите флаг, чтобы цикл while проверил выход из внешнего цикла.

...