операторы 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%, но склад мышления каждого отдельно взятого человека — разный. А потому то, что удобно одному, совсем не удобно другому
Источник
Почему не срабатывает условие if else?
все условия отрабатывают. Почему так?
Добавлено через 1 час 11 минут
Как понимаю когда срабатывает length > 0 получается true в условиях и на этом дальнейшие else не срабатывают. Надо как понимаю false вернуть из этого условия если под условие не сработало..только не знаю как это сделать
Добавлено через 20 минут
Или в случае else подусловия написать — return false ?
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Почему не срабатывает условие?
Уважаемые специалисты, подскажите пожалуйста, почему игнорируется оператор условного перехода в 25.
Почему условие не срабатывает?
если имя допусти И .Оно состоит из одной буквы, то strlen($_POST) #include using namespace std; int.
Немного упростил что бы вам было понятней, надеюсь разберетесь.
Добавлено через 3 минуты
В случае совпадения какого-то условия в fail добавляем ту или иную ошибку совмещенным оператором +=
\n добавляет в строку знак переноса
По поводу сразу все выводить в мобильной версии у меня это больше места занимало бы. По поводу 29й строки согласен. Вообще я сырой вариант выложил как только получилось. По поводу функции мне показалось так проще и в ту же систему условий вписывается. Под каждым input вывод ошибки не практичен. А вот идея с цветом бордюра как самого простого варианта отображения корректности ввода неплохая идея. Вспомнилось..на некоторых сайтах галочки справа например появляются напротив поля которое ввели корректно и крестик если нет.
Спасибо за идеи. Думаю кое что внедрю у себя.
Добавлено через 4 минуты
А по поводу замены фунции на условия.. не получилось у меня иначе.мне надо было сначала анализировать пустой ли email..а уж потом проверять что конкретно введено..если бы без проверки на пустое..вопрос бы не возник..функция же решила данный вопрос
Две ошибки:
юзер оставил поле пустым, а оно обязательно к заполнению и
это же поле должно содержать не менее 5 символов
Как юзер поймет в чем он ошибся по цвету бордера?
Источник
Не работает оператор «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 килограмм.
Источник
Не работает конструкция if else в Python
Итак, есть такая конструкция if else:
Ну т.е. условие по моей логике должно проверять, является ли вводимый текст цифрой и можно ли его преобразовать в них. На деле я получаю эту ошибку:
Почему он просто не следует инструкции else, когда видит, что строку нельзя преобразовать в цифры? Если не так, то каким образом следует проверять тип вводимых значений?
1 ответ 1
Конструкция if..else работает. Не работает конверсия текста в число. Точнее, завершается с ошибкой. Функция int() не проверяет тип данных, а делает из входного аргумента целое число. Если такое невозможно, то выполнение программы останавливается с ошибкой.
В зависимости от задачи можно использовать разные варианты.
Например, проверять тип данных:
Не подходит, если x получен вводом данных с клавиатуры. Для подобной ситуации обычно применяют конструкцию try..except :
В этом случае, если конвертация x в целое число невозможна (например, х = «ва»), то ошибка будет отловлена блоком except и будет выполнен код, содержащийся в этом блоке.
PS. Что происходит здесь: if int(first_player):
Интерпретатор пытается конвертировать first_player в целое число. Поскольку с «ва» это невозможно, то до if даже не доходит, так как программа обрывается уже на int() .
А теперь предположим, что переменная first_player равна «0». После int(«0») у нас будет 0, а 0 это то же самое, что False . Поэтому если ввести 0, то будет выполнен блок else , несмотря на то, что конвертация в int была успешна.
Источник