2014-09-05 10 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)) 

這是我到目前爲止。我不知道如何形成如果ELIF以確保不存在欺騙猜在while循環期間更新範圍,所以沒有愚蠢的猜測

+1

什麼是'猜測= guess'點? – 2014-09-05 02:45:44

+0

這可能是一段無用的代碼。讓我做一個檢查。 – SleepyViking 2014-09-05 02:51:47

+0

這是一個疏忽。謝謝 – SleepyViking 2014-09-05 02:56:26

回答

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)) 

你會實際上做的更好但如果你沒有隨機猜測,而是總是選擇lowhigh之間的中點。那是binary search algorithm

+0

你真的會做得更好嗎?你一定會遇到更好的最壞情況,但我認爲平均情況應該差不多。 – genisage 2014-09-05 03:08:08

+0

不得已用完。我會在30分鐘內嘗試。 – SleepyViking 2014-09-05 03:13:57

+0

這工作太棒了!太感謝了。 – SleepyViking 2014-09-05 03:46:33

0

您需要添加minmax變量來跟蹤目前的範圍。

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 2014-09-05 03:14:40

0

我不知道如何形成的,如果和elif的,以確保不存在欺騙猜測

你應該將名稱綁定到這些1100值開始。然後你可以有意義地分配給他們。

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))