Esto no es un desafío. Me pregunto si es posible obtener la entrada del usuario en dos variables separadas en python (2 o 3) con menos de 19 bytes. Estos son todos los más cortos que puedo obtener:
a,b=input(),input()
a=input();b=input() (newline replaced with semicolon for readability)
i=input;a,b=i(),i()
¿Hay alguna forma más corta de hacer esto?
a,b=sys.argv[1:2]
o lo que sea, pero entonces necesitas unimport sys
(¿verdad?)a,b=input().split()
sería otra solución de 19 bytes, aunque no una mejora. Tenga en cuenta que eso significa que ayb son cadenas y que la entrada se ingresa de una vez separada por un espacio.a,b=input()
en Py2Respuestas:
Si preguntar al usuario no importa, esto es un poco más corto que
eval
para 3 o más:También es más corto incluso si la solicitud no está bien:
Lamentablemente, la idea de xnor no guarda nada para 2 entradas, ya que aún es más larga (19 bytes). Sin embargo, si tiene alguna cadena (o iterable apropiada) con la longitud adecuada (¿por magia?), Entonces podría ser más corta.
xnor encontró un ejemplo de una cadena mágica para 3 entradas solo en Python 2:
Sin embargo, esto también requiere que las indicaciones no sean importantes.
Este truco realmente ayuda a guardar bytes para un gran número de entradas mediante la
1eX
notación (obteniendo entradas x + 3):Explicación:
La
map
función de Python realiza la función que se pasa en cada elemento del iterable que también se le pasa, y devuelve la lista (u objeto de mapa) que contiene los resultados de estas llamadas. Para el primer ejemplo, el mapa podría descomponerse en:fuente
map(input,'xxx')
es igual para 3 vars, mejor para 2 y peor para 4+.map(input,`id`)
es más corto :-). Del mismo modo,map(input,`.1`)
para 19 entradas.a,b,c=map(input,`.5`)
guarda un carácter para 3 entradas, ya que.5
se representa como0.5
.Para 3 o más entradas, esto es más corto:
fuente
Tenga en cuenta que a menos que la pregunta especifique el tipo de entrada o requiera un programa completo, puede tomar la entrada como argumentos de función , eliminando la necesidad de
input()
. Cuando esto no sea una opción, lo siguiente puede ayudar en ciertos casos.Si desea caracteres únicos en las variables
a
yb
, puede usarAl ingresar una cadena de 2 caracteres, se asignará el primer carácter y se asignará
a
el segundo carácterb
. (Menos de 2 o más de 2 caracteres en la cadena darán un error).Si necesita más de un solo carácter por variable, este enfoque no funcionará. Esto aún podría usarse para ingresar 2 números de un solo dígito como una cadena. Si se requieren números más allá de 9, el rango completo de caracteres de entrada potenciales podría interpretarse como números.
Tenga en cuenta que esto también funciona para más de 2 variables:
Esto funciona porque en Python una cadena es una secuencia de caracteres y se puede usar en cualquier lugar donde se espere una secuencia.
fuente