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.
Brad Koch
18.7k18 gold badges108 silver badges136 bronze badges
asked Aug 11, 2011 at 11:59
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
cdhowiecdhowie
152k24 gold badges283 silver badges295 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 BatchelderNed Batchelder
358k72 gold badges559 silver badges655 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
KatrielKatriel
118k19 gold badges134 silver badges167 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
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
838k230 gold badges1561 silver badges1929 bronze badges
answered Aug 11, 2011 at 12:04
BogdanBogdan
7,9116 gold badges46 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
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
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
AlfisheAlfishe
3,2501 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.
answered Jul 29, 2019 at 2:07
bikram sapkotabikram sapkota
1,0641 gold badge13 silver badges18 bronze badges
number = 23
guess = int(input('Введите целое число : '))
if guess == number :
print('Поздравляю, вы угадали, ') #Начало нового блока
print('хотя и не выиграли никакого приза!)') #Конец нового блока
elif guess < number :
print('Нет, загаданное число немного больше этого.') #Ещё один блок
#Внутри блока, вы можете выполнять всё, что угодно...
else
print('Нет, загаданное число немного меньше этого.')
#Чтобы попасть сюда guess должно быть больше, чем number
print('Завершено')
Текст ошибки:
File «C:UsersUserDesktopPythonif.py», line 6
elif guess < number :
^
SyntaxError: invalid syntax
Что не так?
-
Вопрос заданболее двух лет назад
-
354 просмотра
Отступы при таких операторах должны быть одинаковыми:
if cond:
...
elif cond:
...
else:
...
Пригласить эксперта
number = 23
guess = int(input('Введите целое число : '))
if guess == number :
print('Поздравляю, вы угадали, ') #Начало нового блока
print('хотя и не выиграли никакого приза!)') #Конец нового блока
elif guess < number :
print('Нет, загаданное число немного больше этого.') #Ещё один блок
#Внутри блока, вы можете выполнять всё, что угодно...
else:
print('Нет, загаданное число немного меньше этого.')
#Чтобы попасть сюда guess должно быть больше, чем number
print('Завершено')
-
Показать ещё
Загружается…
09 февр. 2023, в 23:14
1500 руб./за проект
09 февр. 2023, в 23:00
1500 руб./за проект
09 февр. 2023, в 22:06
500 руб./за проект
Минуточку внимания
The if
Statement and Conditionals
if
in Python means: only run the rest of this code once, if the condition evaluates to True
. Don’t run the rest of the code at all if it’s not.
Anatomy of an if
statement: Start with the if
keyword, followed by a boolean value, an expression that evaluates to True
, or a value with “Truthiness”. Add a colon :
, a new line, and write the code that will run if the statement is True
under a level of indentation.
Remember, just like with functions, we know that code is associated with an if
statement by it’s level of indentation. All the lines indented under the if
statement will run if it evaluates to True
.
>>> if 3 < 5:
... print("Hello, World!")
...
Hello, World!
Remember, your if
statements only run if the expression in them evaluates to True
and just like with functions, you’ll need to enter an extra space in the REPL to run it.
Using not
With if
Statements
If you only want your code to run if the expression is False
, use the not
keyword.
>>> b = False
>>> if not b:
... print("Negation in action!")
...
Negation in action!
if
Statements and Truthiness
if
statements also work with items that have a “truthiness” to them.
For example:
- The number 0 is False-y, any other number (including negatives) is Truth-y
- An empty
list
,set
,tuple
ordict
is False-y - Any of those structures with items in it is Truth-y
>>> message = "Hi there."
>>> a = 0
>>> if a: # 0 is False-y
... print(message)
...
>>> b = -1
>>> if b: # -1 is Truth-y
... print(message)
...
Hi there.
>>> c = []
>>> if c: # Empty list is False-y
... print(message)
...
>>> d = [1, 2, 3]
>>> if d: # List with items is Truth-y
... print(message)
...
Hi there.
if
Statements and Functions
You can easily declare if
statements in your functions, you just need to mindful of the level of indentation. Notice how the code belonging to the if
statement is indented at two levels.
>>> def modify_name(name):
... if len(name) < 5:
... return name.upper()
... else:
... return name.lower()
...
>>> name = "Nina"
>>> modify_name(name)
'NINA'
Nested if
Statements
Using the same technique, you can also nest your if
statements.
>>> def num_info(num):
... if num > 0:
... print("Greater than zero")
... if num > 10:
... print("Also greater than 10.")
...
>>> num_info(1)
Greater than zero
>>> num_info(15)
Greater than zero
Also greater than 10.
How Not To Use if
Statements
Remember, comparisons in Python evaluate to True
or False
. With conditional statements, we check for that value implicitly. In Python, we do not want to compare to True
or False
with ==
.
Warning — pay attention, because the code below shows what you shouldn’t do.
# Warning: Don't do this!
>>> if (3 < 5) == True: # Warning: Don't do this!
... print("Hello")
...
Hello
# Warning: Don't do this!
>>> if (3 < 5) is True: # Warning: Don't do this!
... print("Hello")
...
Hello
Do this instead:
>>> if 3 < 5:
... print("Hello")
...
Hello
If we want to explicitly check if the value is explicitly set to True
or False
, we can use the is
keyword.
>>> a = True # a is set to True
>>> b = [1, 2, 3] # b is a list with items, is "truthy"
>>>
>>> if a and b: # this is True, a is True, b is "truthy"
... print("Hello")
...
Hello
>>> if a is True: # we can explicitly check if a is True
... print("Hello")
...
Hello
>>> if b is True: # b does not contain the actual value of True.
... print("Hello")
...
>>>
else
The else
statement is what you want to run if and only if your if
statement wasn’t triggered.
An else
statement is part of an if
statement. If your if
statement ran, your else
statement will never run.
>>> a = True
>>> if a:
... print("Hello")
... else:
... print("Goodbye")
...
Hello
And vice-versa.
>>> a = False
>>> if a:
... print("Hello")
... else:
... print("Goodbye")
...
Goodbye
In the REPL it must be written on the line after your last line of indented code. In Python code in a file, there can’t be any other code between the if
and the else
.
You’ll see SyntaxError: invalid syntax
if you try to write an else
statement on its own, or put extra code between the if
and the else
in a Python file.
>>> if a:
... print("Hello")
...
Hello
>>> else:
File "<stdin>", line 1
else:
^
SyntaxError: invalid syntax
elif
Means Else, If.
elif
means else if. It means, if this if
statement isn’t considered True
, try this instead.
You can have as many elif
statements in your code as you want. They get evaluated in the order that they’re declared until Python finds one that’s True
. That runs the code defined in that elif
, and skips the rest.
>>> a = 5
>>> if a > 10:
... print("Greater than 10")
... elif a < 10:
... print("Less than 10")
... elif a < 20:
... print("Less than 20")
... else:
... print("Dunno")
...
Less than 10
Маниго 0 / 0 / 0 Регистрация: 22.08.2015 Сообщений: 4 |
||||
1 |
||||
22.08.2015, 16:11. Показов 13812. Ответов 9 Метки нет (Все метки)
Приветствую всех, возникла вот такая проблемка, взялся поучить Python, поставил версию 3.4.3, из литературы выбрал Саммерфилд — Программирование на Python 3.2009. Все было прекрасно и понятно пока не столкнулся вот с такой проблемой:
SyntaxError: invalid syntax Реально не понимаю в чем проблема, все по книге, отступы автоматом ставит. Помогите советом.
__________________
0 |
Programming Эксперт 94731 / 64177 / 26122 Регистрация: 12.04.2006 Сообщений: 116,782 |
22.08.2015, 16:11 |
Ответы с готовыми решениями: В чем ошибка? Ругается на elif Не срабатывает elif Elif в Python 3.5.2 if pH==7.0: #ifdef, #elif defined и #else 9 |
2739 / 2342 / 620 Регистрация: 19.03.2012 Сообщений: 8,832 |
|
22.08.2015, 16:35 |
2 |
отступы автоматом ставит это это автоматом ставит отступы?
все по книге Если бы все по книге было, то все работало бы.
0 |
Marinero Модератор 2792 / 2035 / 682 Регистрация: 02.03.2015 Сообщений: 6,509 |
||||
22.08.2015, 16:37 |
3 |
|||
Ну вот если бы Вы и сами код нормально отформатировали(поместив его в теги [PYTHОN][/PYTHОN]), то и мы бы посмотрели
0 |
alex925 2739 / 2342 / 620 Регистрация: 19.03.2012 Сообщений: 8,832 |
||||
22.08.2015, 16:38 |
4 |
|||
0 |
Маниго 0 / 0 / 0 Регистрация: 22.08.2015 Сообщений: 4 |
||||
22.08.2015, 16:43 [ТС] |
5 |
|||
у меня он выглядит так
0 |
alex925 2739 / 2342 / 620 Регистрация: 19.03.2012 Сообщений: 8,832 |
||||
22.08.2015, 16:46 |
6 |
|||
это это автоматом ставит отступы? «кто это» имелось ввиду, опписался
у меня он выглядит так Вот из-за того, что он у тебя так выглядит, ничего и не работает
у меня он выглядит так А должен так
0 |
0 / 0 / 0 Регистрация: 22.08.2015 Сообщений: 4 |
|
22.08.2015, 16:48 [ТС] |
7 |
Python 3.4.3 Shell
0 |
2739 / 2342 / 620 Регистрация: 19.03.2012 Сообщений: 8,832 |
|
22.08.2015, 16:51 |
8 |
В этом редакторе Это не редактор, а интерпретатор запущенный в интерактивном режиме Ну, а вообще, то что ты вбиваешь код в интерактивном режиме мало, что меняет, отступы все равно тебе нужно точно также ставить. Так что смотри на то, что я тебе кинул и построчно вбивай также и все будет работать.
0 |
0 / 0 / 0 Регистрация: 22.08.2015 Сообщений: 4 |
|
22.08.2015, 16:54 [ТС] |
9 |
Сделал, через backspace, по другому не получается, все работает, Благодарю!
0 |
71 / 67 / 6 Регистрация: 08.08.2013 Сообщений: 286 Записей в блоге: 8 |
|
22.08.2015, 20:05 |
10 |
Скачай pycharm и радуйся жизни.
0 |
IT_Exp Эксперт 87844 / 49110 / 22898 Регистрация: 17.06.2006 Сообщений: 92,604 |
22.08.2015, 20:05 |
Помогаю со студенческими работами здесь Python 3.2 оператор if else elif Директивы #if, #elif, #else и #endif в C# Покажите на примерах, разъясните, как работают с директивами #if,… Не работает оператор if/elif Как сделать if … elif … else … ? Словарь с функциями вместо elif elif, invalid syntax, math Искать еще темы с ответами Или воспользуйтесь поиском по форуму: 10 |
Уведомления
- Начало
- » Python для новичков
- » Чайник и оператор elif
#1 Апрель 19, 2009 20:37:28
Чайник и оператор elif
учу пайтон по пособию на одном образовательном сайте.
так вот только начал но уже ничего не ясно.
1. в примерах на сайте print печатается через кавычки, а в 3м пайтоне print работает через скобки. это что, из-за разных версий так? пособие для более старой версии пайтона?
2. есть пример:
if a < 0:
s = -1
elif a == 0:
s = 0
else:
s = 1
так вот elif у меня не работает, нет такой функции. SyntaxError: invalid syntax и elif подсвечивает красным цветом.
буду благодарен если направите в нужное русло!
Офлайн
- Пожаловаться
#2 Апрель 19, 2009 21:20:00
Чайник и оператор elif
Да, в версии 3 print — функция. Используй 2ю ветку. Что за версия Python? В 2.5 точно есть
Офлайн
- Пожаловаться
#3 Апрель 20, 2009 00:36:18
Чайник и оператор elif
версия 3
во второй работает с кавычками.
а что с elif делать не подскажете?
Офлайн
- Пожаловаться
#4 Апрель 20, 2009 01:16:58
Чайник и оператор elif
На отступы посмотреть, например. Тут что-то совсем глупое. Все должно работать.
Офлайн
- Пожаловаться
#5 Апрель 20, 2009 10:15:59
Чайник и оператор elif
ладно, начну с самого простого.
IDLE 2.6.2
>>> a=1
>>> b=2
>>> c=b+a
>>> print c
3
>>> if a>b:
c=a
else:
SyntaxError: invalid syntax
>>> else
SyntaxError: invalid syntax
>>> else c=b
SyntaxError: invalid syntax
>>> else: c=b
SyntaxError: invalid syntax
>>> else c = b
SyntaxError: invalid syntax
>>>
что я делаю не так?! 0_о
Офлайн
- Пожаловаться
#6 Апрель 20, 2009 10:34:34
Чайник и оператор elif
delias
Вы что-нибудь про отступы слышали? В питоне без них никак. Блоки кода (begin-end, фигурные скобки) в питоне обозначаются отступами
т.е.
if a>b:
c = a
else:
# anything
Офлайн
- Пожаловаться
#7 Апрель 20, 2009 11:02:50
Чайник и оператор elif
delias
ладно, начну с самого простого.IDLE 2.6.2
>>> a=1
>>> b=2
>>> c=b+a
>>> print c
3>>> if a>b:
c=a
else:SyntaxError: invalid syntax
>>> else
SyntaxError: invalid syntax
>>> else c=b
SyntaxError: invalid syntax
>>> else: c=b
SyntaxError: invalid syntax
>>> else c = b
SyntaxError: invalid syntax
>>>что я делаю не так?! 0_о
перед else отступ не нужен, после else: надо написать оператор
>>>if a > b:
c = a
else:
a = 9
Офлайн
- Пожаловаться
#8 Апрель 20, 2009 12:06:06
Чайник и оператор elif
спасибо большое, про отступы действительно упустил
Офлайн
- Пожаловаться
#9 Март 10, 2014 12:09:53
Чайник и оператор elif
Столкнулся с той же проблемой что и топикстартер и с отступами все в порядке было. Потом углядел что после выражения символ двоеточия забыл поставить)
Офлайн
- Пожаловаться
- Начало
- » Python для новичков
- » Чайник и оператор elif
На чтение 6 мин. Просмотров 36.2k. Опубликовано 03.12.2016
Набрел на занятную статью о частых ошибках на Python у начинающих программистов. Мне кажется, она полезна будет для тех, кто перешел с другого языка или только планирует переход. Далее идет перевод.
Поиск решения проблем с сообщениями об ошибках, выдаваемых при запуске программ в Python, может доставлять трудности, если вы изучаете этот язык программирования впервые. Далее будут описаны наиболее частые ошибки, встречающиеся при запуске программ и вызывающие сбой при выполнении.
1) Пропущено двоеточие в конце строки после управляющих конструкций типа if, elif, else, for, while, class, or def, что приведет к ошибке типа SyntaxError: invalid syntax
Пример кода:
if spam == 42 print(‘Hello!’) |
2) Использование = вместо == приводит к ошибке типа SyntaxError: invalid syntax
Символ = является оператором присваивания, а символ == — оператором сравнения.
Эта ошибка возникает в следующем коде:
if spam = 42: print(‘Hello!’) |
3) Использование неправильного количества отступов.
Возникнет ошибка типа IndentationError: unexpected indent, IndentationError: unindent does not match any outer indentation level и IndentationError: expected an indented block
Нужно помнить, что отступ необходимо делать только после :, а по завершению блока обязательно вернуться к прежнему количеству отступов.
Пример ошибки:
print(‘Hello!’) print(‘Howdy!’) |
и тут
if spam == 42: print(‘Hello!’) print(‘Howdy!’) |
и тут
if spam == 42: print(‘Hello!’) |
4) Неиспользование функции len() в объявлении цикла for для списков list
Возникнет ошибка типа TypeError: ‘list’ object cannot be interpreted as an integer
Часто возникает желание пройти в цикле по индексам элементов списка или строки, при этом требуется использовать функцию range(). Нужно помнить, что необходимо получить значение len(someList) вместо самого значения someList
Ошибка возникнет в следующем коде:
spam = [‘cat’, ‘dog’, ‘mouse’] for i in range(spam): print(spam[i]) |
Некоторые читатели (оригинальной статьи) заметили, что лучше использовать конструкцию типа for i in spam:, чем написанный код выше. Но, когда нужно получить номер итерации в цикле, использование вышенаписанного кода намного полезнее, чем получение значения списка.
От переводчика: Иногда можно ошибочно перепутать метод shape с len() для определения размера списка. При этом возникает ошибка типа ‘list’ object has no attribute ‘shape’
5) Попытка изменить часть строки. (Ошибка типа TypeError: ‘str’ object does not support item assignment)
Строки имеют неизменяемый тип. Эта ошибка произойдет в следующем коде:
spam = ‘I have a pet cat.’ spam[13] = ‘r’ print(spam) |
А ожидается такое результат:
spam = ‘I have a pet cat.’ spam = spam[:13] + ‘r’ + spam[14:] print(spam) |
От переводчика: Подробней про неизменяемость строк можно прочитать тут
6) Попытка соединить нестроковую переменную со строкой приведет к ошибке TypeError: Can’t convert ‘int’ object to str implicitly
Такая ошибка произойдет тут:
numEggs = 12 print(‘I have ‘ + numEggs + ‘ eggs.’) |
А нужно так:
numEggs = 12 print(‘I have ‘ + str(numEggs) + ‘ eggs.’) |
или так:
numEggs = 12 print(‘I have %s eggs.’ % (numEggs)) |
От переводчика: еще удобно так
print(‘This {1} xorosho{0}’.format(‘!’,‘is’)) # This is xorosho! |
7) Пропущена одинарная кавычка в начале или конце строковой переменной (Ошибка SyntaxError: EOL while scanning string literal)
Такая ошибка произойдет в следующем коде:
или в этом:
или в этом:
myName = ‘Al’ print(‘My name is ‘ + myName + . How are you?‘) |
Опечатка в названии переменной или функции (Ошибка типа NameError: name ‘fooba’ is not defined)
Такая ошибка может встретиться в таком коде:
foobar = ‘Al’ print(‘My name is ‘ + fooba) |
или в этом:
или в этом:
От переводчика: очень часто при написании возникают ошибки типа NameError: name ‘true’ is not defined и NameError: name ‘false’ is not defined, связанные с тем, что нужно писать булевные значения с большой буквы True и False
9) Ошибка при обращении к методу объекта. (Ошибка типа AttributeError: ‘str’ object has no attribute ‘lowerr’)
Такая ошибка произойдет в следующем коде:
spam = ‘THIS IS IN LOWERCASE.’ spam = spam.lowerr() |
10) Попытка использовать индекс вне границ списка. (Ошибка типа IndexError: list index out of range)
Ошибка возникает в следующем коде:
spam = [‘cat’, ‘dog’, ‘mouse’] print(spam[6]) |
11) Использование несуществующих ключей для словаря. (Ошибка типа KeyError: ‘spam’)
Ошибка произойдет в следующем коде:
spam = {‘cat’: ‘Zophie’, ‘dog’: ‘Basil’, ‘mouse’: ‘Whiskers’} print(‘The name of my pet zebra is ‘ + spam[‘zebra’]) |
12) Использование зарезервированных в питоне ключевых слов в качестве имени для переменной. (Ошибка типа SyntaxError: invalid syntax)
Ключевые слова (зарезервированные) в питоне невозможно использовать как переменные. Пример в следующем коде:
Python 3 имеет следующие ключевые слова: and, as, assert, break, class, continue, def, del, elif, else, except, False, finally, for, from, global, if, import, in, is, lambda, None, nonlocal, not, or, pass, raise, return, True, try, while, with, yield
13) Использование операторов присваивания для новой неинициализированной переменной. (Ошибка типа NameError: name ‘foobar’ is not defined)
Не стоит надеяться, что переменные инициализируются при старте каким-нибудь значением типа 0 или пустой строкой.
Эта ошибка встречается в следующем коде:
spam = 0 spam += 42 eggs += 42 |
Операторы присваивания типа spam += 1 эквивалентны spam = spam + 1. Это означает, что переменная spam уже должна иметь какое-то значение до.
14) Использование локальных переменных, совпадающих по названию с глобальными переменными, в функции до инициализации локальной переменной. (Ошибка типа UnboundLocalError: local variable ‘foobar’ referenced before assignment)
Использование локальной переменной в функции с именем, совпадающим с глобальной переменной, опасно. Правило: если переменная в функции использовалась с оператором присвоения, это всегда локальная переменная для этой функции. В противном случае, это глобальная переменная внутри функции.
Это означает, что нельзя использовать глобальную переменную (с одинаковым именем как у локальной переменной) в функции до ее определения.
Код с появлением этой ошибки такой:
someVar = 42 def myFunction(): print(someVar) someVar = 100 myFunction() |
15) Попытка использовать range() для создания списка целых чисел. (Ошибка типа TypeError: ‘range’ object does not support item assignment)
Иногда хочется получить список целых чисел по порядку, поэтому range() кажется подходящей функцией для генерации такого списка. Тем не менее нужно помнить, что range() возвращает range object, а не список целых чисел.
Пример ошибки в следующем коде:
spam = range(10) spam[4] = —1 |
Кстати, это работает в Python 2, так как range() возвращает список. Однако попытка выполнить код в Python 3 приведет к описанной ошибке.
Нужно сделать так:
spam = list(range(10)) spam[4] = —1 |
16) Отсутствие операторов инкремента ++ или декремента —. (Ошибка типа SyntaxError: invalid syntax)
Если вы пришли из другого языка типа C++, Java или PHP, вы можете попробовать использовать операторы ++ или — для переменных. В Питоне таких операторов нет.
Ошибка возникает в следующем коде:
Нужно написать так:
17) Как заметил читатель Luciano в комментариях к статье (оригинальной), также часто забывают добавлять self как первый параметр для метода. (Ошибка типа TypeError: myMethod() takes no arguments (1 given)
Эта ошибка возникает в следующем коде:
class Foo(): def myMethod(): print(‘Hello!’) a = Foo() a.myMethod() |
Краткое объяснение различных сообщений об ошибках представлено в Appendix D of the «Invent with Python» book.
Полезные материалы
Оригинал статьи
Наиболее частые проблемы Python и решения (перевод)
Вещи, о которых следует помнить, программируя на Python
Python 3 для начинающих: Часто задаваемые вопросы