Почему не работает оператор else

операторы 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;.

Источник

Читайте также:  Отремонтировать ручку для коляски
Оцените статью