ошибка с утверждением elif - PullRequest
       3

ошибка с утверждением elif

2 голосов
/ 23 декабря 2011

Это пример из книги по Python, которую я читаю.Когда я пытаюсь запустить программу, возникает ошибка, и когда я проверяю код ошибки, elif выделяется красным.Я программирую на Python 2.5.

import random

secret = random.randint(1, 99)
guess = 0
tries = 0

print "It is a number between 1 and 99. I'll give you six tries. "

while guess != secret and tries < 6:
    guess = input("What's your guess? ")
    if guess < secret:
        print "Too low!"
        elif guess > secret:
            print "Too high"
            tries = tries + 1
            if guess == secret:
                print "Correct! You found my secret!"
                else:
                    print "No more guesses! Better luck next time!"
                    print "The secret number was", secret 

Ответы [ 3 ]

5 голосов
/ 23 декабря 2011

Python чувствителен к отступам.

import random

secret = random.randint(1, 99)
guess = 0
tries = 0

print "It is a number between 1 and 99. I'll give you six tries. "

while guess != secret and tries < 6:
    guess = input("What's your guess? ")
    if guess < secret:
        print "Too low!"
    elif guess > secret:
        print "Too high"
        tries = tries + 1
    elif guess == secret:
        print "Correct! You found my secret!"
    else:
        print "No more guesses! Better luck next time!"
        print "The secret number was", secret 

Edit: я знаю, что в этом все еще есть ошибки, такие как tries = tries + 1, которые должны быть где-то еще в коде. Но эта версия по крайней мере не дает синтаксических ошибок.

1 голос
/ 23 декабря 2011

Есть несколько проблем с этим кодом.

  1. elif и if должны иметь одинаковый уровень отступа.
  2. Вы увеличиваете tries только в слишком высоком регистре.
  3. input() возвращает строку; вы должны преобразовать его в целое число.
  4. После тестирования < и >, == является избыточным.
  5. Поскольку <, > и == охватывают все случаи, вы никогда не достигнете else:

Вот переделка логики:

while guess != secret and tries < 6:
    guess = int(input("What's your guess? "))
    if guess < secret:
        print "Too low!"
    elif guess > secret:
        print "Too high"
    tries = tries + 1

if guess == secret:
    print "Correct! You found my secret!"
else:
    print "No more guesses! Better luck next time!"
    print "The secret number was", secret 
1 голос
/ 23 декабря 2011

Проблема в вашем отступе.

Вместо:

if foo:
    foobar()
    elif bar:
        barbaz()

Должно быть:

if foo:
    foobar()
elif bar:
    barbaz()    

Исправлено, ваш код будет выглядеть следующим образом (обратите внимание, я также исправил вашу else в конце для правильной работы):

import random

secret = random.randint(1, 99)
guess = 0
tries = 0

print "It is a number between 1 and 99. I'll give you six tries. "

while guess != secret:
    if tries < 6:
        guess = input("What's your guess? ")
        if guess < secret:
            print "Too low!"
        elif guess > secret:
            print "Too high"
            tries = tries + 1
        elif guess == secret:
            print "Correct! You found my secret!"
    else:
        print "No more guesses! Better luck next time!"
        print "The secret number was", secret
        break
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...