Это не проблема. Мне интересно, возможно ли вообще получить пользовательский ввод в две отдельные переменные в python (2 или 3) с длиной менее 19 байтов. Это все самое короткое, что я могу получить:
a,b=input(),input()
a=input();b=input() (newline replaced with semicolon for readability)
i=input;a,b=i(),i()
Есть ли более короткий способ сделать это?
a,b=sys.argv[1:2]
или как угодно, но тогда вам нужноimport sys
(верно?)a,b=input().split()
было бы еще одно 19-байтовое решение, но не улучшение. Обратите внимание, что это означает, что a и b являются строками, и ввод вводится за один раз, разделенный пробелом.a,b=input()
в Py2Ответы:
Если запрос пользователя не имеет значения, это немного короче, чем
eval
для 3 или более:Это также короче, даже если подсказка не в порядке:
К сожалению, идея xnor не сохраняет ничего для 2 входов, поскольку она все еще длиннее (19 байт). Однако, если у вас уже есть какая-то строка (или подходящая итерация) с соответствующей длиной (потому что волшебство?), Она может быть короче.
xnor нашел пример магической строки для 3 входов только в Python 2:
Это также требует, чтобы подсказки не были важны, хотя.
Этот трюк на самом деле помогает сохранить байты для большого количества входов, используя
1eX
нотацию (получая x + 3 входов):Объяснение:
map
Функция Python выполняет функцию, которую передают каждому элементу итерируемого, который также передается ему, и возвращает список (или объект карты), содержащий результаты этих вызовов. Для первого примера карта может быть разложена на:источник
map(input,'xxx')
равной длины для 3 переменных, лучше для 2 и хуже для 4+.map(input,`id`)
короче :-). Аналогичноmap(input,`.1`)
для 19 входов.a,b,c=map(input,`.5`)
сохраняет символ для 3 входов, так.5
как представляется как0.5
.Для 3 или более входов это короче:
источник
Обратите внимание, что если в вопросе не указан тип ввода или не требуется полная программа, вы можете принять входные данные в качестве аргументов функции , что исключает необходимость
input()
. Если это не вариант, в определенных случаях может помочь следующее.Если вы хотите одиночные символы в переменных
a
иb
, вы можете использоватьВвод двухсимвольной строки приведет к тому, что первый символ будет назначен,
a
а второй символ назначенb
. (Менее 2 или более 2 символов в строке приведет к ошибке.)Если вам требуется более одного символа для каждой переменной, этот подход не будет работать. Это можно использовать для ввода двухзначных чисел в виде строки. Если требуются числа, превышающие 9, тогда весь диапазон возможных входных символов можно интерпретировать как числа.
Обратите внимание, что это также работает для более чем 2 переменных:
Это работает, потому что в Python строка представляет собой последовательность символов и может использоваться везде, где ожидается последовательность.
источник