Гадание числа за 7 шагов Python - PullRequest
0 голосов
/ 26 апреля 2020

Я хочу написать python игру, которая знает число (1-100), полученное от пользователя, максимум за 7 шагов. 2 ^ 7> 100. Код ниже работает, но он занимает более 7 шагов. Я думаю, что проблема в догадке = угадать + -гадать // (2 ^ n) части. Но я не знаю, чем заменить.

number=int(input("Enter a number between 1 and 100: "))
guess=50
n=1
if number>100:
    number=int(input("Enter a number less than 100: "))
if number<1:
    number=int(input("Enter a number greater than 1: "))
while True:
    print("Your number is" +' '+ str(guess) +' '+ "?")
    ans=str(input("(g)reater,(l)ess or (b)ravo: "))
    for n in range(1,10,1):
        if ans=="g":
            guess=guess+guess//(2^n)
        elif ans=="l":
            guess=guess-guess//(2^n)
        elif ans=="b":
            print("Your number is " +' '+ str(guess) +' '+ "Well done for me")
        break 

1 Ответ

0 голосов
/ 26 апреля 2020

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

number=int(input("Enter a number between 1 and 100: "))
guess = 50
n = 1
if number>100:
    number=int(input("Enter a number less than 100: "))
if number<1:
    number=int(input("Enter a number greater than 1: "))

lo = 1
hi = 100

while True:
    print("Your number is" +' '+ str(guess) +' '+ "?")
    ans = str(input("(g)reater,(l)ess or (b)ravo: "))
    if ans == "g":
        lo = guess
        guess=lo + (hi-lo+1)//2
    elif ans == "l":
        hi = guess
        guess=lo + (hi-lo)//2
    elif ans == "b":
        print("Your number is " +' '+ str(guess) +' '+ "Well done for me")
        break 
    n += 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...