Не так давно в комментариях с @Linda_M и @Rian обсуждали выпечку и я сказала, что когда мне лень раскатывать коржи - я делаю торт в формате трайфла. Т.е. просто испёк один корж, разрезал или вообще порвал его руками на кусочки и бросаешь в контейнер: крем, куски коржа, опять крем и так в несколько слоёв.
Прям на ленивую кулинарию оно, может, и не потянет, но если сравнивать с процессом изготовления классического торта, который нормальные люди даже на кусочки режут, а не жрут просто вилками, как мы, то это очень даже лениво :D
Ну и мне лично удобно делать такое сразу в нескольких небольших контейнерах и давать с собой мужу на работу.
ВНИМАНИЕ: ТУТ ПОНАДОБИТСЯ МИКСЕР! Можно и вручную взбивать крем, но это ёбля
Есть у меня самый ходовой рецепт торта, который я собрала из двух: коржи взяла из одного рецепта, крем вообще нашла когда-то в другом десерте, потом меняла пропорции и стала ориентироваться уже на объём, в который уйдёт целая банка сгущёнки. Но и с тем, и с тем возни немного, поэтому, если хочется быстрого домашнего торта, он обычно в списке первых у меня)) Сегодня вот и захотелось его сделать, тем более, дома как раз оставались сливки после чизкейка.
Влечу с этим рецептом в ленивую кухню, где меня отпиздят ногами скорее всего, но, может быть, это и была моя цель?
Для коржа:
- мука - 150гр.
- разрыхлитель теста - 5 гр.
- соль - 1 щеп.
- какао-порошок - 20 гр.
- молоко - 140 мл.
- масло растительное - 40 гр.
- масло сливочное (растопленное) - 40 гр.
- сахар - 100 гр.
- яйцо - 1 шт.
Для крема:
- творожный сыр - 350 гр.
- сливки 33% - 200 мл.
- сгущёнка - 1 банка (370 гр.).
Корж делается просто:
1. Смешать все сухие ингредиенты в одной чашке.
2. Смешать все жидкие в другой.
3. Соединить одно с другим и перемешать.
4. Вылить на противень и запекать ~20 минут на 170°
5. Ну и дать остыть, а потом разрезать/разломать на небольшие кусочки))
Крем ещё проще:
Вывалить всё в одну миску и взбивать, пока оно однородным не станет.
Он будет жидкий и воздушный, не как для привычного торта. Так и должно быть.
Ну и сборка:
Немного крема на дно, сверху набросать кусочки коржа, дальше ещё залить кремом.
И так до верха, финальным слоем должен быть крем.
Если останутся обрезки коржей ни в пизду ни в жопу - можно их раздолбать в крошки (блендером/скалкой/руками - не важно) и посыпать ими поверх крема. У меня их почти не осталось, поэтому я их сожрала. Прастити *Кирюха.жпг*
И всё. В холодильник на ночь и на завтрак уже можно будет пороть торт)
Выглядит как хуйня, но это вкусно :D
Так можно извращаться с любым другим рецептом - кто вам запретит?))
Пост не рекомендуется для лиц с тонкой душевной организацией и для тех, кто совершенен в своем деле...
.
.
...и вообще не читайте его.
Понятненько?
.
.
.
.
.
а теперь?
Тут глупости, написанные таким же глупым человеком. Поэтому считайте, что пост написал умственно отсталый инвалид, который заслуживает снисхождения.
Каждый, думающий, что он умеет в программирование, должен нацарапать калькулятор и безумно гордиться своей поделкой(С) выпячив грудь, ибо его шэдэвор неповторим, уникален (нет) и вапще я у мамы самый красивый.
Но думать что ты Гуру кодинга вовосе необязательно, достаточно верить в себя и быть настолько смелым, чтобы показать свои высеры публике, подставив панамку.
Ну и главное не забывать делать вид, что ты во всём этом разбираешься, и сделать содержимое ниже - это как два пальца об асфальт, оставив за кадром сопли, слёзы и прочие выделения человеческого организма.
Ну штош, пришло время приступить и надеяться на то, что всё было предусмотрено, любая ситуация была смоделирована, тесты прошли успешно и, казалось бы, можно уже начать заниматься математикой.
Самое главное при создании какой-либо программулины - это диалог с тем, кто пользуется вашими поделками. Но, как вы понимаете, это вовсе не обязательно, поэтому в первой версии вычислительного скрипта поздороваемся сдержанно и без всяких там панибратств.
Поприветствуем юзверя)))
# Ты запустил эту хуйню. Теперь обратного пути нет.
print("Простой калькулятор. Введи q, чтобы выйти.") # Тебе дан шанс пойти по своим делам или воспользоваться каклькуляторов в тефоне
# ---------------- Погнали в бесконечный цикл!!! Или тебе надо два плют два сложить?? ----------------
while True: # Игра началась. Хули смотришь? Действуй.Про вайл тру - после кода ниж)))
# Пытаемся вытянуть из пользователя первое число. Стрип на случай, если он долбоёб и понаставил пробелов.
first = input("Первое число (или q для выхода): ").strip()
if first.lower() == "q": # Умный выбор. Всё бросить и уйти. Завидую.
print("Пока!") # Прощай, свободный человек!
break # Вырываемся из ада бесконечного цикла. УРА!
# ---------------- ловим чуш на вводе ----------------
try:
a = float(first) # Попытка превратить введённый бред в число. Молимся.
except ValueError: # А вот и нет, тут не число! Типуля за капмуктером опять что-то наклацал.
print("Это не число. Попробуй ещё раз.") # Терпеливо объясняем очевидное. Опять.А можно было бы и матом
continue # Отматываем плёнку и заставляем его страдать с начала.
# ---------------- че делаем-то? ----------------
op = input("Операция (+ - * /): ").strip() # Выбор, от которого зависит всё.
# Проверяем, не долбоёб ли пользователь, который ввёл знак из другого математиичкского мирв.
if op != "+" and op != "-" and op != "*" and op != "/":
print("Нужна одна из операций: + - * /") # Говорим по-русски, что мы тут умеем.
continue # Назад, в начало, учить матешу!
# ---------------- а теперь фторой кондедат ----------------
second = input("Второе число: ").strip() # Снова пытаемся добыть цифру из дикого зверя по имени Пользователь.
try:
b = float(second) # Вторая попытка. Пальцы скрещены.
except ValueError: # Блядь! Опять провал. Он неисправим.
print("Это не число. Попробуй ещё раз.") #вздох Повторяем мантру.
continue
# ----------------смотрим че получилось ----------------
if op == "+": # Если выбрал плюс — всё просто, как два пальца обоссать
result = a + b # Складываем. Надеемся, числа не слишком большие.
elif op == "-": # Вычитание. Уносим готовенькое.
result = a - b
elif op == "*": # Умножение. Всё растёт, как на дрожжах.
result = a * b
else: # А вот и деление... Наше всё, источник вечных ошибок.
if b == 0: # ОПАСНОСТЬ! Пользователь пытается разделить на ноль и схлопнуть вселенную кхуям
print("Ошибка: деление на ноль") # Срочно останавливаем это безумие.
continue # И отправляем его в начало без результата. Пусть думает над своим преступлением.
result = a / b # Если ноля нет — делим спокойно. Фух.
# ---------------- ФИНАЛ. ПОКАЗЫВАЕМ, НА ЧТО СПОСОБНА ЭТА ХУЙНЯ ----------------
print("Результат:", result) # Выводим то, ради чего всё это начиналось. Наслаждайся, мамкин математик.
Как видите это вообще такое простое скучное и беспонтовое решение, и на первый взгляд самодостаточное.
но!!!!
Это фигня собачачья!!! Потому что делает пользование калькулятором невохможным, ибо взаимодействие с ним выглядит так:
Первое число (или q для выхода): 12
Операция (+ - * /): +
Второе число: 85
Результат: 97.0
Первое число (или q для выхода): 23
Операция (+ - * /): *
Второе число: 45879
Результат: 1055217.0
Первое число (или q для выхода):
После ввода каждого числа нада жмать Интер, а это тупо, садомазохично и не юзерфрендли. Юзер не секретарша на клавиатуре. Он царь и бог, который хочет ввести 5 + 3 и сразу, блять, получить ответ, а не участвовать в этом концерте одинокого пианиста для трёх рук - число-энтер-оператор-энтер-число-энтер.
Логичным будет задать вопрос: "асхуяле?" Потому что консольный ввод (input()) в питоне это тупой, линейный идиот. Он читает строку только до переноса строки. Он не умеет в реальном времени, как человек в калькуляторе. Он слепой старик, который просит тебя говорить по одному слову и стучать палкой по голове после каждого.
Можно отказаться от input() и читать всё одной строкой, как нормальные люди. Потом самому разбирать, где числа, где операторы.
Это круто, мощно, молодёжно, но это уже не 10 строк кода, а отдельная ёбля.
# Примерно так выглядит вход в лигу крутых типочков
expression = input("Введи весь пример (например, 5+3): ").replace(" ", "")
# А дальше надо эту строку распетушить на числа и знаки внимания
# проверить, что там нет букв, обработать приоритеты (приоритеты - это
# што вычисляется вначаеле - сложение или умножение, в скопках или за ними
# думаю со школы помните)
# Короче, адский труд для ТСа. Но зато одной строкой!
Есть два стула
Есть несколько путей:
Путь Воина (сделать свою дичь) - сложна...
Путь хитросделанного и рационального (найти готовую библиотеку) - просто
Ну или воспользоваться тем, который есть в вашей, простигосподи, винде - но тогда и пост нахуй не нужен.
Путь воена, Света:
Итак, блять, путь воина. Это не для слабаков. Это когда ты говоришь стандартному input(): иди нахуй со своим энтером и начинаешь парсить (левои или правой - не важно) всё сам, разрывая строку голыми зубами.
Зырим
Отказываемся от пошагового опроса. Берем всё выражение одной строкой: "5 + 3 * 2". А потом начинается адский труд (для ТС конечно же, ибо тру программистам - это как в носе ковырять): надо превратить эту строку в числа и операторы, понять приоритет, посчитать. Это как узнать рецепт кокаколы с помощью масспектрометра и наколотить такую же с газиками. Ну почти.
Первым делом надо выкинуть из строки пробелы, чтобы они не мешались. Пользователь мог написать и 5+3, и 5 + 3, и 5 + 3 - а нам похуй.
expression = input("Введи выражение, герой (типа 5+3 или 2*4): ").replace(" ", "")
# теперь тут голая строка без пробелов "5+3*2"
Теперь разбираем на хапчасти эту строку (числа и операторы), это самый ебучий момент. Надо пройтись по строке символ за символом и понять, где кончается одно число и начинается оператор. Число может быть 5, а может быть -12.5. Оператор, если что это +, -, *, /. Может быть даже ** для степени.
Делается это обычно через конченный автомат (state machine). Грубо говоря идём по строке и включив размышлительниншну бурчим себе под нос:
Сейчас я читаю цифру - это часть числа. Встретил точку - это тоже часть числа (дробная). Встретил плюс/минус/умножить/поделить - всё, число закончилось. Запоминаем число, запоминаем оператор, начинаем собирать новое число.
вот простой пример:
primer = [] # Сюда будем складывать то, шо нашли
current_number = '' # Здесь накапливаем цифры текущего числа
for char in expression:
if char.isdigit() or char == '.': # Если это цифра или точка то это часть числа
current_number += char
else: # Если это не цифра (значит, имератор)
if current_number: # Если до этого собирали число
primer.append(float(current_number)) # записать число
current_number = '' # обнулить сборшык
primer.append(char) # записать сам оператор
# не забыть про последнее число в строке
if current_number:
primer.append(float(current_number))
# Теперь вся хуйня для "5+3*2" будет выглядеть так: [5.0, '+', 3.0, '*', 2.0]
Помните про уроки матепатики и приоритеты считания? Вот тут пиздец. Есть список, который primer - это [5.0, '+', 3.0, '*', 2.0]. Если выполнять слева направо, получится (5+3)*2 = 16. Но математика говорит, что умножение приоритетнее!!!!111 Должно быть 5 + (3*2) = 11.
Значит, нужно пройти по списку несколько раз. Сначала найти все умножения и деления (*, /), выполнить их, и заменить в списке тройку элементов (число, оператор, число) на одно число (результат). Потом повторить для сложения и вычитания (+, -).
Это можно делать на месте, изменяя список primer, пока в нём не останется одно число которое итоговый результат.
например
i = 0
while i < len(primer):
if primer[i] == '*':
# умножение детектед. ьерём предыдущее и следующее числа
result = primer[i-1] * primer[i+1]
# меняем тройку элементов на результат: [..., a, '*', b, ...] -> [..., result, ...]
primer[i-1:i+2] = [result] # заменить нада
i -= 1 # откатитть индекс, потому что список стал короче
i += 1
# и анал огично для '/', затем для '+', '-'
Обрабатываем нештатное ситуфциё - без этого никуда. Юзер непредсказуем! А что, если он ввёл 5++3 или 12.*7 или просто "у меня большой хуй"? Парсер должен не сломаться, а красиво послать нахуй. Нужны проверки на каждом шагу, например в строке только разрешённые символы (цифры, точка, операторы), число точек в числе не больше одной, после оператора идёт число (а не другой оператор), деления на ноль нет, список primer в итоге имеет правильную структуру - чередование число-оператор-число или 2 + хуй?
в итоге получается полный (нет) контроль. Можно добавить скобки (), унарные минусы -5, степени **, функции sin(). Но цена этого огромная, ебучая работа, тонны кода для разбора и валидации, и постоянные баги на ёбнутых случаях вроде -.5 + .3).
Это путь для тех, кому надо понять, как всё устроено изнутри, или для тех, кому нужна кастомная, очень специфичная штука некакувсех. Для обычного калькулятора это избыточное оверкилл-масло, высеченное из гранита ногтяме Кукухи.
Но, резюмируя, это не для пользы, а это про силу воли, упрямство и желание сделать всё своими руками, даже если для этого придётся изобрести свою велик срулём. Удачи че, воен. Ты её, блять, заслужил.
Собствено вот, зырьте какая большая ебала получается:
# арём главной функцией, дескать она тут правит бал!!!111
def calculate_warrior_style():
"""
Калькулятор ниибического вида.
Принимает примерчики типа "5+3*2" и считает с учётом приоритета вычислкний.
Поддерживает скобки, минусы и степень (**).
"""
# вводим в курс дела, юзер должен понять, куда он попал.
print("=== КАЛЬКУЛЯТОР ===")
print("пеши выражение одной строкой. Поддерживаются + - * / **, скобки и числа с точкой.")
print("Пример: 5+3*2 или 10.5 / 2 - 1 или -(2+3)**2") #юзер всё равно чтото сломает....
print("Введи 'q' для выхода. Удачи, ёпта.\n")
# Бесконечный цикл. Выход только через break или смерть.
while True:
# спрашиваем "че надо?".
raw_input = input("Твоё выражение (или q): ").strip() # strip() отрезает пробелы по краям, на случай если он долбоёб.
if raw_input.lower() == 'q': # Если ввёл q (даже заглавную) это капитуляция.
print("пока, слабак") # Прощаемся с честью.
break # Ломаем цикл. Свобода. теперь питание компьютера можно отключить
# наведем порядок, уберем хлам
expression = raw_input.replace(" ", "") # выкуриваем ВСЕ пробелы из середины. Они нам не нужны.
if not expression: # Если после чистки осталась пустота...
print("Ты ввёл пустоту. Великий воин молчит.") # ...сообщаем о творческом кризисе.
continue # Отматываем цикл назад, пусть вводит заново, ёбаный хуй
# превращаем строку в запчасти).
try:
primer = primerize(expression) # Вызываем функцию-ошибалку. Она может выплюнуть ошибку.
except ValueError as exc: # Если мясорубка сломалась и выплюнула ValueError...
print(f"Ошибка: {exc}") # ...показываем пользователю, в чём он мудак.
continue # И заставляем его страдать с начала.
# гля прикол - делаем из (5+3) в обратную польскую запись (5 3 +). Так легче считать.лол
try:
rpn = to_rpn(primer) # косплей сортировочной станции. Мозголомно, но работает.
except ValueError as exc: # Если алгоритм нашел кривые скобки...
print(f"Ошибка: {exc}") # ...тыкаем пользователя в его же косяк.
continue # Нахуй иди исправляй.
# смотрим что наваяла обратная польская запись.
try:
result = eval_rpn(rpn) # Берём и начинаем жать.
except ValueError as exc: # Если не хватило чисел или деление на ноль...
print(f"Ошибка: {exc}") # ...объясняем, что он натворил.
continue # И отправляем в начало.
# неужели написал правильно??? ахуеть - выдаем результат.
print(f"Результат твоего высера: {result}") # Пользователь доволен. Мы измотаны.
print("-" * 40) # Рисуем разделитель. Эстетика, блять.
# ========== функция primerize о которой была речь выше) ==========
# Берёт строку и с остервенением кромсает её на числа, операторы и скобки.
def primerize(expression):
primer = [] # Сюда будем складывать добычу: числа и операторы.
i = 0 # Указатель. Бежит по строке, как алкаш по бутылкам.
prev_type = None # Следим, что было прошлым: число('num'), оператор('op'), скобка. Чтобы отличить унарный минус.
# Главный цикл чтения строки. Пока не кончится.
while i < len(expression):
char = expression[i] # Берём текущий символ.
# Если пробел то игнорируем, их уже вырезали, но на всякий.
if char.isspace():
i += 1
continue
# Если символ цифра или точка, значит, это начало чилса
if char.isdigit() or char == ".":
start = i # Запоминаем, где число началось.
dots = 0 # Щёчик точек в числе (больше одной это ошибка).
digits = 0 # Счётчик цифр (ноль цифр это тоже ошибка).
# Пока не кончилась строка и идут цифры/точки, собираем число.
while i < len(expression) and (expression[i].isdigit() or expression[i] == "."):
if expression[i] == ".":
dots += 1 # Нашли точку и запомнели
else:
digits += 1 # Нашли цифру. Тоже запоминаем.
i += 1 # Переходим к следующему символу.
# Вырезаем кусок строки от start до i это наше число в виде строки.
number_str = expression[start:i]
# Проверяем фсю хуйню: если точек >1 или цифр нет, то это не число.
if dots > 1 or digits == 0:
raise ValueError(f"это не число блять!!!! '{number_str}'") # Выбрасываем ошибку наверх.
primer.append(float(number_str)) # Превращаем строку в float и кладём в список.
prev_type = "num" # Запоминаем, что последним было число.
continue # Переходим к следующему символу.
# Если символ звёздочка и следующая за ней тоже звёздочка, это оператор степени '**'.
if char == "*" and i + 1 < len(expression) and expression[i + 1] == "*":
op = "**" # Это оператор.
i += 2 # Перепрыгиваем сразу два символа.
# Иначе, если символ,то один из разрешённых операторов или скобок...
elif char in "+-*/()":
op = char # Это наш оператор или скобка.
i += 1 # Переходим к следующему символу.
else:
# Если символ не опознан это пиздец. Выбрасываем ошибку.
raise ValueError(f"че за хуйня? '{char}'")
# ----- Обработка ЛЕВОЙ скобки ( -----
if op == "(":
# в нашем случае цобка не может идти после числа или другой правой скобки без оператора. Пример: 5( или )(.
if prev_type in ("num", ")"):
raise ValueError("пропущен оператор перед '('")
primer.append(op) # Кладём скобку в список.
prev_type = "(" # Запоминаем, что была скобка.
continue # Едем дальше.
# ----- Обработка ПРАВОЙ скобки ')' -----
if op == ")":
# Скобка не может идти после оператора или другой левой скобки. Пример: +) или ().
if prev_type in (None, "op", "("):
raise ValueError("лишняя ')' или пустые скобки, повнимательнее там")
primer.append(op) # Кладём скобку в список.
prev_type = ")" # Запоминаем.
continue # Едем дальше.
# ----- Обработка УНАРНОГО МИНУСА (например, -5 или -(2+3)) -----
# Если текущий оператор '-' и перед ним ничего не было (начало строки) или был оператор/левая скобка...
if op == "-" and (prev_type is None or prev_type in ("op", "(")):
primer.append("u-") # Кладём специальный "унарный минус".
prev_type = "op" # Запоминаем, что был оператор.
continue # Едем дальше.
# ----- Обработка ОБЫЧНЫХ БИНАРНЫХ ОПЕРАТОРОВ (+, -, *, /, **) -----
# Оператор не может быть в начале или после другого оператора/левой скобки. Пример: +5 или (*.
if prev_type in (None, "op", "("):
raise ValueError(f"оператор '{op}' стоит не на месте")
primer.append(op) # Всё зоебок, кладём оператор в список.
prev_type = "op" # Запоминаем.
# Проверка после разбора всей строки. Выражение не может кончиться оператором или открытой скобкой.
if prev_type in (None, "op", "("):
raise ValueError("так примеры не пишут! выражение не может заканчиваться оператором или '('")
return primer # Возвращаем гордый список токенов.
# ========== ФУНКЦИЯ-ПЕРЕВОДЧИК (to_rpn) ==========
# Превращает обычную запись в обратную польскую с помощью сортировочной станции.
def to_rpn(primer):
output = [] # Сюда пойдёт итоговая RPN-последовательность.
stack = [] # Временный стек для операторов и скобок.
# Словарь приоритетов: чем больше цифра, тем круче оператор.
precedence = {"u-": 3, "**": 4, "*": 2, "/": 2, "+": 1, "-": 1}
right_assoc = {"u-", "**"} # Множество право-ассоциативных операторов (для степени и унарного минуса).
# Идём по каждому primer на входе.
for token in primer:
# Если оно число, сразу отправляем его на выход.
if isinstance(token, float):
output.append(token)
continue
# Если оно левая скобка, пихаем её в стек.
if token == "(":
stack.append(token)
continue
# Если правая скобка, выталкиваем из стека ВСЁ до левой скобки в output.
if token == ")":
while stack and stack[-1] != "(": # Пока стек не пуст и наверху не '('...
output.append(stack.pop()) # ...выталкиваем операторы в output.
if not stack: # Если стек опустел, а '(' так и не нашли...
raise ValueError("скобки не совпадают") # ...скобки кривые.
stack.pop() # Выкидываем саму '(' из стека.
continue
# Если это оператор (унарный или бинарный)...
if token in precedence:
# Пока в стеке есть операторы с БОЛЬШИМ ИЛИ РАВНЫМ (для лево-ассоциативных) приоритетом...
while stack and stack[-1] in precedence:
top = stack[-1] # Смотрим на верхний оператор в стеке.
# Сравниваем приоритеты с учётом ассоциативности.
if (token not in right_assoc and precedence[token] <= precedence[top]) or (
token in right_assoc and precedence[token] < precedence[top]
):
output.append(stack.pop()) # Выталкиваем старый оператор в output.
else:
break # Иначе останавливаемся.
stack.append(token) # Кладём текущий оператор в стек.
continue
# Сюда попасть не должны. На всякий — ошибка.
raise ValueError(f"непонятно че вапще'{token}'")
# Когда все эти штуки обработаны, выталкиваем оставшиеся в стеке операторы в output.
while stack:
top = stack.pop() # Берём верхний элемент.
if top in ("(", ")"): # Если это скобка значит, они не совпали.
raise ValueError("скобки не совпадают")
output.append(top) # Иначе отправляем в output.
return output # Возвращаем чистую, прекрасную рпн.
# ========== ФУНКЦИЯ-ВЫЧИСЛИТЕЛЬ (eval_rpn) ==========
# Считает результат по обратной польской записи.
def eval_rpn(primer):
stack = [] # Рабочий стек для чисел.
# Идём по каждому токену в RPN-последовательности.
for token in primer:
# Если токен число, просто пихаем его в стек.
if isinstance(token, float):
stack.append(token)
continue
# Если токен унарный минус, берём одно число из стека, меняем знак и кладём обратно.
if token == "u-":
if len(stack) < 1: # Проверяем, что в стеке есть хотя бы одно число.
raise ValueError("унарный минус без числа")
stack.append(-stack.pop()) # Берём число, меняем знак, кладём обратно.
continue
# Для бинарных операторов нужно ДВА числа из стека.
if len(stack) < 2:
raise ValueError("недостаточно чисел для операции")
b = stack.pop() # Второй аргумент (справа).
a = stack.pop() # Первый аргумент (слева).
# Смотрим, какой оператор, и делаем соответствующую хуйню.
if token == "+":
stack.append(a + b)
elif token == "-":
stack.append(a - b)
elif token == "*":
stack.append(a * b)
elif token == "/":
if b == 0: # Проверяем святое деление на ноль.
raise ValueError("еблан - деление на ноль")
stack.append(a / b)
elif token == "**":
stack.append(a ** b)
else:
raise ValueError(f"че надо-то? '{token}'")
# В конце в стеке должно остаться РОВНО ОДНО число результат.
if len(stack) != 1:
raise ValueError("ошибка вычисления")
return stack[0] # Возвращаем это число плод наших трудов.
# ========== ТОЧКА ВХОДА ==========
if __name__ == "__main__":
calculate_warrior_style() # ...запуск шайтан машыны
Оно трудное, большое и никому нахуй неужное, но существует))) и с дружелюбным "интерфейсом"
=== КАЛЬКУЛЯТОР ===
пеши выражение одной строкой. Поддерживаются + - * / **, скобки и числа с точкой.
Пример: 5+3*2 или 10.5 / 2 - 1 или -(2+3)**2
Введи 'q' для выхода. Удачи, ёпта.
Твоё выражение (или q): (2+9*458)-148*789/36987
Результат твоего высера: 4120.842890745397
----------------------------------------
ну и на больших степенях не охуевайте - эта хуёва туча, умноженная сама на себя 4545 рази в результате это число с десятками тысяч цифр. Вот нахуя оно вам? Оно настолько огромное, что стандартный тип float (число с плавающей запятой) в питоне просто не может его в себя вместить. У float есть максимальный предел, после которого он говорит "Идите нахуй Извини, ботан, я сдаюсь, это бесконечность и мы такого еще не проходили"
Твоё выражение (или q): 5 + 7 + (4895875/785545+987565 )**789 + 78798**4545
Traceback (most recent call last):
File "/calc.py", line 248, in <module>
calculate_warrior_style() # ...запуск шайтан машыны
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/calc.py", line 44, in calculate_warrior_style
result = eval_rpn(rpn) # Берём и начинаем жать.
^^^^^^^^^^^^^
File "/calc.py", line 235, in eval_rpn
stack.append(a ** b)
~~^^~~
OverflowError: (34, 'Numerical result out of range')
Так что вот вам ещё доза ненужной информации на сегодня, ну для разнообразия, думаю, пойдёт. Ах да, и наверняка в комментарии придут специалисты в данной области которые скажут что в ТС мудак - собственно ради этого всё и писалось 🥹
Когда-то давно муж рассказал, что дедушка его друга (@XAY_FOREVER) делал пиздатые оладушки, которые получаются ну вот прям очень пышными, на пончики похожие. И мы выудили у него рецепт.
Итак, делюсь и с вами:
- Ряженка - 400 мл.
- Манная крупа - 1/2 стакана
- Яйцо - 2 шт.
- Растительное масло - 1 ст.л.
- Сода - 1/2 ч.л.
- Сахар - 3 ч.л.
- Соль - 1 щеп.
- Мука - на глаз, для густоватой консистенции (как у йогурта. гуще, чем на блины. густота нередко зависит от ряженки, при жидкой понадобится примерно пару стаканов муки)
Для начала вылить почти (!) всю ряженку и смешать её с манкой. Оставить пару столовых ложек ряженки в банке - она нам понадобится, чтобы гасить ей соду. Перемешать и оставить манку разбухать на 20 минут.
По истечении 20 минут, соду, как я уже сказала выше, высыпать в остатки ряженки, перемешать, запульнуть ко всему и добавить оставшиеся ингредиенты. И делать ВЖЖЖ блендером. Муку лучше добавлять постепенно, ориентируясь на консистенцию.
густое. зоебис.
Ну а дальше масло на сковородку, сковородку на плиту и готовимся засирать всё
Жарятся они пиздецки быстро. От этого у меня веселье - переворачивать приходится, когда верхушка ещё не до конца схватилась, поэтому прекраснейших кругляшек у меня пока не выходило :D
Ну да и хуй с ними
бляди потекли
Становятся похожи то ли на пончики, то ли вообще на мини-пирожки. Поднимаются хорошо.
Во, ебать! Сегодня делала двойную порцию, так что там ещё за кулисами такая же вторая миска... (уже съедено, прастити)
Из остатков теста на последней партии пыталась сделать хуй. Почти вышло, но пока пальцем поправляла...я порвала хуй. Нет мне прощения. Заебала, иди спи, блять.
А началось всё с того, что в прошлый раз мы купили одну из моих давнишних хотелок - кленовый сироп... Ну и надо ж было его затестить))
Во флудилке уже отчиталась, ебану и тут: вкус и запах жжёного сахара. Вкусное. Но за такие конские бабки это что-то из разряда высокого. Во! Как раз к улиткам, @Warp_World :D
Пришла неприятность, откуда не ждали. Лопнула башка, отвалилась к хуям собачьим.
Так вот, вопрос. Как ее, блять, на место поставить?
Я ее уже ставил на место. Сейчас расскажу, как.
Короче, давным-давно, лет 10-12 назад, точно не помню, уже у этой гитарки отпадала голова, путем того, что она ебнулась на пол с довольно высокой высоты.
ну не придумал ничего лучше как посадить ее на имеющуюся эпоксидку, стянув струбцинами на неделю.
и эксперимент удался, правда эстетика хромала, потому что эпоксидка ну никак цветом не подходила на цвет дерева, но это хер с ним, главное функциональность, верно?
функциональность была восстановлена, инструмент работал, все было отлично, но вот буквально с несколько дней назад башка отвалилась опять.
причем не по месту склеивания, а раскололась рядом, поэтому делаю выводы, что надо ее приклеить на место и усилить какой-нибудь пластинкой.
вот такой вот вариант немножко подумал.
в принципе на внешний вид насрать, вообще, абсолютно, какой он там будет - красивый, белый, черный, зеленый или сопли текти будут, это вообще не имеет значения, главное восстановить функциональность.
но тут вдруг вспомнил, что у нас же есть великолепное сообщество с кучей грамотных людей и прежде, чем делать снова безрассудный поступок, решил узнать ваше мнение: каким макаром еще можно склеить, склепать, усилить, чтоб ее еще лет на 10 хватило хотя бы.
Захотелось мне вдруг пиццу, да не бездушную из доставки, а домашнюю. Быстро достала всякого из холодильника, накрошила в чашечки.
тут ветчина из индейки, репчатый лук, болгарский перец, маслины, маринованные огурцы, черри и сыр
Полезла в шкаф за мукой для теста... А у меня же её, блин, нет. Всё есть, а муки нет! Что же делать, что же делать... На улице холодно, для доставки нужно набирать на минимальную сумму заказа, а мне больше ничего не надо. И тут взгляд упал на остатки рисовой муки (в прошлый раз из неё вышли прекрасные панхуйкипанкейки) и Геркулес. Ладно, сострою из себя ППшницу.
Смешала два яйца, соль, два стакана молока, к ним добавила стакан мелко перемолотого геркулеса (не в муку, но около того) и, собственно, остатки рисовой муки, может, с полстакана. И на всякий случай сыпанула разрыхлителя.
С сомнением оглядела довольно жидкое тесто, но была не была. Вылила в форму, притопила начинку и закинула в духовку. (На самом деле ингредиентов оказалось на два противня)
И знаете, получилось лучше, чем я ожидала. Не пицца, конечно, но вполне неплохой пирог.
По мнению сибиряков и прочих северных народностей нашей необъятной родины, Краснодар считается южной пальмовой столицей,
где погода живет по своему, по желанию левой пятки, но никак не по здравому смыслу.
Буквально вчера можно было ходить в шортах и думать, что зима - это все выдумки жителей России, или какой-то тупорылый анекдот про Север и про чукчей.
А сегодня проснувшись утром обнаруживаю лютый ливень, мокрый, который вода, вот эти капли, которые в ебало летят обычно и лужи потом на дорогах такие ебучие огромные хуйни.
Но стоило пойти умыть ебало, помыть его после предпонедельничной бессонной ночи, как выхожу и слышу, что капать дождик прекратился. Высовываю еблище в окно и вижу, что дождь - это теперь снег. Это просто пиздец и все белое какое-то вокруг.
Сука, плюс 14 было вчера. Это же пиздец. А сегодня кто-то украл весну, просто нахуй наглым образом спиздил весну, наебал все цветущие деревья и подсунул Сибирь за шиворот, блять, и полный рот снега нахуячили еще. Вот, блять, собственно, какого хуя?
Но возможно за нами кто-то сверху наблюдает и зная, что сегодня первый рабочий день после долгих праздников, когда люди еще не совсем сосредоточены на себе, на своей жизни, на окружающем мире, будут в торопях собираться на работу, вникать в новый режим жизни.
Но тот, кто наблюдает, шутник билять, решил: "А давайте-ка я замедлю сегодня весь этот муравейник, чтоб они все охуели. Чтоб они с утра раскапывали свои машины, чтоб дворники в ахуе чистили снег, потому что они его видят второй раз за год, и они уже забыли, куда положили свою снежную лопату. И вопрос вообще, была ли она и как выглядит".
И тут возникает вопрос, а что же такое снег? В данном случае каждая снежинка это по сути микроскопический гроб для настроения и пунктуальности. Она родилась где-то там на небесах, летела вся такая, думала сейчас мне будут радоваться все, сейчас все будут счастливы. Ну, блядь, не в понедельник же, не в первый рабочий день. Ну, выпади ты, сука, посреди праздников, чтоб прям тебя так дохуя было. Люди бы порадовались, лепили бы из тебя всяких человечков, называемых снеговиками. Или писюны в конце концов. Ну ..
Так что остается только натянуть улыбку на еблище, ходить улыбаться и делать вид, что ты счастлив наконец-то. Выпал долгожданный, блядь, первый снежок в этом году. Охуеть, какая радость. Будем все счастливы, блядь. Ура, ура, ура.
Как у него охлаждение устроено? Фильтруется и назад?
Чтото вроде пары страниц в конце, как в кино ))) ну круто будет )))