операторы else & elif не работают в Python
Я новичок в Python и в настоящее время изучаю команды потока управления, такие как if , else , etc.
на if оператор работает нормально, но когда я пишу else или elif команды, интерпретатор дает мне синтаксическую ошибку. Я использую Python 3.2.1, и проблема возникает как в собственном интерпретаторе, так и в IDLE.
Я следую, как это дано в книге ‘Байт Python’ . Как видите, elif и else дают Недопустимый Синтаксис.
почему это происходит? Я получаю проблему как в режиме ожидания, так и в интерактивном python. Надеюсь, синтаксис правильный.
8 ответов
похоже, вы вводите пустую строку после текста if заявление. Это сигнал интерактивному компилятору, что вы полностью закончили с блоком, поэтому он не ожидает никакого elif / else блоки. Попробуйте ввести код точно так же, и только нажмите enter после после каждой строки:
проблема заключается в пустой строке, которую вы вводите перед else или elif . Обратите внимание на подсказку. Если это >>> , тогда Python ожидает начала нового оператора. Если это . , тогда он ожидает, что вы продолжите предыдущее заявление.
elif и else должны тут следуйте за концом if block, или Python предположит, что блок закрылся без них.
в вашем коде интерпретатор заканчивает if блок, когда отступ, так что elif и else не связаны с ним. Таким образом, они понимаются как отдельные утверждения, что не имеет смысла.
в общем, попробуйте следовать стиль рекомендации, которые включают удаление излишних пробелов.
в режиме ожидания и интерактивном python вы ввели два последовательных CRLF, которые выводят вас из оператора if. Это проблема простоя или интерактивного python. Это будет нормально, когда вы используете какой-либо редактор, просто убедитесь, что ваш отступ правильный.
убедитесь, что у вас есть право identation. Синтаксис в порядке.
помните, что по умолчанию возвращаемое значение из входной строки, а не целое число. Вы не можете сравнивать строки с booleans как , =>,
кроме того, что ваш отступ-это неправильно. Код не сработает. Я знаю, что вы используете Python 3. что-то. Я использую python 2.7.3 код, который на самом деле будет работать для того, что вы пытаетесь выполнить, таков.
единственное отличие, которое я бы сказал python, что число-это строка символа для работы кода. Если нет, подумает, что это целое число. Когда кто-то запускает код, он вводит строку, а не целое число. Есть много способов изменить этот код, но это простое решение, которое я хотел предоставить, есть еще один способ, о котором я не могу думать, не превращая 23 в строку. Или вы могли бы» 23 » поставить цитаты или вы могли бы использовать функцию int () во входных данных. это преобразует все, что они вводят, и целое число.
Python может генерировать ту же ошибку «недопустимый синтаксис», даже если идент для блока «elif» не соответствует иденту блока » if » (вкладки для первого, пробелы для второго или наоборот).
Источник
Почему не проверяется условие else if
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Почему неправильно проверяется условие?
Что не так? где ошибка?? например исходная матрица matrix такая: 01001 01111 00110 00100.
Не проверяется условие
Задание состоит в том, чтобы вывести на экран фамилии студентов, которые живут в Киеве и имеют.
Не проверяется условие на значение в Edit
Доброго дня Такая ситуация, друзья: В обычный Edit записываю значение из базы данных: .
После остановки потока не проверяется условие
Всем привет.Написал код,скопировать в новую папку упорядоченные файлы из старой папки.Все работает.
Решение
Решение
Вы сразу поймёте в чём дело.
Более привычный вариант записи, которым воспользовались Вы:
(что с Вами и произошло).
С точки зрения компилятора такой вариант вполне корректен, но результат выполнения кода совсем не тот, что Вы задумывали. В итоге, в больших программах такую ошибку отловить будет совсем непросто.
Добавлено через 7 часов 53 минуты
Вот та же самая мысль у Стивена Праты в его замечательной книге «Язык программирования С++. Лекции и упражнения» (2013, 6-е издание):
Хмм. Аргументация понятна. В принципе, логичная позиция. И учитывая, что я совсем новичок, а Вы — эксперт С++, даже соглашусь с Вами.
Непонятно только одно, на кой ляд Прата тогда такой совет даёт? Из каких соображений, если на практике лучше делать, как советуете Вы?
Добавлено через 2 минуты
Я не знаю, сколько лет товарищу, но подозреваю, что он программировал во времена, когда памяти на машинах было мало, а потому выдача предупреждений компилятором являлась непозволительной роскошью. Т.е. начинающему программисту без предупреждений со стороны компилятора такие проблемы «на глаз» увидеть сложно, а потому в те времена такой совет ещё можно было считать актуальным. Но со временем рука набивается и наличие «=» внутри if’а начинает сразу же резать глаза, а потому и без всяких предупреждений проблема видна с одного взгляда.
Нужно хорошо понимать, что «кто может — тот работает, кто не может — тот учит». Поэтому, не взирая на все заслуги авторов книг, не стоит их советы рассматривать как истину последней инстанции. Человек может быть уверен в своих советах на все 100%, но склад мышления каждого отдельно взятого человека — разный. А потому то, что удобно одному, совсем не удобно другому
Источник
не работает программа в pascal. встречено else,а ожидался оператор. Где ошибка? Спасибо.
var a:array [1..n] of integer;
writeln (‘введите эл-ы массива’);
for i:= 1 to n do
for t:= n downto otrez do
for t:=n downto k+1 do
if a[t]=0 then otrez:=t;
for i:= k+1 to otrez-1 do begin
if flag = 2 then begin
writeln (‘умножение =’,a[i]*a[i+1],’ ‘);
writeln (‘сложение =’,a[i]+a[i+1],’ ‘)
программа работает теперь/ но нет условия, я не разбирался в ней
program namefuck;
var a:array [1..n] of integer;
writeln (‘ââåäèòå ýë-û ìàññèâà’);
for i:= 1 to n do
for t:= n downto otrez do
for t:=n downto k+1 do
if a[t]=0 then otrez:=t;
for i:= k+1 to otrez-1 do begin
if flag = 2 then begin
writeln (‘óìíîæåíèå =’,a[i]*a[i+1],’ ‘);
writeln (‘ñëîæåíèå =’,a[i]+a[i+1],’ ‘);
всем спасибо за ответы! вот рабочая программа!
program jghjer;
var a, b, c, d, e: real;
begin
writeln (‘Ведите кол-во пироженых у Маши.’);
read (a);
writeln (‘Введите кол-во пироженых у Кати.’);
read (b);
c:=b/a;
writeln (‘У Маши ‘, a, ‘пироженых, а у Кати в ‘, c,’ раза больше. Сколько пироженых у девочек вместе?’);
d:=a+c;
read (e);
if e=d then
writeln (‘Ответ верен! Молодец!’)
else writeln (‘Ответ не верен. Правильный ответ’, d, ‘.’);
end.
Источник
Не работает оператор «else»
Добрый день, не работает «else» в функции main . В чём проблема?
Помощь в написании контрольных, курсовых и дипломных работ здесь.
бинарный «++»: «Counter» не определяет этот оператор или преобразование к типу приемлемо к встроенному
бинарный «++»: «Counter» не определяет этот оператор или преобразование к типу приемлемо к.
Зачем нужен оператор «int», если «double» может выполнять его функции?
#include #include using namespace std; int main() <
Ошибка «не найден оператор, принимающий правый операнд типа «const std::string» «
Привет. Подчеркивает Name. Как можно обратиться к public string из класса наследника? 1) Класс.
Вообще-то они по умолчанию равны нулю.
Добавлено через 1 минуту
Melvil, Я только что запустил ваш код. Все отлично работает. Просто проверьте ваше условие, так ли вы хотели.
Добавлено через 1 минуту
Понял, всем спасибо.
Добавлено через 39 секунд
Да, сразу на выход идёт, только почему, я так и не понял.
Добавлено через 46 секунд
Я думал, что после if должно выполняться else if
В main() cin.get в конце.
Гена собирается на туристический слет учеников своей школы. В своем классе он был назначен ответственным за палатки. У себя дома он нашел 3 палатки: первая из них весит a1 килограмм и вмещает b1 человек, вторая весит a2 килограмм и вмещает b2 человек, третья весит a3 килограмм и вмещает b3 человек.
В классе Гены K человек. Выясните, может ли он выбрать палатки так, чтобы в них все могли поместиться. При этом учитывайте, что выбранные палатки должны суммарно весить не более W килограмм.
Источник
Встречено Else а ожидался оператор
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Встречено ‘else’, а ожидался оператор
В 44 строчки ошибка: Встречено ‘else’, а ожидался оператор. Помогите разобраться что не так.
Встречено array, а ожидался оператор
ошибка в 26 строке Program lab8_Smirnov_var10_2; uses crt; const n=3; m=4; var.
Встречено ‘array’, а ожидался оператор
Выдает ошибку в строчке c:array of integer; Как её исправить? uses crt; var k.
Ошибка «встречено else, а ожидался оператор»
Пишет в откладке yes но всеровно неправильно
Встречено ‘for’, а ожидался идентификатор
Помогите пожалуйста найти и исправить ошибки в приведенном коде. Написанный от руки код мне дали.
Встречено ‘case’, а ожидался идентификатор
При компиляции пишет: «Встречено ‘case’, а ожидался идентификатор.» В чем может быть ошибка? Const.
Program1.pas(34) : Встречено ‘begin’, а ожидался идентификатор
34 строка uses GraphABC, events; var a,i: integer; B:array of string; // B — это массив для.
Ожидался оператор
У меня такая проблема: пишет на последней строке «ожидался оператор» Вот код: program kBaDPaT;.
Источник