CodeLab
145 subscribers
538 photos
20 videos
159 links
Говорим просто о сложном

Обсуждение, новости, материал и сплетни — все здесь https://t.me/CodeLabMLChat
Download Telegram
Сегодня постараюсь разобрать с вами парочку задани,й а начнем мы с курса от Яндекса. Задача 'Шарики и ручки' #Шарики_и_ручки
🧑‍💻 Вообще, после егэ я не особо рассчитывал что наткнусь на теорию вероятностей, благо задача каких то жестких вычислений не требует) Итак, кодик получился максимально небольшой, надо лишь немного подумать.

‼️ Значит, есть у нас ящик с шариками, а найти нам надо через какое количество ходов дети найдут сигму победителя. Победил, кстати, тот, кто первым вытащит зеленый шарик.
0️⃣⭕️ Итак, для начала вводим три переменные (цвета шариков) и затем прописываем формулу для переменной count.

Для начала, почему + между red и blue? А потому что два независимых события происходят одновременно (В нашем случае, дети перебирают цвета шариков).

С этим разобрались, но почему +1? Все дело в том, что в условии сказано, что победитель - этот тот чел, который первым вытащит зеленый шарик. ‼️ИММЕННО ПЕРВЫМ (Мы сложили красные и синие шары, так что первый шар, который вытащат после этих двух групп шариков, и будет зеленым‼️ )

🔗 Код:

red = int(input())
green = int(input())
blue = int(input())
count = red + blue + 1

print(count)
🧑‍💻⭕️ Еще стоит разобрать че такое and и or, а то мы как то их пропустили.

Разберем сразу на коде. Выводом, кстати, будет True. #Операторы_and_or

🔗Код:

x = 5
y = 10
z = 15

result = (x < 10) and (y < z) or (x == y)
print(result)
‼️А еще, чтобы не изобретать велосипед: написано все максимально доходчиков
CodeLab
🧑‍💻⭕️ Еще стоит разобрать че такое and и or, а то мы как то их пропустили. Разберем сразу на коде. Выводом, кстати, будет True. #Операторы_and_or 🔗Код: x = 5 y = 10 z = 15 result = (x < 10) and (y < z) or (x == y) print(result)
⭕️ Касаемо кода, в переменную result мы записываем выражение.

‼️ Как мы уже сказали, логический оператор and возвращает True, если оба условия будут равны (В нашем случае, если условия (x < y) и (y < z) будут соблюдаться, ответ будет True, но, если хотя бы одно их них не сработает, то False)
🧑‍💻А вообще, для наглядности ебнем еще одни скобки.

🔗Значит, если оба операнда (x < y это типо операнд) будут True ИЛИ (x == y), то получим на выходе True.

Поскольку x ниуя не равен y, а первая скобка выполняется, то ответ будет по прежнему True

‼️Короче, чтобы было прям понятно. Для оператора AND важно чтобы все операнды были TRUE. А для оператора OR совсем это не важно. Он возвращает TRUE, если один хотя бы будет истинный. ‼️

🔗 Код:

x = 5
y = 10
z = 15

result = (x < 10) and (y < z) or (x == y)
print(result)
‼️ В данном случае мы поменяли знак на противоположный и выводит False, поскольку один из операндов между and не будет выполняться, также x не будет равен значению y

🔗 Код:

x = 5
y = 10
z = 15

result = ((x > 10) and (y < z)) or (x == y)
print(result)
🧑‍💻 Вы можете спросить, зачем я поставил тут not ⁉️

‼️В данном случае not инвертирует логическое выражение.

Итак, x не равен y, это мы уже выяснили.

‼️Но как только ставим not, то в скобках ответ будет инвертироваться (Мы знаем что x и y не равны, но, поставили not, теперь, выражение что они не равны - ложно, надеюсь немного понятно).

🔗 Вот попробуйте поиграться со знаками сами:

x = 5
y = 10
z = 15

result = ((x > 10) and (y < z)) or not (x == y)
print(result)


К примеру, мы могли бы не записывать not, а просто поставить (x != y), и ответ был бы таким же.

Этот код также выводит True:

x = 5
y = 10
z = 15

result = ((x > 10) and (y < z)) or (x != y)
print(result)


‼️То есть картинка такая же как и сверху, но, поскольку мы добавили not, условие ИЛИ - будет выполняться, а значит ответ True. (Скобка с И дает False, а условный оператор OR NOT дает TRUE)
🟰Разбираем ну супер классное задание 'Принадлежность 3 (4.2)', подобную тему вы могли разбирать в школе. Это сказка. а не задание! 🟰

🧑‍💻 Итак, разработчики нам все прекрасно объяснили и теперь давайте писать код #Принадлежность_3
0️⃣ Начнем, наверное, с int(input()), любимая наша строка.✔️

1️⃣ Далее, прописываем условный оператор, как раз всякие штуки по типу and и or мы уже с вами разобрали.

2️⃣ Теперь, как пишем, так и читаем: Если x > -30 и x <= 2 (<= потому что точка закрашенная, это я на всякий) ИЛИ x > 7 и x <= 25: то принадлежит, если нет. то и хй с ней
‼️Теперь остается переписать это на более понятный язык и задачку мы с вами выполнили
✔️Буквально переписали псевдокод ;)

x = int(input())
if (x > -30 and x <= -2) or (x > 7 and x <= 25):
print('Принадлежит')
else:
print('Не принадлежит')
Красивое или некрасивое⁉️

Давайте разберемся 🧑‍💻

0️⃣ Для начала, обратим внимание на то, что число четырехзначное, а значит, это что-то между 1000 и 9999.

1️⃣ Далее, деление должно быть нацело (без остатка) на 7 или 17. Теперь к коду #Красивое_число
🧑‍💻Буквально делаем тоже самое, что и в прошлой задаче, действуем строго по условиям.

‼️Условия оба обязательны, поэтому между ними and. Готовим себя перед чем то жестким

🔗Код:

num = int(input())
if (num % 7 == 0 or num % 17 == 0) and (1000 <= num <= 9999):
print('YES')
else:
print('NO')
🔗 Итак, очередная хорошая задача 'Високосный год 4.2', для начала сделаем то, что получается не всегда хорошо - подумаем #Високосный_год
‼️По поводу самого условия, почему так, я вам расскажу после решения, а для начала, разберем как ее решить.

🧑‍💻 По сути, просто переписываем условие так, как нам и говорят, ничего не меняя: год високосный если его номер кратен 4 но не кратен 100 (кратность - деление без остатка, или же нацело) ИЛИ если номер кратен 400. Самое время переписать.
🔗Код:

x = int(input())
if (x % 4 == 0 and x % 100 != 0) or x % 400 == 0:
print('YES')
else:
print('NO')
А вот и объяснение, откуда вообще такие деления взялись