Member 14881879 Ответов: 5

Решите задачу на Python(новичок)


я попытался создать игру в угадайку :
from random import randrange
user_name = input("Hello user, please input your name : ")
print("Hello " + user_name + " Welcome to the random number guessing game.\n"
                             "here we will generate a number from 1 to 20\n"
                             "and you will have to guess the number\n"
                             "dont worry, we will help you through ;) ")
out_of_guesses = False
guess_limit=5
guess_count=0
if guess_count == guess_limit:
    out_of_guesses= True

secret_number = int(randrange(20))
answer = int(input("choose a number: "))


while str(secret_number) > str(answer) and not(out_of_guesses):

    print("your number is bigger than the answer")
    guess_count += 1
    print("you have left " + str(guess_count) + " / " + str(guess_limit) + " guesses")
    answer = input("take another guess: ")


while str(secret_number) < str(answer) and not(out_of_guesses):

    print("your number is lower than the answer")
    guess_count += 1
    print("you have left " + str(guess_count) + " / " + str(guess_limit) + " guesses")
    answer = input("take another guess: ")

if secret_number == answer:
    print("You Won, the number is: " + str(secret_number))

if out_of_guesses:
    print("You are out of Guesses")


Что я уже пробовал:

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

5 Ответов

Рейтинг:
2

Nelek

Привет...
Я тоже не очень хорош в Python, но то, что я вижу...

У вас есть два "пока", на мой взгляд, должно быть только одно, и если бы оно было внутри этого времени.

Я бы пошел на некоторое время (не решен и не out_of_range)
затем if проверяет больше или меньше, чтобы увеличить guess_count
тогда если проверяет решена и достигнут предел


Рейтинг:
2

Patrice T

Цитата:
я программирую примерно 3 дня.

Ваш код ведет себя не так, как вы ожидаете, или вы не понимаете, почему !

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

Отладчик - Википедия, свободная энциклопедия[^]

Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]
Базовая отладка с помощью Visual Studio 2010 - YouTube[^]

27.3. ПДБ — отладчика Python — питон 3.6.1 документации[^]
Отладка в Python | Python покоряет Вселенную[^]
pdb – интерактивный отладчик - Python модуль недели[^]

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


Рейтинг:
1

CPallini

Я бы снял съемный...
Попробуй

from random import randrange
user_name = input("Hello user, please input your name : ")
print("Hello " + user_name + " Welcome to the random number guessing game.\n"
                             "here we will generate a number from 1 to 20\n"
                             "and you will have to guess the number\n"
                             "dont worry, we will help you through ;) ")
guess_limit = 5
guess_count = 0

secret_number = int(randrange(20))

while guess_count < guess_limit:

  if guess_count == 0:
    answer = int(input("choose a number: "))
  else:
    answer = int(input("take another guess: "))

  if secret_number < answer:
    print("your number is bigger than the answer")
    guess_count += 1
    print("you have left " + str(guess_count) + " / " + str(guess_limit) + " guesses")
  elif secret_number > answer:
    print("your number is lower than the answer")
    guess_count += 1
    print("you have left " + str(guess_count) + " / " + str(guess_limit) + " guesses")
  else:
    break



if guess_count < guess_limit:
  print("You Won, the number is: " + str(secret_number))
else:
  print("You are out of Guesses")


Patrice T

Мой 5-й

CPallini

Спасибо.

Maciej Los

5ed!

CPallini

Большое спасибо!

Рейтинг:
0

Richard MacCutchan

Цитата:
я программирую примерно 3 дня.
Затем остановитесь, сделайте вдох и изучите правильный учебник: Учебник по Python — документация по Python 3.7.8[^]


Рейтинг:
0

seraph76

попробовать это:

from random import randrange

# use triple quotes (""") to write multiple lines.
prompt_msg = """welcome to the Random Number Guessing Game.
Here we will generate a number from 1 to 20, and you will have 5 guesses!
No worries, we will help you through it! [•‿•]
"""

# prompt user for their name.
user_name = input("Please enter your name: ")

# print greeting to the user including the prompt-msg.
# NOTE: f-strings require python 3.6 or higher.
print(f"\nHello {user_name}, {prompt_msg}")

# set guess_limit to 5.
guess_limit = 5

# set secret_number to a random integer between 0-20.
secret_number = int(randrange(20))

# while you have remaining guesses (i.e. while True)...
while guess_limit > 0:

    # prompt player to guess a number.
    guess = int(input("\nChoose a number: "))

    # If guess is higher than secret_number then,
    if guess > secret_number:

        # decrease guess_count by 1.
        guess_limit -= 1

        # print hint.
        print("Too high! Guess again!")

    # el-If guess is less than secret_number then,
    elif guess < secret_number:

        # decrease guess_count by 1
        guess_limit -= 1

        # print hint
        print("Too low! Guess again!")

    # el-If guess equals secret_number then,
    elif guess == secret_number:

        # print Player wins & reveal secret number
        print(f"You Won, the number is:{secret_number}.")

        # set guess_limit to False - Game ends.
        guess_limit = False

    # print guess_count/guess_limit  ratio
    print(f"\t• You have ({guess_limit}/5) guesses remaining.")

# if there are no guesses remaining then,
if not guess_limit:

    # print message that the game has ended.
    print("\nYou are out of Guesses - Game over!")