2013-10-24 4 views
3

У меня есть следующий код, написанный на Python в качестве проекта. Я взял Computer Science в качестве GCSE. Я новичок в этом, поэтому не знаю, как исправить эту ошибку. Когда я печатаю свое первое предположение, например «5», он будет говорить «Слишком высокий». Затем, как только игра будет завершена, он скажет, что ответ равен 7. Это ошибка, которую я постоянно пытался решить, но не смог выполнить. Вот код, который я использовал:Guessing Game Bug?

import random 
numberofGuesses = 0 
print ("I'm thinking of a number between 1 and 10. What is it? You have three guesses.") 

while numberofGuesses < 3: 
    numberofGuesses = numberofGuesses +1 
    randomNumber = (random.randint(1,10)) 
    userInput = 0 
    userInput = input() 
    userInput = int(userInput) 
    if randomNumber > userInput: 
     print("Too Low! Try again") 
    if randomNumber < userInput: 
     print("Too High! Try Again") 

if numberofGuesses == 3: 
    print("Sorry! You lose. The correct number was:",randomNumber) 

if randomNumber == userInput: 
    print("Well Done! Your guess was correct!")` 

Этот код отлично работает, кроме одной ошибки, о которой я упоминал.

+1

Ответ ниже является правильным. Только один nitpick, строка 'userInput = 0' не нужна. – sdasdadas

+0

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

ответ

7

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

randomNumber = (random.randint(1,10)) 

while numberofGuesses < 3: 

    numberofGuesses = numberofGuesses +1 

    userInput = 0 

    userInput = input() 

    userInput = int(userInput) 

    if randomNumber > userInput: 

     print("Too Low! Try again") 

    if randomNumber < userInput: 

     print("Too High! Try Again") 
1

Вы устанавливаете randomNumber на новое случайное число с каждой догадкой - Так что для первого ответа, это может быть 7, а затем сделать предположение, и оно меняется на 3. Чтобы это исправить, переместите randomNumber = (random.randint(1,10)) вне цикла while. Делайте это один раз, а не один раз. Приветствия и удачи в обучении!

3

Там другая проблема, кроме обнуления случайного числа в каждой итерации:

Вы не останавливая цикл, если предположение было правильным. И вы должны увеличить догадку счетчик после оценки угадать, иначе вы не сможете сказать, если кто правильно угадал с третьей попытки:

import random 
numberofGuesses = 0 
randomNumber = (random.randint(1,10)) 
print("I'm thinking of a number between 1 and 10. What is it? You have three guesses.") 

while numberofGuesses < 3: 
    userInput = int(input()) 
    if randomNumber > userInput: 
     print("Too Low! Try again") 
    elif randomNumber < userInput: 
     print("Too High! Try Again") 
    else: # Correct guess! 
     break 
    numberofGuesses = numberofGuesses +1 
else: # Executed only if the while loop is not exited via "break" 
    print("Sorry! You lose. The correct number was:",randomNumber) 

if randomNumber == userInput: 
    print("Well Done! Your guess was correct!")