Isto não é um desafio. Gostaria de saber se é possível obter a entrada do usuário em duas variáveis separadas em python (2 ou 3) com menos de 19 bytes. Estes são os mais curtos que consigo:
a,b=input(),input()
a=input();b=input() (newline replaced with semicolon for readability)
i=input;a,b=i(),i()
Existe alguma maneira mais curta de fazer isso?
a,b=sys.argv[1:2]
ou o que quer, mas então você precisa de umimport sys
(certo?)a,b=input().split()
haveria outra solução de 19 bytes, mas não uma melhoria. Observe que isso significa que aeb são strings e a entrada é inserida de uma só vez, separada por um espaço.a,b=input()
em Py2Respostas:
Se solicitar ao usuário não importa, isso é um pouco menor do que
eval
para 3 ou mais:Também é mais curto, mesmo que o prompt não esteja ok:
Infelizmente, a ideia do xnor não salva nada para 2 entradas, pois ainda é mais longa (19 bytes). No entanto, se você já tiver alguma string (ou iterável apropriada) com o comprimento apropriado (porque mágica?), Ela poderá ser mais curta.
O xnor encontrou um exemplo de uma string mágica para 3 entradas apenas no Python 2:
Isso também requer que as solicitações não sejam importantes.
Na verdade, esse truque ajuda a salvar bytes para um grande número de entradas usando a
1eX
notação (obtendo x + 3 entradas):Explicação:
A
map
função do Python executa a função que é passada em cada elemento do iterável que também é passado para ele e retorna a lista (ou objeto de mapa) que contém os resultados dessas chamadas. Para o primeiro exemplo, o mapa pode ser decomposto em:fonte
map(input,'xxx')
é igual para 3 varões, melhor para 2 e pior para 4 ou mais.map(input,`id`)
é mais curto :-). Da mesma forma,map(input,`.1`)
para 19 entradas.a,b,c=map(input,`.5`)
salva um caractere para 3 entradas, pois.5
é representado como0.5
.Para 3 ou mais entradas, isso é mais curto:
fonte
Observe que, a menos que a pergunta especifique o tipo de entrada ou exija um programa completo, você poderá considerar a entrada como argumentos de função , eliminando a necessidade
input()
. Onde isso não é uma opção, o seguinte pode ajudar em certos casos.Se você deseja caracteres únicos nas variáveis
a
eb
, pode usarA inserção de uma sequência de 2 caracteres resultará no primeiro caractere sendo atribuído
a
e no segundo caractereb
. (Menos de 2 ou mais de 2 caracteres na cadeia resultarão em erro.)Se você precisar de mais de um caractere por variável, essa abordagem não funcionará. Isso ainda pode ser usado para inserir dois números de um dígito como uma sequência. Se números além de 9 forem necessários, toda a gama de caracteres de entrada em potencial poderá ser interpretada como números.
Observe que isso também funciona para mais de 2 variáveis:
Isso funciona porque no Python uma string é uma sequência de caracteres e pode ser usada em qualquer lugar em que uma sequência seja esperada.
fonte