2017-02-18 7 views
1

Хорошо, я работаю над проектом для класса, и я застрял на этой логической ошибке. Я заметил остальные оригинальные ошибки после того, как исправил их в своем коде ... и я чувствую, что знаю, где логическая ошибка. Я просто не знаю, как это исправить. Могу ли я получить помощь?python 3 логическая ошибка заставила меня все испортить

Заранее спасибо.

import random 

def display_title(): 
    print("Guess the number!") 
    print() 

def set_limit(): 
    print("Enter the upper limit for the range of numbers: ") 
    limit = int(input()) 
    return limit 

def count(): ## had to add count being defined as below it was unrecognized by python. 
    count +=1 

def play_game(limit): 
    global count 
    number = random.randint(1, limit) 
    print("I'm thinking of a number from 1 to " + str(limit) + "\n") 
    while True: 
     guess = int(input("Your guess: ")) 
     if guess < number: 
      print("Too low. ") 
      count ## See def count 
     elif guess >= number: 
      print("Too high. ") 
      count ## See def count 
     elif guess == number: ## Pretty sure my logic error is here <---- 
      print("You guessed it in " + str(count) + " tries.\n") 
      return 

def main(): ## syntax error, no : was here 
    display_title() 
    again = "y" 
    while again.lower() == "y": 
     limit = set_limit() 
     play_game(limit) ## limit wasn't set inside, causing a missing positional argument 
     again = input("Play again? (y/n): ") 
     print() 
    print("Bye!") 

if __name__ == "__main__": 
    main() 

ответ

0
  • Для печати пустой строки вам не нужно использовать print().
  • Вы можете запросить у пользователя input не нужно иметь отдельное заявление print.
  • count может быть определен в пределах play_game, и он должен быть инициализирован до 1, а не по умолчанию 0, потому что даже если пользователь догадывается с первой попытки, у них было 1 догадка.
  • elif guess >= number: должен быть изменен на elif guess > number:
  • Если первый символ answer преобразуется в нижний регистр равно y вы можете вызвать main() снова перезапустить игру.

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

import random 

def display_title(): 
    print("Guess the number!\n") 

def set_limit(): 
    limit = int(input("Enter the upper limit for the range of numbers: ")) 
    return limit 

def play_game(limit): 
    count = 1 
    number = random.randint(1, limit) 
    print("I'm thinking of a number from 1 to " + str(limit) + "\n") 
    while True: 
    guess = int(input("Your guess: ")) 
    if guess < number: 
     print("Too low. ") 
     count += 1 
    elif guess > number: 
     print("Too high. ") 
     count += 1 
    elif guess == number: 
     print("You guessed it in " + str(count) + " tries.\n") 
     break 

def main(): 
    display_title() 
    limit = set_limit() 
    play_game(limit) 
    again = input("Play again? (y/n): ") 
    if again[0].lower() == 'y': 
    main() 
    else: 
    print("Bye!") 

if __name__ == "__main__": 
    main() 

попробовать это here!

+0

Большое спасибо за помощь и объяснение !!! –

1

У меня есть идея. Попробуйте изменить>> знак 3 строки выше, чтобы просто> номер. Потому что в противном случае он никогда не попадет в «if guess == number», потому что он будет останавливаться на «if guess> = number» каждый раз, даже если предположение верно.

Это потому, что> = означает больше или равно. Я действительно надеюсь, что это поможет.

+0

Спасибо !! Говорят, как шарм! –

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