Алексей, добрый вечер, round() в Python округляет число не совсем по правилам математического округления. Так, 12.5 округлится до 12, а 13.5 до 14. В случае ***.5 число округлится вниз, если целая часть чётная, и вверх, если целая часть нечётная. 2:41:57
Вот я так и думал, что опасно использовать round(). Чувствовал, что подвох есть, но не знал какой. Лучше все-таки глазками посмотреть. А еще лучше руками такое решать (оно и быстрее будет)
38:50 а тут глобальная переменная, потому что она объявлена напрямую, каждый цикл for a in iterator он по сути делает a = iterator.next(), она во всём файле видна (по хорошему в реальных проектах за такие глобальные переменные по рукам бьют) поэтому её можно везде использовать, х же локальная переменная внутри генератора и видна только там
Если в задаче 1:52:25 вам не хочется использовать itertools, то можете сделать так: p = {i for i in range(256) if ((i//128)%2==1) and (i//64)%2==1} q= {i for i in range(256) if i%2==0} ..... ..... for x in range(256): (я показал лишь изменённые строчки - остальное скопируйте на 1:59:11) /////////////////// почему до 256? - максимальное восьмибитное число почему ((i//128)%2) и ((i//64)%2)? - cвойства перевода чисел из десятичной в двоичную систему счисления, так я узнаю первые цифры числа ////////////////// я знаю, что это замороченный способ
Здравствуйте, спасибо за эфир. Очень многое помогло. 2:32:35 попробовал сделать в функции через range(), а не через большеравно/меньше равно - тоже вышло. Вот код: #---------------------------------------------------------- from itertools import combinations def f(x): p = x in range(2, 20) q = x in range(15, 25) a = x in range(a1, a2) return ((not a)
39:00 я могу предположить, что А создана вне функции или класса, поэтому она глобальная. В Си мы пишем все в теле функций, в Джаве все в классах, а в питоне есть возможность писать программы без тела функции или класса, поэтому такой прикол, ну чисто мои догадки Сейчас попробовал, с иксом работает, но если он не находится в all(), то есть икс не видно из - за того, что он впервые в программе создается как аргумент для функции all(), то есть он внутри этой функции и является локальным для нее. Короче в питоне все как в других ЯП, просто из - за того, что можно не создавать функции или классы, появляется такая путаница
46:37 в этом однострочнике лучше next() вместо min(), min все найдёт и потом выберет из них меньший, а нам нужен только первый, то что он будет меньшим мы и так знаем, он же из range берётся, но вообще такие однострочники писать я бы советовал только если этот кусок кода был перед этим написан нормально и покрыт тестами, что на егэ не имеет смысла никакого, только ради развлечения
Почему шаг дробный? Каким образом получаются выколотые точки? Мы же рассматриваем отрезки, где оба конца (а1 и а1) принадлежат промежутку (нестрогое неравенство для отрезка а)
ответ больше для тех, кто читает комменты. если взять уcловно P = [10; 20]. то not(P) по сути = (0;10) v (10; +inf). так как нужно проверять строгие неравенства в условиях с инверсией, мы используем дробный шаг
Я совсем запутался в задачах на отрезки Решал ДЗшку с интенсива яндекса. Самое последнее задание на отрезки. Если округлять, то получается 48. Ответ 47 Если не округлять, то 47.75. Почему код даёт осечку? По сути он верный, всё как вы рассказывали. ox составлял с запасом
Если решаешь отрезки и множества руками, то необязательно уметь такие задачи прогать? Любые получится решить руками? Остальные то типы удобнее в питоне решать, а вот эти прям.. неудобно
Можно ли математически определить длину полуинтервала? Разве нет ошибки в формулировке "найдите длину отрезка" при наличии полуинтервала? Например, чему равна длина полуинтервала [17;29)?
@@kompege но ведь одна из точек выколота, а чтобы найти длину отрезка нужно вычесть значения его КРАЙНИХ точек. В нашем случае 29 не входит, а значит крайней точкой будет 28,(9). Это приводит нас к длине полуинтервала равной 28,(9)-17=11,(9). (По логике на полуинтервалы правило вычисления длины как для обыкновенного отрезка не распространяется)
Здравствуйте, подскажите, пожалуйста, в заданиях с числовой плоскостью мы ищем целое неотрицательное число А, тогда почему перебор начинается с 1, а не от 0?
в задание с отрезками в первом случаем почему то если писать not(p)-то выдает пустое множество, однако, если поставитб (not p)-то все работает Объясните, пожалуйста, в чем разница ?
@@kompege подскажите пожалуйста еще один момент: если в множествах в условии указано, что функции ложно при всех х, то когда мы отбираем значения для множества а нужно проверять f(x)==1?
Алексей Кабанов, доброго времени суток! Я решал отрезки программой и столкнулся с проблемой, что крупные отрезки от величиной 1000+ Python, оооооочееень меееедлеенно решает, я подумал, что лучше научиться руками... Но хотелось бы как-то решить эту проблему ( может на C++ перейти? XD)
Алексей Кабанов просто мой краш, спасибо вам огромное за веб😩😩😩💗
Алексей, добрый вечер, round() в Python округляет число не совсем по правилам математического округления. Так, 12.5 округлится до 12, а 13.5 до 14. В случае ***.5 число округлится вниз, если целая часть чётная, и вверх, если целая часть нечётная. 2:41:57
Поэтому, если использовать round, нужно брать шаг 0.2, а не 0.25
Вот я так и думал, что опасно использовать round(). Чувствовал, что подвох есть, но не знал какой. Лучше все-таки глазками посмотреть. А еще лучше руками такое решать (оно и быстрее будет)
Ага, верно заметили. В таком случае можно использовать элегантный обход: int(x + 0.5)
Большое спасибо за программу для отрезков, я так искал ее!
1:27:03 по сути ,чтобы не ждать, можно написать for a in range(200, 1, -1):
Большое спасибо за полное разъяснение 15 задания!!!
38:50 а тут глобальная переменная, потому что она объявлена напрямую, каждый цикл for a in iterator он по сути делает a = iterator.next(), она во всём файле видна (по хорошему в реальных проектах за такие глобальные переменные по рукам бьют) поэтому её можно везде использовать, х же локальная переменная внутри генератора и видна только там
Если в задаче 1:52:25 вам не хочется использовать itertools, то можете сделать так:
p = {i for i in range(256) if ((i//128)%2==1) and (i//64)%2==1}
q= {i for i in range(256) if i%2==0}
.....
.....
for x in range(256):
(я показал лишь изменённые строчки - остальное скопируйте на 1:59:11)
///////////////////
почему до 256? - максимальное восьмибитное число
почему ((i//128)%2) и ((i//64)%2)? - cвойства перевода чисел из десятичной в двоичную систему счисления, так я узнаю первые цифры числа
//////////////////
я знаю, что это замороченный способ
if all(f(x)==1 for x in Ox): почему 16 из Ох выполняет условия в функции P = 25
Не выполняет, P будет False
Однако Q также будет False, поэтому эквиваленция будет истинна и поэтому выражение тоже
@@kompege Понял, спасибо ❤
Здравствуйте, спасибо за эфир. Очень многое помогло. 2:32:35 попробовал сделать в функции через range(), а не через большеравно/меньше равно - тоже вышло. Вот код:
#----------------------------------------------------------
from itertools import combinations
def f(x):
p = x in range(2, 20)
q = x in range(15, 25)
a = x in range(a1, a2)
return ((not a)
combinations - тема! Работает быстрее, чем перебор циклом в цикле
1:09:59 почему не работает?
for a in range(1,500):
for x in range(1,100):
for y in range(1,100):
f = (y*+3*x20)or(y>40)
if f==1:
break
else:
print(a)
if f==0:
39:00 я могу предположить, что А создана вне функции или класса, поэтому она глобальная. В Си мы пишем все в теле функций, в Джаве все в классах, а в питоне есть возможность писать программы без тела функции или класса, поэтому такой прикол, ну чисто мои догадки
Сейчас попробовал, с иксом работает, но если он не находится в all(), то есть икс не видно из - за того, что он впервые в программе создается как аргумент для функции all(), то есть он внутри этой функции и является локальным для нее.
Короче в питоне все как в других ЯП, просто из - за того, что можно не создавать функции или классы, появляется такая путаница
Объясните пожалуйста почему вы пишите f(x) == 0, если там написано, что выражение равно 1, а не 0. Задача 1, тайм код 1:44:08
Таков алгоритм поиска множества. Оно собирается через работу с ложными значениями.
Спасибо!!! Очень понятно
Супер эфир!
Борис Олегович лучший😮
46:37 в этом однострочнике лучше next() вместо min(), min все найдёт и потом выберет из них меньший, а нам нужен только первый, то что он будет меньшим мы и так знаем, он же из range берётся, но вообще такие однострочники писать я бы советовал только если этот кусок кода был перед этим написан нормально и покрыт тестами, что на егэ не имеет смысла никакого, только ради развлечения
35:23- здравствуйте, может это работает так как мы а перебираем в начале, и питон автоматически подставояет его при вызове функции?
2:14:32 Почему вы берете здесь диапазон значений минимальный от 24, когда у нас отрезок больше либо равен 25?
Просто запас на всякий случай
"Мы придумали
Точнее, я придумал"
1:48:29 Почему нельзя решить первым способом? Разве нельзя просто взять пустое множество и заполнить его числами, для которых условие верно?
Нет, нельзя
@@kompege почему нельзя? где-то есть подводные камни, которые я не замечаю?
@@GameChanger___ завтра проверю скажу )
Ну в общем программа выводит просто все числа подряд.
Поэтому ваше предложение не работает.
2:43:39
Здравствуйте! код такой же..а ответ не 95, а 95.25....почему?
from itertools import*
def f(x):
P= 5
Алексей, спасибо за разборы. Скажите, какой доской пользуетесь на вебах?
Open Board
Задание 34542 решу егэ,в чем ошибка
from itertools import *
def f(x):
p=1
1:52:00 а почему f(x)==0? Я не совсем понял
писяяяяяяят дваааааааа
1:34:04
КАКОЙ СПОСОБ РЕШЕНИЯ ОТРЕЗКОВ ЛУЧШЕ? С УМНОЖЕНИЕМ НА 10 ИЛИ С КОМБИНЭЙШОНС ?
Второй побыстрее будет )
А бывают ли прототипы на множества/отрезки, которые решаются только прогой?
нет
@@kompege 2:03:44 задача номер 4972, ее возможно решить руками? Там тройное равно, разве от него можно избавиться или как-то разложить?
@@gamer_sanya505 да ничего с ним не надо делать, просто отметить на прямой точки, подходящие под условие
Почему шаг дробный? Каким образом получаются выколотые точки? Мы же рассматриваем отрезки, где оба конца (а1 и а1) принадлежат промежутку (нестрогое неравенство для отрезка а)
ответ больше для тех, кто читает комменты. если взять уcловно P = [10; 20]. то not(P) по сути = (0;10) v (10; +inf). так как нужно проверять строгие неравенства в условиях с инверсией, мы используем дробный шаг
На решу ЕГЭ попался отрезок с x и y разбора такого не нашëл
33:00
Я совсем запутался в задачах на отрезки
Решал ДЗшку с интенсива яндекса. Самое последнее задание на отрезки. Если округлять, то получается 48. Ответ 47
Если не округлять, то 47.75. Почему код даёт осечку? По сути он верный, всё как вы рассказывали. ox составлял с запасом
Ты где то ошибся значит
@@kompege Ну у многих так получилось, не сказать,что люди глупенькие. Итог таков, что лучше ручками отрезки решать. Ну или хотя бы перепроверять
Специально решила эту задачку прогой, получилось 46.75
Если решаешь отрезки и множества руками, то необязательно уметь такие задачи прогать? Любые получится решить руками? Остальные то типы удобнее в питоне решать, а вот эти прям.. неудобно
Я так и делаю )))
@@kompege Спасибо за ответ)
Можно ли математически определить длину полуинтервала? Разве нет ошибки в формулировке "найдите длину отрезка" при наличии полуинтервала? Например, чему равна длина полуинтервала [17;29)?
Длина полуинтервала определяется аналогично. 29-17
@@kompege но ведь одна из точек выколота, а чтобы найти длину отрезка нужно вычесть значения его КРАЙНИХ точек. В нашем случае 29 не входит, а значит крайней точкой будет 28,(9). Это приводит нас к длине полуинтервала равной 28,(9)-17=11,(9).
(По логике на полуинтервалы правило вычисления длины как для обыкновенного отрезка не распространяется)
идите учить матчасть
А как решать комбинированную задачу про отрезки прогой? Пишет что идет деление на ноль
Проверять только натуральные x
@@kompege ua-cam.com/video/w_81pCoSZos/v-deo.html 15 номер 1 зачача, пишу if a>0: return... выводит 20, хотя ответ 63
А если в задании с отрезками знак принадлежности перечеркнут, то как переписать код?
использовать not
Алексей, можно ли забить на прогнанье отрезков и множеств и надеяться, что ручками смогу на ЕГЭ решить?
Как по мне решать их руками быстрее и проще.
@@kompege И главное - осознанее!
Здравствуйте, подскажите, пожалуйста, в заданиях с числовой плоскостью мы ищем целое неотрицательное число А, тогда почему перебор начинается с 1, а не от 0?
не отрицательное значит НЕ с минусом
у нуля нет минуса значит начало с нуля
Ещё раз поясните пожалуйста. Если получиться ответ 12,5 его округлять до 13?
Да. Это значит что в ложном промежутке выколоты оба конца (но их всё равно надо закрыть).
@@kompege а 12.25 округлять вниз? Или 12.25 не получится никак?
@@СергейКоптев-в2щ оно никак не получится. Может получиться 0.25, его округлять вниз.
@@kompege В ответ что-ли 0 пойдёт?
в задание с отрезками в первом случаем почему то если писать not(p)-то выдает пустое множество, однако, если поставитб (not p)-то все работает
Объясните, пожалуйста, в чем разница ?
Python в другом порядке выполняет операции
Здравствуйте, подскажите, пожалуйста, а если вместо ДЕЛ, стоит div, как в этом случае писать условие?
Это не на что не влияет, ДЕЛ это просто название функции. Условие пиши так, как оно написано в ковычках
А если в отрезках получается ответ типо 12,25; 12,5 или 12,75 то всегда нужно в большую сторону округлять?
По правилам математики округляйте
@@kompege подскажите пожалуйста еще один момент: если в множествах в условии указано, что функции ложно при всех х, то когда мы отбираем значения для множества а нужно проверять f(x)==1?
@@yabadaba0 звучит логично
У нас аквариусы... сенсорные на огэ
как округлять значения для отрезков? у меня a2-a1=11,75
Ну и округляй до 12
😘
Я не понимаю, почему в заданиях с отрезками: 24*4/4 как получаешь 24.25?
(24*4+1)/4
@@kompege благодарствую😁
1:04:21 ха-ха ха ха
Есть ли домашка к этому стриму, что делать в процессе просмотра и после окончания просмотра стрима?
Можно порешать домашку с открытого курса )
Нужно попрактиковать всё что было (с сайта Полякова задачек нарешайте)
Топ
Алексей Кабанов, доброго времени суток! Я решал отрезки программой и столкнулся с проблемой, что крупные отрезки от величиной 1000+ Python, оооооочееень меееедлеенно решает, я подумал, что лучше научиться руками... Но хотелось бы как-то решить эту проблему ( может на C++ перейти? XD)
XD
Россия чемпион
min() arg is an empty sequence - как избавиться от этой ошибки?@Алексей Кабанов
Эта ошибка выводится, если ты неправильно записал функцию (после return)