Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
0 / 0 / 1
Регистрация: 10.08.2019
Сообщений: 26

Неверно выполняется условие if

26.03.2021, 09:49. Показов 1639. Ответов 5

Студворк — интернет-сервис помощи студентам
В курсе по Python мне попалась задача, в зависимости от введённого числа выводить слово с правильным окончанием. Например "2 программиста", "5 программистов". Накидал небольшое условие, но при любом вводе выполняется самое первое условие. Раньше с подобным не сталкивался. Код:
Python
1
2
3
4
5
6
7
x = int(input())
if x == 2 or 3 or 4:
    print(x, "программиста")
elif x % 10 == 0 or 5 or 6 or 7 or 8 or 9:
    print(x, "программистов")
elif x % 10 == 1:
    print(x, "программист")
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.03.2021, 09:49
Ответы с готовыми решениями:

Не выполняется условие if
import math x = (pow(math.pi,8))/9450 x1 = x+0.01 x2 = x-0.01 # k = 1 while k <= 10: z=1/(pow(k,8)) if...

Работа с файлами. Не выполняется условие
При решении задачи из одной книги возникла проблема: программа должна записать новые данные во временный файл, если значение имени (name)...

Условие должно выполнятся, но не выполняется
Добрый вечер. Помогите пожалуйста. Проблема такая: строки одинаковые, обе конвертированы к str, но когда их сравниваю цикл уходит в else....

5
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7390 / 4817 / 1246
Регистрация: 30.03.2015
Сообщений: 13,678
Записей в блоге: 29
26.03.2021, 09:59
Лучший ответ Сообщение было отмечено UKTLt как решение

Решение

Цитата Сообщение от UKTLt Посмотреть сообщение
if x == 2 or 3 or 4:
ты не понимаешь как работают условия, в том и проблема. Вот тут можно посмотреть вдумчиво, там как раз и твой случай рассмотрен.

Дело в том что ключевые слова AND и OR отделяют условия, которые независимы друг от друга! то есть вот это твое if x == 2 or 3 or 4: означает ЕСЛИ ИКС РАВЕН ДВА ИЛИ 3 ИСТИННО ИЛИ 4 ИСТИННО. То есть 3 никак не связано с условием проверки икса! и 4 никак не связано с проверкой икса, это отдельные условия. ДЛя питона это просто означает ПРОВЕРЬ ЧТО bool(3) ==True и конечно это условие всегда верно. Потому у тебя далее первого условия и не идет, оно всегда верно.

Добавлено через 1 минуту

Не по теме:

P.S if работает верно) я ни разу не видел чтобы что-то в питоне работало не верно, дело всегда в программисте. В следующий раз, создавая тему, честно пиши что ты что-то неверно написал, а не Гвидо)

1
0 / 0 / 1
Регистрация: 10.08.2019
Сообщений: 26
26.03.2021, 10:24  [ТС]
Да нет, я знаю, что проблема во мне. Не очень корректно выразился про условие. Спасибо. :"D

Добавлено через 11 минут
Я погуглил и узнал, что | - это ИЛИ. Ну и у меня как всегда ничего не работает, что со мной не так? Как правильно записать ИЛИ?
Python
1
2
3
4
5
6
7
x = int(input())
if x == 2 | x == 3 | x == 4:
    print(x, "программиста")
elif x % 10 == 0 | x % 10 == 5 | x % 10 == 6 | x % 10 == 7 | x % 10 == 8 | x % 10 == 9:
    print(x, "программистов")
elif x % 10 == 1:
    print(x, "программист")
Добавлено через 5 минут
Всё, задача решена.
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7390 / 4817 / 1246
Регистрация: 30.03.2015
Сообщений: 13,678
Записей в блоге: 29
26.03.2021, 10:32
Цитата Сообщение от UKTLt Посмотреть сообщение
Как правильно записать ИЛИ?
or


Добавлено через 2 минуты
смотри как
Python
1
2
3
4
5
6
if x in (2,3,4):
    print(x, "программиста")
elif x % 10 in (0, 5, 6, 7, 8, 9):
    print(x, "программистов")
elif x % 10 == 1:
    print(x, "программист")
1
0 / 0 / 1
Регистрация: 10.08.2019
Сообщений: 26
26.03.2021, 10:44  [ТС]
Спасибо

Добавлено через 2 минуты
А... Можно еще вопрос? Ну, не то чтобы я прям совсем обленился и не решаю задачу сам, но....
Код вроде выводит все окончания правильно, но проверку не проходит.
Python
1
2
3
4
5
6
7
8
9
x = int(input())
if (x % 10) // 10 == 1:
    print(x, "программистов")
elif x % 10 in (5 , 7, 8 ,9) or x % 10 == 0:
    print(x, "программистов")
elif x % 10 == 1:
    print(x, "программист")
elif x % 10 in (2, 3 ,4):
    print(x, "программиста")
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7390 / 4817 / 1246
Регистрация: 30.03.2015
Сообщений: 13,678
Записей в блоге: 29
26.03.2021, 10:52
Цитата Сообщение от UKTLt Посмотреть сообщение
Ну, не то чтобы я прям совсем обленился и не решаю задачу сам,
именно что не решаешь! я выше тебе кинул ссылку, на том же канале есть видео как тестировать свой код с помощью assert - ознакомься

у тебя не обрабатывается случай 6 программистов.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.03.2021, 10:52
Помогаю со студенческими работами здесь

Почему не выполняется условие: нажали кнопку 'Monday' + 20 число + 2 месяц
now_date = datetime.date.today() cur_day = now_date.day cur_month = now_date.month @bot.message_handler() def msgd(m): cid...

Найти первый из номеров последовательности, для которых выполняется условие
Дано действительное число H (>0). Последовательность вещественных чисел А(К) определяется следующим образом: А(1) = 2 + 1/А(К - 1), К = 2,...

Почему это условие выполняется при вводе любого значения?
Почему это условие выполняется при вводе любого значения? Там же написано 'ok' или 'ko'. Как это исправить? (Отступы есть) i = input() ...

Используя цикл while, найти первый член последовательности, для которого выполняется условие
Дано действительное число m, где m ∈ (0;1) Последовательность а1, а2, ... образованна по закону: начальное значение a1=1,a2=3,...

Для данного одномерного массива с числами (реализованного как список list) проверить, выполняется ли условие
Для данного одномерного массива с числами (реализованного как список list) проверить, выполняется ли условие: элементы массива образуют...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru