Наконец-то спустя столько лет я узнал откуда берутся эти люди которые любят сокращать огромный блок кода в одну ебучую строчку, а потом ещё обижается когда ты просишь их вынуть шприц из хера и протрезветь наконец-то.
@@Ss0yerR Тернарные операторы да, но бывают ситуации, когда пишут просто безумную хрень только для того, что бы записать в одну строку. Если делаешь сам для себя, да без проблем. Но если потом с этим будут работать люди это пздц.
@@Time_is_money999 Во втором решении создаётся кортеж ("young", "old"), а затем запрашивается его индекс. В квадратных скобках может быть булево значение (True или False), поскольку есть оператор ">". В переводе в тип данных int (целое число) - это может быть 1 или 0, в зависимости от того, истинно высказывание или ложно. Если обратиться к данному кортежу с индексом 0 - то он вернёт "young", а если с индексом 1 - то вернёт "old".
Насколько знаю нужно вместо float написать inp. float это не целые числа, поэтому они тут не подойдут. А так решение норм. Спасибо @bogatiyrrt6742 за нахождение ошибки.
@@re_loid32если убрать int или или float, что в данной ситуации не имеет никакой разницы, то как будет сравниваться строковое значение с числом 20. Которое в данной ситуации является целочисленным
Во многих языках можно реализовать тернарный оператор через "логическое и" и "логическое или". Так что такой вариант решения тоже подойдет в этой задаче: print(int(input())>20 and "взр" or "мал"). Кому интересно, в общем случае такой тернарный оператор выглядит так: cond and option1 or option 2. Такое работает только в языках программирования с коротким циклов вычислений. Т.е. когда при подсчете результата логической операции в зависимости от значения аргумента последующие значения могут не вычисляться, т.к. не повлияют на результат.
Вроде бы как-то неправильно написали. Тернарники работают с тремя аргументами, например тернарное условие - условие -1, если првда - 2, если ложь - 3. Логические и и логические или - это бинарные операторы.
не знаю как на пайтон, но в С можно использовать тернарный оператор и, если не ошибаюсь должно выйти что то такое: printf(age > 20 ? "взрослый" : "мелкий");
Так-то да, но даже с тернарным оператором на чистой Си, используя только библиотечные функции, невозможно решить "задачу" из шортса в одну строку: unsigned int age; scanf("%u", &age); printf("%s ", (age > 20) ? "взрослый" : "мелкий");
Да это возможно но не советую так сокращать свой код потому что это просто будет не читаемо или же сложно читаемо если суть сокращение кодов чтобы делать её лехче но не как чтобы не было строк мало
Вообще, любые подобные сравнения типа if x==0: y = a else: y = b можно упростить в одну строчку кода: y = a*(x==0) + b*(x != 0) Да, может это для кого покажется более громоздким вариантом, но для мест где нужна повышенная производительность на одну операцию, такой момент все же будет лучше, пусть хотя пуфон - это и не производительность.
@@kanalmendge1676 Это обычное обращение к элементу по индексу. Есть кортеж ("малолетка", "взрослый"). Чтобы вывести на печать малолетку, мы напишем: print(("малолетка", "взрослый")[0]) Чтобы вывести на печать взрослого, меняем 0 на 1. Потому, что малолетка в кортеже находится под индексом 0 а взрослый под индексом 1. В выражении [int(input()) > 20] получится булево значение - либо True , либо False. А как известно, False это 0, а True это 1. Если ввести в инпут число меньшее 20, то будет False, а значит ноль, и по этому на печать выйдет первый элемент кортежа, который под индексом 0, т.е "малолетка". Если ввести 20 или больше, то там будет True, т.е. единица, и на печать пойдет второй элемент кортежа
Бро ты красавчик не каждый просто умеет читать код как хейтеры, ониже все знающие и зеають как написать код в одну строку. Я короче написал это было очень просто я почал учить пайтон 1 год назад и то умею и у тебя была ошибка я исправил йи. print('Взрослый') if int(input()) == 20 else print('Малолетка') ❤
Я сегодня первый день учу Пайтон и я даже знаю решение Print("Ты взрослый" if int(inpyt()) if > 20 else: "ты мелкий") Вроде так, если есть ошибки напишите
я вам целых два решения приведу) одно очевидное, другое оригинальное. Итак: 1. print('Взрослый' if int(input()) > 20 else 'Малолетка') 2. print(['Малолетка', 'Взрослый'][int(input()) > 20]) Какое решение выберите вы?
В одну строку на Питоне? А может лучше в одну строку на Си? int main() { ((_getch() - '0') * 10 + (_getch() - '0')) > 20 ? printf("Senor") : printf("Jnr"); } Код работает при вводе чисел от 00 до 99 (тоесть числа до 10 нужно вводит с нулем перед ними, например 05), но ведь никто и не говорил, что будет просто. Я в теории могу написать и с нормальным вводом, но это будет что-то на грани понимания человеческого мозга, потому что никто итак не понимает код через оператор ?:, а тут вся прога через него будет создана.
@@Артёммостяев-н2ш возможно. Я пока другие языки не учил. Однако учитывая их общую схожесть, то было бы странно, если бы в других языках не было аналогов. Возможно, в том жe Python.
Главная проблемам в том, как реализовать адекватный ввод в одну строку. Я смог, но тоже с костылями виде обязательного ввода двух символов, например 04 вместо 4.
Даже на 1С можно в одну строку написать😂. Более того на языках, где операторы отделяются условной точкой с запятой никто не обязывает делать переносы строки. Таким образом можно хоть миллион строк в одну строку нарисовать убрав переносы строки. Только вот читать такое невозможно.