Почему в питоне выдает ошибку на оператор elif

I’m a newbie to Python and currently learning Control Flow commands like if, else, etc.

The if statement is working all fine, but when I write else or elif commands, the interpreter gives me a syntax error. I’m using Python 3.2.1 and the problem is arising in both its native interpreter and IDLE.

I’m following as it is given in the book ‘A Byte Of Python’ . As you can see, elif and else are giving Invalid Syntax.

>> number=23
>> guess = input('Enter a number : ')
>> if guess == number:
>>    print('Congratulations! You guessed it.')
>> elif guess < number:
   **( It is giving me 'Invalid Syntax')**
>> else:
   **( It is also giving me 'Invalid syntax')**

Why is this happening? I’m getting the problem in both IDLE and the interactive python. I hope the syntax is right.

enter image description here

Brad Koch's user avatar

Brad Koch

19k19 gold badges107 silver badges137 bronze badges

asked Aug 11, 2011 at 11:59

jayantr7's user avatar

4

It looks like you are entering a blank line after the body of the if statement. This is a cue to the interactive compiler that you are done with the block entirely, so it is not expecting any elif/else blocks. Try entering the code exactly like this, and only hit enter once after each line:

if guess == number:
    print('Congratulations! You guessed it.')
elif guess < number:
    pass # Your code here
else:
    pass # Your code here

answered Aug 11, 2011 at 12:08

cdhowie's user avatar

cdhowiecdhowie

157k24 gold badges285 silver badges299 bronze badges

4

The problem is the blank line you are typing before the else or elif. Pay attention to the prompt you’re given. If it is >>>, then Python is expecting the start of a new statement. If it is ..., then it’s expecting you to continue a previous statement.

answered Aug 11, 2011 at 12:08

Ned Batchelder's user avatar

Ned BatchelderNed Batchelder

362k73 gold badges560 silver badges658 bronze badges

elif and else must immediately follow the end of the if block, or Python will assume that the block has closed without them.

if 1:
    pass
             <--- this line must be indented at the same level as the `pass`
else:
    pass

In your code, the interpreter finishes the if block when the indentation, so the elif and the else aren’t associated with it. They are thus being understood as standalone statements, which doesn’t make sense.


In general, try to follow the style guidelines, which include removing excessive whitespace.

answered Aug 11, 2011 at 12:04

Katriel's user avatar

KatrielKatriel

120k19 gold badges134 silver badges168 bronze badges

In IDLE and the interactive python, you entered two consecutive CRLF which brings you out of the if statement.
It’s the problem of IDLE or interactive python. It will be ok when you using any kind of editor, just make sure your indentation is right.

answered Aug 11, 2011 at 14:08

Meng's user avatar

MengMeng

532 silver badges5 bronze badges

 if guess == number:
     print ("Good")
 elif guess == 2:
     print ("Bad")
 else:
     print ("Also bad")

Make sure you have your identation right. The syntax is ok.

paxdiablo's user avatar

paxdiablo

848k233 gold badges1569 silver badges1944 bronze badges

answered Aug 11, 2011 at 12:04

Bogdan's user avatar

BogdanBogdan

8,0016 gold badges47 silver badges64 bronze badges

Remember that by default the return value from the input will be a string and not an integer. You cannot compare strings with booleans like <, >, =>, <= (unless you are comparing the length). Therefore your code should look like this:

number = 23
guess = int(input('Enter a number: '))  # The var guess will be an integer

if guess == number:
    print('Congratulations! You guessed it.')

elif guess != number:
    print('Wrong Number')

answered Feb 15, 2017 at 2:42

Nello's user avatar

NelloNello

1414 silver badges15 bronze badges

Besides that your indention is wrong. The code wont work.
I know you are using python 3. something.
I am using python 2.7.3
the code that will actually work for what you trying accomplish is this.

number = str(23)
guess =  input('Enter a number: ')
if guess == number:
   print('Congratulations! You guessed it.')
elif guess < number:
     print('Wrong Number')
elif guess < number:
     print("Wrong Number')

The only difference I would tell python that number is a string of character for the code to work. If not is going to think is a Integer. When somebody runs the code they are inputing a string not an integer. There are many ways of changing this code but this is the easy solution I wanted to provide there is another way that I cant think of without making the 23 into a string. Or you could of «23» put quotations or you could of use int() function in the input. that would transform anything they input into and integer a number.

answered Apr 12, 2013 at 21:39

NOE2270667's user avatar

NOE2270667NOE2270667

551 gold badge4 silver badges12 bronze badges

Python can generate same ‘invalid syntax’ error even if ident for ‘elif’ block not matching to ‘if’ block ident (tabs for the first, spaces for second or vice versa).

answered May 14, 2017 at 3:29

Alfishe's user avatar

AlfisheAlfishe

3,3701 gold badge24 silver badges19 bronze badges

indentation is important in Python. Your if else statement should be within triple arrow (>>>), In Mac python IDLE version 3.7.4 elif statement doesn’t comes with correct indentation when you go on next line you have to shift left to avoid syntax error.

enter image description here

answered Jul 29, 2019 at 2:07

bikram sapkota's user avatar

bikram sapkotabikram sapkota

1,0941 gold badge13 silver badges18 bronze badges

age = int(input("Сколько вам лет?"))

if age < 100 :
    print("понятненько")

    elif
        print ("А?")


  • Вопрос задан

    более двух лет назад

  • 499 просмотров

1. Табы лишние
2. elif не используется без аргументов. Либо используйте else, либо передавайте дополнительное сравнение

Либо

age = int(input("Сколько вам лет?"))
if age < 100 :
    print("понятненько")
else:
    print ("А?")

Либо

age = int(input("Сколько вам лет?"))
if age < 100 :
    print("понятненько")
elif age > 150:
    print ("А?")

Пригласить эксперта

age = int(input("Сколько вам лет?"))
if age < 100:
    print("понятненько")
else:
    print("А?")

Лишние табуляции


  • Показать ещё
    Загружается…

10 июн. 2023, в 04:04

4000 руб./за проект

10 июн. 2023, в 01:43

6500 руб./за проект

10 июн. 2023, в 00:17

5000 руб./за проект

Минуточку внимания

if choice == '1' :
                print(num1, "+", num2, "=", add (num1,num2)
        elif choice == '2' :
                print(num1, "-", num2, "=", subtract (num1,num2)
        elif choice == '3' : 
                print(num1, "*", num2, "=", multiply (num1,num2)
        elif choice == '4' :
                print(num1, "/", num2, "=", divide (num1,num2)
        elif choice == '5' :
                print(num1, "%", num2, "=", remainder (num1,num2)

Problem is in here. if «if» block is going to process, then you have to start with if after then elif. like:

if choice == '1' :
                print(num1, "+", num2, "=", add (num1,num2)
elif choice == '2' :
                print(num1, "-", num2, "=", subtract (num1,num2)
elif choice == '3' : 
                print(num1, "*", num2, "=", multiply (num1,num2)
elif choice == '4' :
                print(num1, "/", num2, "=", divide (num1,num2)
elif choice == '5' :
                print(num1, "%", num2, "=", remainder (num1,num2)

Nothing is more frustrating than encountering a syntax error when you think your code is perfect. In this article, we’re going to dissect the ‘elif’ function in Python, unraveling common syntax errors and their solutions.

In this article we shall deep dive into a particular function exploring the different potential syntax errors that might pop-up while running it. So, with no further ado, let’s dive into debunking the syntax errors in the ‘elif’ function in Python.

  • The Indentation Oversight
  • Using Incorrect Operators
  • The Missing Parenthesis

Also read: Python if else elif Statement

Common ‘elif’ syntax errors in Python include indentation errors, misuse of operators, and missing parentheses. Correcting these errors involves placing ‘if’ and ‘elif’ at the same indent level, using ‘==’ for comparison instead of ‘=’, and ensuring that all parentheses are properly closed. These corrections help to maintain the flow of code execution and prevent syntax errors.


Elif Syntax Error 1: Indentation Oversight

Indents play a crucial role while constructing conditional statements in Python coding. Indentation conveys the relationship between a condition and its subsequent instructions. Let us have a look at the below example to witness how things could derail so swiftly.

ip = int(input("Enter your year of birth:")) 
if ip>2000:
    print("Welcome 2k kid!")
    elif ip<2000:
    print("Wow you’re old!")

Syntax Error Appearing Midway

Syntax Error Appearing Midway

It can be seen that the code was not even completed, but there is a syntax error knocking right at the door! Wonder what went wrong? The indentation! Here, ‘elif’ is indented at the same level as the statements within the ‘if’ block, which is a mistake.

This raises a conflict when the set of instructions following the if are run since elif is also taken for execution but in actual case, it needn’t be. So the solution here is to place both the if and the elif at the same indent such as in the code given below.

if ip>2000:
    print("Welcome 2k kid!")
elif ip<2000:
    print("Wow you’re old!")

Results Displayed With Correct Indentation

Results Displayed With Correct Indentation

Elif Syntax Error 2 – Using Incorrect Operators

Sometimes, a subtle difference in operator usage can lead to syntax errors in an ‘elif’ statement. Let us have a look at how this happens.

The comparison turmoil: Oftentimes one shall use “=” synonymous with “==”, but these two are really distinct and do not serve the same purpose. The former is used to assign a value whilst the latter is used to compare values. There is no point in assigning a value following the if, rather one only needs to compare a value in that place. When this incorrect synonymy enters into an elif code, it is a sure shot recipe for a syntax error. The below example shall explain better.

Syntax Error During Comparison

Syntax Error During Comparison

Python is smart enough to suggest that the coder might want to use “==” in the place of “=” when encountering a “=” in an if code. Nice, ain’t it?

Let us now correct it and get on with the code to see what happens.

Syntax Error Returns

Syntax Error Returns

The missing colon: What? Again? But this time it’s for a different reason. There is a missing ‘:’ following the elif that has caused the syntax error. Rectifying this should make the code work.

Elif Successfully Executed

elif Successfully Executed

Elif Syntax Error 3 – The Missing Parenthesis

While it may seem trivial, missing parentheses can cause serious syntax issues. Sometimes, one can forget to finish what was started (i.e) close those brackets which were opened. Take a look at the code below for a better understanding.

The Missing Paranthesis

The Missing Paranthesis

After adding the missing parenthesis, the code executes flawlessly.

ip = 5675       
if int(ip == 5675):
       print("True")
elif int(ip !=5675):
        print("False")

Code Works With The Parenthesis Closed

Code Works With The Parenthesis Closed

Conclusion

This article has taken you on a journey through the common syntax errors encountered when using Python’s ‘elif’ function. With this knowledge, you should be able to debug such issues more efficiently. Here’s another article that details the usage of bit manipulation and bit masking in Python. There are numerous other enjoyable and equally informative articles in AskPython that might be of great help to those who are looking to level up in Python. Audere est facere!


Reference:

  • https://docs.python.org/3/tutorial/controlflow.html

Уведомления

  • Начало
  • » Python для новичков
  • » Не работают elif и else (питон — 3.11.0)

#1 Ноя. 12, 2022 09:46:59

Не работают elif и else (питон — 3.11.0)

Мне дали задание написать минимальный калькулятор на + и —
но у меня выходит ошибка после elif и else SyntaxError: invalid syntax

код —
# калькулятор в1

what = input(“что делаем? (+, -) : ”)

a = float( input(“введи первое число: ”))
b = float( input(“введи второе число: ”))

if what == “+”:
c = a + b
print(“Получилось: ” + str©)

elif what == “-” :
c = a — b
print(“Получилось: ” + str©)

else: print(“Неверная операция”)

Офлайн

  • Пожаловаться

#2 Ноя. 12, 2022 10:17:45

Не работают elif и else (питон — 3.11.0)

[code python]между этими тегами вставлять код[/code]

Офлайн

  • Пожаловаться

#3 Ноя. 12, 2022 11:46:09

Не работают elif и else (питон — 3.11.0)

xam1816

а можно немного по-точнее?

Офлайн

  • Пожаловаться

#4 Ноя. 12, 2022 12:43:13

Не работают elif и else (питон — 3.11.0)

  
>>> def f():
...     what = input('что делаем? (+, -) : ')
...     
...     a = float( input('введи первое число: '))
...     b = float( input('введи второе число: '))
...     
...     if what == '+':
...         c = a + b
...         print('Получилось: ' + str(c))
...     elif what == '-' :
...         c = a - b
...         print('Получилось: ' + str(c))
...     else:
...         print('Неверная операция')
... 
>>> f()
что делаем? (+, -) : +
введи первое число: 1.5
введи второе число: 3.2
Получилось: 4.7
>>>

Отредактировано py.user.next (Ноя. 12, 2022 12:44:18)

Офлайн

  • Пожаловаться

#5 Ноя. 12, 2022 12:56:57

Не работают elif и else (питон — 3.11.0)

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

Офлайн

  • Пожаловаться

#6 Ноя. 12, 2022 13:14:56

Не работают elif и else (питон — 3.11.0)

Sunstorn
просто не запускается в кмд

Я не “знаток” Питона, но тем не менее:
1. Покажите, что получается в окне
2. В каком-либо IDE запускается?

Проверил в IDLE — работает:
что делаем? (+, -) : +
введи первое число: 1.5
введи второе число: 3.2
Получилось: 4.7

И в cmd нормально работает, попробовал. Проверьте, как задаете путь к файлу.
Попозже скриншот добавлю

Отредактировано Simka (Ноя. 12, 2022 14:20:10)

Офлайн

  • Пожаловаться

#7 Ноя. 12, 2022 14:25:22

Не работают elif и else (питон — 3.11.0)

Sunstorn
не запускается в кмд

Запускается, работает и в cmd

Прикреплённый файлы:
attachment screenshot.850.jpg (171,9 KБ)

Офлайн

  • Пожаловаться

#8 Ноя. 12, 2022 14:55:07

Не работают elif и else (питон — 3.11.0)

У вас нормально, грамотно написанный работающий код. Проверил еще и в PyCharm. Получилось, хотя для меня этот IDE пока слишком сложен.

Прикреплённый файлы:
attachment screenshot.851.jpg (47,5 KБ)

Офлайн

  • Пожаловаться

#10 Ноя. 12, 2022 19:54:32

Не работают elif и else (питон — 3.11.0)

Sunstorn
ничего не выводит

По-моему у вас просто путь к файлу неправильно указан.
Путь к файлу обязательно заключать в кавычки.
python test3.py — это у вас имя файла? В именах папок и файлов для Python убирайте пробелы.
Попробуйте так:
C:UsersSunShine>python “C:UsersSunShineDesktoppython test3.py”
Здесь я выделил путь к файлу (если у вашего файла такой). Вообще-то чтобы наверняка — скопируйте путь к файлу из свойств файла и вставляйте — обязательно в кавычках- после того что вам в начале строки пишется.
Еще смущает начало строк: C:UsersSunShineDesktoppy. Разве Python у вас не в директории диска С (где ProgramFiles и т.д.), а на рабочем столе хранится?

Отредактировано Simka (Ноя. 12, 2022 19:56:03)

Офлайн

  • Пожаловаться

  • Начало
  • » Python для новичков
  • » Не работают elif и else (питон — 3.11.0)

Like this post? Please share to your friends:
  • Почему word пишет ошибка открытия файла
  • Почему word перестал подчеркивать ошибки
  • Почему word не видит ошибки
  • Почему word 2010 не подчеркивает ошибки
  • Почему wo mic выдает ошибку