CodeLab
👨💻 Иииитак, вчера я ничего не делал, щас буду рассказывать про хранение памяти в компьютере, как раз это свяжем с проблемой чисел с плавающей точкой, поэтому постарайтесь все внимательно прочитать‼️ ⭕️ Для хранения одной ячейки информации в памяти используется…
🧑💻Я вас, наверное, уже за❌бал с этими вещественными числами, но, мы не коснулись чисел формата ❗️двойной точности.
Я уже говорил, что это формат, с котором доступно 64 бита, на знак выделяется ‼️1 бит, экспоненту - 11 битов (для вещественных чисел двойной точности используется смещение на 1023, что означает, что экспонента от 0 до 2047 кодируется числами от -1023 до 1024, для чисел формата одинарной точности сдвиг всего на 127,но это так). На мантиссу приходится 52 бита.‼️
🔗Я вам уже объяснял, как вещественные числа преобразуются в двоичный код, можете почитать, я прикреплю. ⭕️Разница в том, что к мантиссе прибавляем не число 127, а число 1023. Если число 6.25, это 110.01, опять же происходит два сдвига, потому что по формуле у нас в целой части должна быть единица, поэтому получается число 1.1001 * 10 ** 2, экспонента тут - 2, к ней прибавляем сдвиг 1023 и получаем 1025. По итогу, 1 это знак, 10000000001 это экспонента, 1011000... это мантисса
UPD: Рекомендую читать с самого начала !
Я уже говорил, что это формат, с котором доступно 64 бита, на знак выделяется ‼️1 бит, экспоненту - 11 битов (для вещественных чисел двойной точности используется смещение на 1023, что означает, что экспонента от 0 до 2047 кодируется числами от -1023 до 1024, для чисел формата одинарной точности сдвиг всего на 127,но это так). На мантиссу приходится 52 бита.‼️
🔗Я вам уже объяснял, как вещественные числа преобразуются в двоичный код, можете почитать, я прикреплю. ⭕️Разница в том, что к мантиссе прибавляем не число 127, а число 1023. Если число 6.25, это 110.01, опять же происходит два сдвига, потому что по формуле у нас в целой части должна быть единица, поэтому получается число 1.1001 * 10 ** 2, экспонента тут - 2, к ней прибавляем сдвиг 1023 и получаем 1025. По итогу, 1 это знак, 10000000001 это экспонента, 1011000... это мантисса
UPD: Рекомендую читать с самого начала !
👨💻2
🔗Я бы хотел вам пояснить за модули, которые помогли бы решить неточность вычислений, но оставим это на момент, когда столкнемся конкретно с изучением библиотек, чтобы сейчас не пересказывать обширную тему в двух словах.
⭕️ Поэтому, расскажу вам просто функцию round(number, digits). ❗️Первый аргумент это дробное число, а во втором (digits) указываем количество чисел после запятой. Второй аргумент по умолчанию равен нулю❗️. #Библиотеки
🔗Код:
⭕️ Поэтому, расскажу вам просто функцию round(number, digits). ❗️Первый аргумент это дробное число, а во втором (digits) указываем количество чисел после запятой. Второй аргумент по умолчанию равен нулю❗️. #Библиотеки
🔗Код:
a = round(7.2157, 3)
print(a) #Вывод:7.216
👨💻1
CodeLab
✅ Следующее задание #Дробная_часть, как раз тут нам поясняют проблему с числами типа float ,❗️ там чел оставил ссылку почитать, я вам ее прикреплю, но прям сильно другое там не написано, вчера я достаточно нормально все изъяснил. Сейчас решим задачку и я…
🔗Разберем еще одно решение с коментов.
0️⃣ Итак, для начала вводим строку (в нашем случае, допустим, 122.3676). Мы уже разбирали метод split(), он разбивает нашу строку, в нашем случае на 2 части, где разделителем будет точка " . ". Результатом на данном этапе будет ["122", "3676"].
1️⃣ Ну и видим, что в начале добавляется " 0. ", по итогу, получаем на выходе 0.3676.
⭕️ Кстати, дробную часть числа (3676) мы выбрали из за индекса [1], индексация у нас начинается с 0 как никак, поэтому выбираем 'вторую часть' разбитой строки. #split #float #Дробная_часть
🔗Код:
0️⃣ Итак, для начала вводим строку (в нашем случае, допустим, 122.3676). Мы уже разбирали метод split(), он разбивает нашу строку, в нашем случае на 2 части, где разделителем будет точка " . ". Результатом на данном этапе будет ["122", "3676"].
1️⃣ Ну и видим, что в начале добавляется " 0. ", по итогу, получаем на выходе 0.3676.
⭕️ Кстати, дробную часть числа (3676) мы выбрали из за индекса [1], индексация у нас начинается с 0 как никак, поэтому выбираем 'вторую часть' разбитой строки. #split #float #Дробная_часть
🔗Код:
a = '0.' + input().split('.')[1]
print(float(a))Итак, задание #Наибольшее_и_наименьшее, тут разберемся min() и max(). Аргументов у этих функций может быть любое количество, главное, чтобы они все поддерживали между собой операцию сравнения, типо мы не можем сравнивать строку с вещественным числом) Решение ниже 👇🏿
✅Функции min() и max() просто сравнивают считанные целые числа и код выводит наименьшее и наибольшее число. #Наибольшее_и_наименьшее
🔗Готовый код:
🔗Готовый код:
a = int(input())
b = int(input())
c = int(input())
d = int(input())
e = int(input())
print(str("Наименьшее число ="), min(a,b,c,d,e))
print(str("Наибольшее число ="), max(a,b,c,d,e))
#Сортировка_трех. Подаются три числа, нам нужно вывести об большего к меньшему, давайте думать
✅Итак, чтобы вывести максимальное и минимальное число проблем нет, мы уже изучили функции max() и min(). ‼️Чтобы вывести среднее, нам нужно сложить все три числа и вычесть максимальное и минимальное, как раз получаем среднее число. #Сортировка_трех #max #min
🔗Готовый код:
🔗Готовый код:
a, b, c = int(input()), int(input()), int(input())
print(max(a, b, c), a + b + c - min(a, b, c) - max(a, b, c), min(a, b, c), sep = '\n' )
✅Python: "Поколение Python": курс для начинающих. Ссылки на другие посты смотрите ниже, Базовые знания в отдельном посте, но многие темы разобраны по заданиям ниже.👇🏿
Задания не с курса:
🔗 Сумма чисел
‼️Целочисленная арифметика:
Сама Неотвратимость 2.5
Номер купе 2.5
‼️Задача из бесплатного курса Яндекс:
Шарики и ручки
‼️Условный оператор:
🔗Выбор из двух
Пароль 4.1
Четное или нечетное 4.1
Соотношение 4.1
Наименьшее из 4 чисел 4.1
Только Плюсы 4.1
🔗Логические операции
Принадлежность 3 (4.2)
Красивое число 4.2
Високосный год 4.2
Ход ладьи 4.2
Ход короля 4.2🌶
🔗Вложенные и каскадные условия
Вид треугольника 4.3
Серединное число 4.3
Количество дней 4.3
Самописный калькулятор 4.3
Пересечение отрезков 4.3🌶🌶
🔗Итоговая работа
Начало столетия 5.1
Шахматная доска 5.1
Шахматная доска 5.1 (обновленный)
Римские цифры 5.1
Ход слона 5.1 🌶
Ход коня 5.1
Ход ферзя 5.1
🔗Числовые типы данных: int, float
Две старушки 6.1
Обратное число 6.1
451 градус по Фаренгейту 6.1
Dog age 6.1
Первая цифра после точки 6.1
Сортировка трех 6.1
Наибольшее и наименьшее 6.1
Дробная часть 6.1
Дробная часть 6.1 (Еще одно решение)
Интересное число 6.1
Абсолютная сумма 6.1
Манхэттенское расстояние 6.1
🔗Строковый тип данных:
Тройные кавычки 6.2
Футбольная команда 6.2
Три города 6.2
Арифметические строки 6.2
Корректный email 6.2
🔗 Модуль math:
Евклидово расстояние 6.3
Площадь и длина 6.3
Средние значения 6.3
Тригонометрическое выражение 6.3
Пол и потолок 6.3
Квадратное уравнение 🌶🌶 (Второй способ)
Правильный многоугольник
🔗 Циклы for и while:
🧑💻Введение
Python is awesome (7.1)
Повторяй за мной 1 (7.1)
Последовательность символов (7.1)
Звездный прямоугольник (7.1)
Повторяй за мной 2 (7.1)
Квадрат числа (7.1)
Звездный треугольник 7.1
Звездный треугольник 7.1 (обновленный)
Популяция 7.1
🔗 Цикл for: (функция range):
Последовательность чисел 1 (7.2)
Последовательность чисел 2 (7.2) 🌶
Последовательность чисел 3 (7.2) 🌶 (Еще одно решение) 🌶 (И еще одно решение)
Последовательность чисел 4 (7.2)
Таблица умножения (7.2)
https://stepik.org/course/58852/syllabus — КУРС, КОТОРЫЙ МЫ ПРОХОДИМ
‼️🔗 Python: "Поколение Python": курс для начинающих (часть 2). — Курс с остальными заданиями 🧑💻
Задания не с курса:
🔗 Сумма чисел
‼️Целочисленная арифметика:
Сама Неотвратимость 2.5
Номер купе 2.5
‼️Задача из бесплатного курса Яндекс:
Шарики и ручки
‼️Условный оператор:
🔗Выбор из двух
Пароль 4.1
Четное или нечетное 4.1
Соотношение 4.1
Наименьшее из 4 чисел 4.1
Только Плюсы 4.1
🔗Логические операции
Принадлежность 3 (4.2)
Красивое число 4.2
Високосный год 4.2
Ход ладьи 4.2
Ход короля 4.2🌶
🔗Вложенные и каскадные условия
Вид треугольника 4.3
Серединное число 4.3
Количество дней 4.3
Самописный калькулятор 4.3
Пересечение отрезков 4.3🌶🌶
🔗Итоговая работа
Начало столетия 5.1
Шахматная доска 5.1
Шахматная доска 5.1 (обновленный)
Римские цифры 5.1
Ход слона 5.1 🌶
Ход коня 5.1
Ход ферзя 5.1
🔗Числовые типы данных: int, float
Две старушки 6.1
Обратное число 6.1
451 градус по Фаренгейту 6.1
Dog age 6.1
Первая цифра после точки 6.1
Сортировка трех 6.1
Наибольшее и наименьшее 6.1
Дробная часть 6.1
Дробная часть 6.1 (Еще одно решение)
Интересное число 6.1
Абсолютная сумма 6.1
Манхэттенское расстояние 6.1
🔗Строковый тип данных:
Тройные кавычки 6.2
Футбольная команда 6.2
Три города 6.2
Арифметические строки 6.2
Корректный email 6.2
🔗 Модуль math:
Евклидово расстояние 6.3
Площадь и длина 6.3
Средние значения 6.3
Тригонометрическое выражение 6.3
Пол и потолок 6.3
Квадратное уравнение 🌶🌶 (Второй способ)
Правильный многоугольник
🔗 Циклы for и while:
🧑💻Введение
Python is awesome (7.1)
Повторяй за мной 1 (7.1)
Последовательность символов (7.1)
Звездный прямоугольник (7.1)
Повторяй за мной 2 (7.1)
Квадрат числа (7.1)
Звездный треугольник 7.1
Звездный треугольник 7.1 (обновленный)
Популяция 7.1
🔗 Цикл for: (функция range):
Последовательность чисел 1 (7.2)
Последовательность чисел 2 (7.2) 🌶
Последовательность чисел 3 (7.2) 🌶 (Еще одно решение) 🌶 (И еще одно решение)
Последовательность чисел 4 (7.2)
Таблица умножения (7.2)
https://stepik.org/course/58852/syllabus — КУРС, КОТОРЫЙ МЫ ПРОХОДИМ
‼️🔗 Python: "Поколение Python": курс для начинающих (часть 2). — Курс с остальными заданиями 🧑💻
✅Задание #Интересное_число (6.1). Итак, разница максимальной и минимальной ровнялась средней по величине цифре, давайте делать 👨💻
‼️Кароч, нам же подается число, значит его нужно разбить на цифры, чтобы их сравнивать.
0️⃣Допустим, подается число 123: первым действием целочисленным делением находим первую цифру;
1️⃣цифру посередине находим сначала целочисленным делением на 10, получаем12 , а затем это ебанное 12 делим по модулю на 10 и получаем 2 .
2️⃣Ну и третье число, просто делим по модулю на 10, получаем3 . Не ебу зачем я это вам расписывал, но будете знать зато. Теперь вводим доп переменные x_max для нахождения максимальной цифры и аналогично с x_min. Еще мы ввели переменную s_average для нахождения серединной цифры, мы уже с вами разбирали как это находить, просто из суммы всех цифр вычитаем макс и мин. Ну и в самом конце вводим условие и задача решена. #Интересное_число
🔗Готовый код:
0️⃣Допустим, подается число 123: первым действием целочисленным делением находим первую цифру;
1️⃣цифру посередине находим сначала целочисленным делением на 10, получаем
2️⃣Ну и третье число, просто делим по модулю на 10, получаем
🔗Готовый код:
num = int(input())
a = num // 100
b = num // 10 % 10
c = num % 10
x_max = max(a,b,c)
x_min = min(a,b,c)
x_average = ((a+b+c) - max(a,b,c) - min(a,b,c))
if x_max - x_min == x_average:
print("Число интересное")
else:
print("Число неинтересное")
❤🔥1
✅Еще одно решение разберем. его я естественно позаимствовал с коментов, щас будем чекать:
❗️Подается нам строка, а функция list(input()) преобразует строку в список, то есть та же строка '123' будет представлена как ['1', '2', '3']. ⭕️⭕️
⭕️Функция max(n) находит максимальный символ в списке n, максимальным будет 3, вычитаем минимальный - 1.
⭕️Функции 🟰int(max(n)) и int(min(n))🟰 преобразуют эти символы в целые числа, затем выполняется вычитание, получаем 2, а вот str() преобразует обратно в строку, так как у нас еще есть оператор in, который нужен для проверки того, содержится ли строка в списке строк. В общем как то так
🔗Готовый код:
❗️Подается нам строка, а функция list(input()) преобразует строку в список, то есть та же строка '123' будет представлена как ['1', '2', '3']. ⭕️⭕️
⭕️Функция max(n) находит максимальный символ в списке n, максимальным будет 3, вычитаем минимальный - 1.
⭕️Функции 🟰int(max(n)) и int(min(n))🟰 преобразуют эти символы в целые числа, затем выполняется вычитание, получаем 2, а вот str() преобразует обратно в строку, так как у нас еще есть оператор in, который нужен для проверки того, содержится ли строка в списке строк. В общем как то так
🔗Готовый код:
n = list(input())
if str(int(max(n)) - int(min(n))) in n:
print("Число интересное")
else:
print("Число не интересное")
❤🔥1
Навигация по Python: Базовые знания языка. Многие темы разбирались в курсе 'Поколение Python', ссылку смотрите ниже
UPD: Уже на момент прочтения данного поста, по ссылке ‼️Python: "Поколение Python": курс для начинающих.‼️ вы сможете увидеть дополнительное пояснение различных тем на примере решения задач из курса, спасибо за внимание ❤️
Переменные
Операторы and or
Операторы
Деление
Циклы
Условный оператор
Операторы and or
Функция str() (обновленный)
Функция str()
Оператор in
Метод split()
Метод split()
Вложенные циклы
Типы данных
Continue, break, pass
f" строки
Тройные кавычки
Функции модуля math
Синтаксис модуля math
Тернарное условие
Функция bin()
Генератор списка
Функции (целый проект)
Метод join()
Внешняя и внутренняя функция
*args **kwargs 🟰 Продолжение
Рекурсия 🟰 Продолжаем изучать рекурсию 🟰 Продолжаем изучать рекурсию
__________________________________
🟰Н А В И Г А Ц И Я🟰
UPD: Уже на момент прочтения данного поста, по ссылке ‼️Python: "Поколение Python": курс для начинающих.‼️ вы сможете увидеть дополнительное пояснение различных тем на примере решения задач из курса, спасибо за внимание ❤️
Переменные
Операторы and or
Операторы
Деление
Циклы
Условный оператор
Операторы and or
Функция str() (обновленный)
Функция str()
Оператор in
Метод split()
Метод split()
Вложенные циклы
Типы данных
Continue, break, pass
f" строки
Тройные кавычки
Функции модуля math
Синтаксис модуля math
Тернарное условие
Функция bin()
Генератор списка
Функции (целый проект)
Метод join()
Внешняя и внутренняя функция
*args **kwargs 🟰 Продолжение
Рекурсия 🟰 Продолжаем изучать рекурсию 🟰 Продолжаем изучать рекурсию
__________________________________
🟰Н А В И Г А Ц И Я🟰
❤🔥1
a = float(input())
b = float(input())
c = float(input())
d = float(input())
e = float(input())
print(abs(a) + abs(b) + abs(c) + abs(d) + abs(e))
#Абсолютная_сумма. Смарите, тут ниче сложного, просто вводим 5 int(input()) и складываем их модули через функцию abs. #abs
p1 = int(input())
p2 = int(input())
q1 = int(input())
q2 = int(input())
print(abs(p1 - q1) + abs(p2 - q2))
#Манхетонское_расстояние Аналогичная по сложности задача, читаем условие, переписываем формулу для нахождения этого самого расстояния и готово, саму функцию abs мы с вами разбирали.
⚙️ Навигация по алгоритмам: (книга Адитьи Бхаргавы 'Грокаем Алгоритмы'): big(O), Tsp, а также разбор интересных тем, например, почему 0.1 + 0.1 != 0.2...Ниже также будут посты с подтемами.
🧑💻(Большой материал):
🔗Связанные списки и массивы (отдельный пост)🔗
🖇 Big(O) и бинарный поиск 🖇
🌶 TSP - Задача про коммивояжера 🌶
🟰Проблема чисел с плавающей точкой🟰
⚙️ Алгоритм сортировки выбором ⚙️
__________________________________
🟰Н А В И Г А Ц И Я🟰
🧑💻(Большой материал):
🔗Связанные списки и массивы (отдельный пост)🔗
🖇 Big(O) и бинарный поиск 🖇
🌶 TSP - Задача про коммивояжера 🌶
🟰Проблема чисел с плавающей точкой🟰
⚙️ Алгоритм сортировки выбором ⚙️
__________________________________
🟰Н А В И Г А Ц И Я🟰