Python Hub - сборище Питонистов
1.71K subscribers
657 photos
1 video
37 files
276 links
Уголок счастья для любого питониста.

Сотрудничество или заказы: @leshunist

https://shcoder.dev - студия разработки ShcoderDevelopment

https://t.me/pythonhub_chat - чат
Download Telegram
Python Hub - сборище Питонистов
💡 Логическая задача!? 💡 🧐 Лампочки и переключатели Условие: В первой закрытой комнате с низким потолком висит 3 лампы накаливания. В другой такой же комнате установлено 3 переключателя от каждой из них. Можно как угодно дергать переключатели, вот только…
Решение задачи

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

та, которая горит, соединена с последним переключателем, который мы трогали;
та, которая не горит и теплая, соединена с первым переключателем, который мы трогали;
за не горящую и холодную лампочку отвечает переключатель, который мы вообще не трогали.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
💡 Задачка от Джеффа Безоса. На размышление даётся 30 секунд
💡 Считается, что её могут загадать на собеседовании в «Амазон».

Мне задавали ее на одном из собеседований в обычную компанию пару лет назад. Так что вполне реальный кейс задачи.


Кабель длиной 80 метров висит на двух столбах. Высота каждого столба — 50 метров. Каково расстояние между столбами, если центр провисающего кабеля находится:

а) на высоте 20 метров от земли — вариант для технарей;

б) на высоте 10 метров от земли — вариант для гуманитариев.

Для решения можно использовать инженерный калькулятор с расширенными функциями.

p.s. для технарей раз в 100 сложнее, чем для гуманитариев.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Python Hub - сборище Питонистов
💡 Задачка от Джеффа Безоса. На размышление даётся 30 секунд 💡 Считается, что её могут загадать на собеседовании в «Амазон». Мне задавали ее на одном из собеседований в обычную компанию пару лет назад. Так что вполне реальный кейс задачи. Кабель длиной 80…
👽 Решение для гуманитариев

У гуманитариев кабель длиной 80 метров провисает на минимальной высоте 10 метров от земли. При этом высота столба 50 метров. Значит, если провести новый «уровень земли» (красным), верхняя часть столба будет равняться 40 метрам.

Посмотрите на рисунок. Нет ли здесь ошибок?

Если верхняя часть столба 40 метров и длина кабеля до середины — тоже 40 метров, то какой это треугольник? Может ли такой треугольник существовать?
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Python Hub - сборище Питонистов
💡 Задачка от Джеффа Безоса. На размышление даётся 30 секунд 💡 Считается, что её могут загадать на собеседовании в «Амазон». Мне задавали ее на одном из собеседований в обычную компанию пару лет назад. Так что вполне реальный кейс задачи. Кабель длиной 80…
💀 Решение для технарей

Первое, что мы сделаем, — поднимем уровень земли, чтобы он касался провода. Так как до центра провиса 20 метров, то высота столбов тоже уменьшится на эти 20 метров:

Расстояние между столбами у нас при этом осталось тем же самым.

Так как кабель провисает по центру, нам достаточно найти расстояние от края до середины и умножить его на 2 — так мы найдём полное расстояние между столбами.

❗️ Самая важная часть.

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

Сначала поработаем с высотой столба. Запишем формулу для расстояния, затем добавим на рисунок те данные, которые мы уже знаем, и раскроем формулу:

Теперь составим второе уравнение, в котором используем значение длины кабеля. Так как он провисает ровно посередине, то его длина от края до точки перегиба — 40 метров.

Добавляем свойство о том, что разность квадратов гиперболического синуса и косинуса равна единице:

Раскрываем скобки, приводим всё к классическому квадратному уравнению, и, решая его, получаем ответ: a = 35/3.

Это значение подставляем в формулу гиперболического синуса, чтобы посчитать половину длины кабеля:

Решаем это уравнение на калькуляторе и получаем ответ: x ≈ 22,7. Это половина расстояния между столбами, а полное расстояние ≈ 45,4 метра.

Ответ: если высота до центра провиса равна 20 метров, то расстояние между столбами составляет примерно 45,4 метра.
2👍2
🌼 Понимание цикла Do While в Python

Python - это высокоуровневый язык программирования, который предлагает множество управляющих конструкций. Хотя в нем нет традиционного цикла "do while", как в других языках, цикл "while" в Python можно настроить для аналогичного поведения.

➡️ Синтаксис традиционного цикла While

Цикл while в Python принимает форму while expression:, за которым следуют одно или несколько отступов в высказываниях. Цикл будет продолжать работать до тех пор, пока выражение больше не будет истинным. Например:

count = 0
while count < 5:
print(count)
count += 1 # Увеличиваем значение count на 1


В этом примере цикл будет продолжать выводить значение count, пока оно меньше 5.

➡️ Эмуляция цикла Do While

Поскольку в Python нет традиционного цикла "do while", вы можете эмулировать его, используя цикл "while" с оператором "break". Вот пример:

while True:
print("Этот цикл выполнится хотя бы один раз")
if not condition:
break


В этом примере цикл выполнится хотя бы один раз, а затем продолжит работу, пока условие истинно.

➡️ Практический пример цикла Do While

Допустим, вы хотите запросить у пользователя ввод, пока он не введет натуральное число. Вы могли бы использовать цикл "do while" так:

while True:
number = input("Введите натуральное число: ")
if number.isdigit():
break


В этом примере цикл будет продолжать запрашивать ввод пользователя, пока он не введет число.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍31
Что выдаст код выше?
Anonymous Quiz
19%
A C
7%
A B C
23%
B C
2%
B
24%
C
19%
Error
4%
Не знаю
👍8
Python Hub - сборище Питонистов
Photo
Разбор 👨‍💻

Цикл while должен был бы быть бесконечным, если бы его не прервал break, который находится внутри if'a (условие правдиво). Так как break стоит раньше, чем print('A'), то этот вывод не сработает.

Мы можем прикреплять else к циклам (while или for). Он будет срабатывать тогда, когда цикл не был прерван break конструкцией (а у нас был).
Таким образом ответом будет только вывод 'C'.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Что такое тернарный оператор и есть ли он в Python?


➡️ Что такое тернарный оператор?

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

➡️ Применение тернарного оператора

Тернарный оператор используется, когда мы хотим сократить код и упростить чтение. Это особенно полезно в случаях, когда нам нужно сделать простое условное присваивание. Однако из-за его сжатого формата, использование тернарного оператора в сложных условиях может затруднить понимание кода.

➡️ Тернарный оператор в Python

Да, Python поддерживает тернарный оператор. В Python тернарный оператор выглядит следующим образом: x if condition else y. Здесь x присваивается, если условие истинно, иначе присваивается y.

➡️ Пример использования тернарного оператора в Python:

age = 15
type = "teenager" if age < 18 else "adult"
print(type) # Выведет: teenager


В этом примере, если переменная age меньше 18, переменной type присваивается значение "teenager", в противном случае - "adult".
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥3👍3
Дескрипторы в Python

➡️ Что такое Дескрипторы?

Дескрипторы - это объекты, которые определяют поведение атрибутов при их доступе, изменении и удалении. В Python дескрипторы определяются методами __get__, __set__ и __delete__ в дескрипторном классе. Эти методы позволяют управлять тем, как атрибуты объекта получают, изменяют и удаляют значения.

➡️ Пример использования Дескрипторов

Рассмотрим пример использования дескрипторов. Предположим, у нас есть класс Person, который имеет атрибут age. Мы хотим гарантировать, что возраст не может быть отрицательным числом. Для этого мы можем использовать дескриптор. Мы создадим класс NonNegative, который будет дескриптором для возраста. В этом классе мы определим метод __set__, который будет проверять, является ли новое значение отрицательным числом. Если это так, метод __set__ вызовет исключение.

Пример кода:

class NonNegative:
def __get__(self, instance, owner):
return instance.__dict__[self.name]

def __set__(self, instance, value):
if value < 0:
raise ValueError('Cannot be negative.')
instance.__dict__[self.name] = value

def __set_name__(self, owner, name):
self.name = name

class Person:
age = NonNegative()

p = Person()
p.age = 20
print(p.age) # Вывод: 20
p.age = -20 # Возбуждает исключение ValueError
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
💲 Сколько зарабатывает Программист python в России?

По данным ГородРабот.ру, средняя зарплата Программиста python в России за 2024 год ‒ 137 672 рубля. За месяц заработная плата изменилась на 8% ‒ с 127 491 до 137 672 рубля. А чаще всего в вакансиях встречается зарплата 100 000 рублей (модальная).

Решил подушнить статистикой вам

Топ-10 городов по количеству вакансий
Январь 2024 — март 2024
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Создать 10 случайных чисел в Python [для новичков]

В Python для заполнения списка случайными числами можно использовать модуль random. Ниже представлен код:

import random

random_numbers = [random.randint(1, 100) for _ in range(10)]


В этом примере создается список из 10 случайных чисел в диапазоне от 1 до 100.


А вот вам и вопрос этот на stackoverflow, который задали в далеком 2014🙃🙃🙃

https://stackoverflow.com/questions/25719364/how-do-i-get-10-random-values-in-python
👍5