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

операторы 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 » (вкладки для первого, пробелы для второго или наоборот).

Источник

Оператор if else в Python

При изучении программирования в качестве практики часто приходится создавать «идеальные программы», которые в реальном мире работают совсем не так.

Иногда, например, нужно исполнить ряд инструкций только в том случае, если соблюдаются определенные условия. Для обработки таких ситуаций в языках программирования есть операторы управления. В дополнение к управлению потоком выполнения программы эти операторы используются для создания циклов или пропуска инструкций, когда какое-то условие истинно.

Читайте также:  Можно ли взять декрет мужу если жена не работает

Операторы управления бывают следующих типов:

  1. Оператор-выражение if
  2. Оператор-выражение if-else
  3. Оператор-выражение if-elif-else
  4. Цикл while
  5. Цикл for
  6. Оператор-выражение break
  7. Оператор-выражение continue

В этом уроке речь пойдет о первых трех операторах управления.

Оператор if

Синтаксис оператора if следующий:

Первая строчка оператора, то есть if condition : — это условие if, а condition — это логическое выражение, которое возвращает True или False . В следующей строке блок инструкций. Блок представляет собой одну или больше инструкций. Если он идет следом за условием if, такой блок называют блоком if.

Стоит обратить внимание, что у каждой инструкции в блоке if одинаковый отступ от слова if. Многие языки, такие как C, C++, Java и PHP, используют фигурные скобки ( <> ), чтобы определять начало и конец блока, но в Python используются отступы.

Каждая инструкция должна содержать одинаковое количество пробелов. В противном случае программа вернет синтаксическую ошибку. В документации Python рекомендуется делать отступ на 4 пробела. Такая рекомендация актуальная для и для этого .

Как это работает:

Когда выполняется инструкция if, проверяется условие. Если условие истинно, тогда все инструкции в блоке if выполняются. Но если условие оказывается неверным, тогда все инструкции внутри этого блока пропускаются.

Инструкции следом за условием if, у которых нет отступов, не относятся к блоку if. Например, — это не часть блока if, поэтому она будет выполнена в любом случае.

Стоит обратить внимание, что во втором случае, когда условие не истинно, инструкция внутри блока if пропускается. В этом примере блок if состоит из одной инструкции, но их может быть сколько угодно, главное — делать отступы.

Рассмотрим следующий код:

Здесь важно обратить внимание, что только выражения на строках 3, 4 и 5 относятся к блоку if. Следовательно, они будут исполнены только в том случае, когда условие if будет истинно. Но инструкции на строках 7 и 8 выполнятся в любом случае.

Консоль Python реагирует иначе при использовании операторов управления прямо в ней. Стоит напомнить, что для разбития выражения на несколько строк используется оператор продолжение ( \ ). Но в этом нет необходимости с операторами управления. Интерпретатор Python автоматически активирует мультистрочный режим, если нажать Enter после условия if. Например:

После нажатия Enter на строке с условием if командная строка преобразуется с >>> на … . Консоль Python показывает … для многострочных инструкций. Это значит, что начатая инструкция все еще не закончена.

Чтобы закончить инструкцию if, нужно добавить еще одну инструкцию в блок if:

Python не будет автоматически добавлять отступ. Это нужно сделать самостоятельно. Закончив ввод инструкции, нужно дважды нажать Enter, чтобы исполнить инструкцию. После этого консоль вернется к изначальному состоянию.

Все эти программы заканчиваются внезапно, не показывая ничего, если условие не истинно. Но в большинстве случаев пользователю нужно показать хотя бы что-нибудь. Для этого используется оператор-выражение if-else.

Оператор if-else

Оператор if-else исполняет одну порцию инструкций, если условие истинно и другое — если нет. Таким образом этот оператор предлагает два направления действий. Синтаксис оператора if-else следующий:

Как это работает:

Когда оператор if-else исполняется, условие проверяется, и если оно возвращает True , когда инструкции в блоке if исполняются. Но если возвращается False , тогда исполняются инструкции из блока else.

Пример 1: программа для расчета площади и длины окружности круга.

Теперь программа показывает корректный ответ пользователю, даже если условие if не является истинным. Это и требуется.

В инструкциях if-else нужно следить за тем, чтобы условия if и else находились на одном уровне. В противном случае программа вернет синтаксическую ошибку. Например:

Читайте также:  Nissan p11 не работают поворотники

Если попробовать запустить эту программу, то появится следующая ошибка:

Для исправления проблемы нужно вертикально выровнять if и else

Пример 2: программа для проверки пароля, введенного пользователем.

Вложенные операторы if и if-else

Использовать операторы if-else можно внутри других инструкций if или if-else. Это лучше объяснить на примерах:

Оператор if внутри другого if-оператора

Пример 1: программа, проверяющая, имеет ли студент право на кредит.

Здесь оператор if используется внутри другого if-оператора. Внутренним называют вложенный оператором if. В этом случае внутренний оператор if относится к внешнему блоку if, а у внутреннего блока if есть только одна инструкция, которая выводит “Поздравляем, вам выдан кредит”.

Как это работает:

Сначала оценивается внешнее условие if, то есть per_grad > 70 . Если оно возвращает True , тогда управление программой происходит внутри внешнего блока if. Там же проверяется условие gre_score > 150 . Если оно возвращает True , тогда в консоль выводится «Congratulations you are eligible for loan» . Если False , тогда программа выходит из инструкции if-else, чтобы исполнить следующие операции. Ничего при этом не выводится в консоль.

При этом если внешнее условие возвращает False , тогда выполнение инструкций внутри блока if пропускается, и контроль переходит к блоку else (9 строчка).

У этой программы есть одна маленькая проблема. Запустите ее заново и введите gre_score меньше чем 150 , а per_grade — больше 70 :

Программа не выводит ничего. Причина в том, что у вложенного оператора if нет условия else. Добавим его в следующем примере.

Пример 2: инструкция if-else внутри другого оператора if.

Как это работает:

Эта программа работает та же, как и предыдущая. Единственное отличие — у вложенного оператора if теперь есть инструкция else. Теперь если ввести балл GRE меньше, чем 150, программа выведет: “У вас низкий кредитный лимит”

При создании вложенных операторов if или if-else, всегда важно помнить об отступах. В противном случае выйдет синтаксическая ошибка.

Оператор if-else внутри условия else

Пример 3: программа для определения оценки студента на основе введенных баллов.

Как это работает:

Когда управление программой переходит к оператору if-else, проверяется условие на строке 3 ( score >= 90 ). Если оно возвращает True , в консоль выводится “Отлично! Ваша оценка А”. Если значение неверное, управление переходит к условию else на 5 строке. Теперь проверяется условие score >= 80 (6 строка). Если оно верное, тогда в консоли выводится “Здорово! Ваша оценка — B”.

В противном случае управление программой переходит к условию else на 8 строке. И здесь снова имеется вложенный оператор if-else. Проверяется условие ( score >= 70 ). Если оно истинно, тогда в консоль выводится “Хорошо! Ваша оценка — C”. В противном случае управление переходит к блоку else на 11 строке. В конце концов, проверяется условие ( score >= 60 ). Если оно возвращает True , тогда в консоль выводится “Ваша оценка — D. Стоит повторить материал.” Если же False , тогда в консоли будет “Вы не сдали экзамен”. На этом этапе управление переходит к следующим инструкциям, написанным после внешнего if-else.

Хотя вложенные операторы if-else позволяют проверять несколько условий, их довольно сложно читать и писать. Эти же программы можно сделать более читабельными и простыми с помощью if-elif-else.

Оператор if-elif-else

Оператор if-elif-else — это альтернативное представление оператора if-else, которое позволяет проверять несколько условий, вместо того чтобы писать вложенные if-else. Синтаксис этого оператора следующий:

Примечание: … означает, что можно писать сколько угодно условий eilf .

Как это работает:

Когда исполняется инструкция if-elif-else, в первую очередь проверяется condition_1 . Если условие истинно, тогда исполняется блок инструкций if. Следующие условия и инструкции пропускаются, и управление переходит к операторам вне if-elif-else.

Читайте также:  Бортовой компьютер настроить opel

Если condition_1 оказывается ложным, тогда управление переходит к следующему условию elif , и проверяется condition_2 . Если оно истинно, тогда исполняются инструкции внутри первого блока elif . Последующие инструкции внутри этого блока пропускаются.

Этот процесс повторяется, пока не находится условие elif , которое оказывается истинным. Если такого нет, тогда исполняется блок else в самом конце.

Перепишем программу с помощью if-elif-else.

Источник

Python: функция if не работает, если в операторе if два условия

Я работаю с Python 3.6, и я написал это:

. и вывод НИЧЕГО! NADA ! Ни «привет», ни «привет 2», даже не ошибка!

Даже если я сделаю это:

Еще ничего! Почему?

Изменить: Я извиняюсь всех, до этого я не заметил, что «else» не имеет двоеточия, поэтому для некоторых они получили ошибку синтаксиса, возможно, она исправлена сейчас, но она по-прежнему ничего не выводит

Редактировать 2: это будет неудобно, так как я использовал PyCharm и мой другой файл открыт (в этом файле не выполняется ни одна функция), я случайно запустил другой файл, а не этот файл «zen», поэтому я ничего не получил, потому что это. Я на самом деле получил SyntaxError из этого файла «zen», и этот пост действительно помог мне решить эту проблему, хотя я и заявил, что это не проблема, и напомнил себе, что нужно проверять все перед тем, как что-либо делать, так что да, спасибо всем, кто помог мне 🙂

3 ответа

Я предполагаю, что это то, что вы хотели достичь:

Как отмечается в некоторых комментариях, если кто-то пытается запустить ваш код, он возвращает следующее (в Linux GCC 4.8.2 / Python 3.6.1):

Если вы хотите изменить значение, напечатанное после первой оценки условия, перепишите его следующим образом:

Решение 1. Передайте аргументы в функцию.

Решение 2. Объявите «zen» и «zen2» как глобальные перед объявлением.

У вас есть логические ошибки. Вы не можете использовать zend2 перед использованием global. Вы должны передать переменные в качестве аргументов или объявить их как глобальные в первой строке функции.

Источник

Почему не выполняется условие if в python3?

Этот скрипт проверяет, есть ли подключение к домену, функция работает, чтение и запись в файл тоже работает, но не могу понять, почему пропускается условие if (check(item) == 1) понять не могу почему он тупо перезаписывает массив не проверив ответ функции check(), мало того, он стирает последний символ на последнем домене и создает пустую строку..

Я сравнил вывод этого скрипта с выводом сервиса https://www.cy-pr.com/tools/masswhois/
Из 8 проверенных доменов скрипт правильно определил 6.

Уже крыша немного едет, так же есть проблема, при проверке домена, не получив ответа(пробовал зайти, бесконечно грузит) он выбивает ошибку:

Помогите пожалуйста отладить код, что бы он правильно сохранял вывод и не прерывался на первых строках списка.. Заранее благодарю!

  • Вопрос задан 11 дек. 2020
  • 177 просмотров

Посмотреть, какие выдаются исключения :

Это для сокращения. В with open (файл, режим) as .
после as задаётся «псевдоним/alias», под которым программа будет работать с этим файлом, открытом в нужном режиме.
А получается, что псевдоним это check_domains, который уже ранее задан как новое имя файла check_domains = ‘check_’ + sys.argv[1]
Вместо for check_domain in check_domains нужно брать элементы из списка доменов, который передаётся в функцию save_list(file, domain_list) вторым аргументом

и в самом скрипте разве не должен сначала составляться список а потом писаться в файл ? Тут же получается, что список при срабатывании if каждый раз в текущем виде пишется в файл. Теоретически, при последнем шаге файл будет правильным, потому что список к этому временим будет полным, но так нет смысла делать, надо писать после обработки списка.

Источник

Оцените статью