2014-09-05 3 views
0
import random 

print("Welcome to the Number Guessing Game!\n") 
print("We are going to pick a number and have the computer guess it.") 
answer = int(input("Pick a number between 1 and 100:\n")) 
guess = random.randint(1, 100) 
guesses = 1 
while guess != answer: 
    if guess > answer: 
     guess = random.randint(1, guess) 
     print(guess) 
    elif guess < answer: 
     guess = random.randint(guess, 100) 
     print(guess)  
    guesses += 1 
print("\nWhoopy, I guessed correct.\n") 
print("It took me %s guesses to guess %s." % (guesses, answer)) 

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

+1

Что такое точка 'глазок = guess'? –

+0

Это может быть бесполезная часть кода. Позвольте мне сделать чек. – SleepyViking

+0

Это был недосмотр. Спасибо – SleepyViking

ответ

1

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

low = 1 
high = 100 
guess = random.randint(low, high) 
guesses = 1 
while guess != answer: 
    if guess > answer: 
     high = guess - 1 
     print(guess) 
    elif guess < answer: 
     low = guess + 1 
     print(guess) 
    guess = random.randint(low, high)  
    guesses += 1 
print("\nWhoopy, I guessed correct.\n") 
print("It took me %s guesses to guess %s." % (guesses, answer)) 

Вы бы на самом деле лучше, хотя, если вы не сделали догадываться случайным образом, и вместо этого всегда выбирал середину между low и high. Это binary search algorithm.

+0

вы действительно будете лучше? У вас определенно будет лучший худший случай, но я думаю, что средний случай должен быть примерно одинаковым. – genisage

+0

Пришлось бежать. Я собираюсь попробовать это через 30 минут. – SleepyViking

+0

Это отлично работает !!! Бесконечно благодарен. – SleepyViking

0

Вы хотите добавить min и max переменные для отслеживания текущего диапазона.

min = 1; max = 100 
guess = random.randint(min, max) 
guesses = 1 
while guess != answer: 
    if guess > answer: 
     min = guess+1 
     print(guess) 
    elif guess < answer: 
     max = guess-1 
     print(guess) 
    guess = random.randint(min, max)  
    guesses += 1 
+0

Пришлось бежать. Я собираюсь попробовать это через 30 минут. – SleepyViking

0

Я не знаю, как сформировать, если и Элиф, чтобы убедиться, что это не боян догадаться

Вы должны начать связывать название этих 1, 100 значения. Тогда вы можете их осмысленно назначать.

while guess != answer: 
    if guess > answer: 
     range_max = guess - 1 
     guess = random.randint(range_min, guess) 
     print(guess) 
    elif guess < answer: 
     range_min = guess + 1 
     guess = random.randint(guess, range_max) 
     print(guess) 
    guesses += 1 
0

Вы можете просто создать все догадки сразу, а затем подрезать список догадки догадками, которые больше или меньше:

import random 

print("Welcome to the Number Guessing Game!\n") 
print("We are going to pick a number and have the computer guess it.") 
answer = int(input("Pick a number between 1 and 100:\n")) 
guesses=random.sample(range(1, 101), 100) 
count = 1 
guess=guesses.pop() 
while guess != answer: 
    if guess > answer: 
     guesses=[e for e in guesses if e<guess] 
     print(guess) 
    elif guess < answer: 
     guesses=[e for e in guesses if e>guess] 
     print(guess)  
    guess=guesses.pop()  
    count += 1 
print("\nWhoopy, I guessed correct.\n") 
print("It took me %s guesses to guess %s." % (count, answer)) 

 Смежные вопросы

  • Нет связанных вопросов^_^