Ce n'est pas un défi. Je me demande s'il est possible d'obtenir une entrée utilisateur dans deux variables distinctes en python (2 ou 3) avec moins de 19 octets. Ce sont tous les plus courts que je peux obtenir:
a,b=input(),input()
a=input();b=input() (newline replaced with semicolon for readability)
i=input;a,b=i(),i()
Existe-t-il un moyen plus court de procéder?
a,b=sys.argv[1:2]
ou autre chose mais alors vous avez besoin d'unimport sys
(non?)a,b=input().split()
serait une autre solution de 19 octets, pas une amélioration cependant. Notez que cela signifie que a et b sont des chaînes et l'entrée est entrée en une seule fois séparée par un espace.a,b=input()
dans Py2Réponses:
Si l'invite de l'utilisateur n'a pas d'importance, elle est légèrement plus courte que
eval
pour 3 ou plus:Il est également plus court même si l'invite n'est pas correcte:
Malheureusement, l'idée de xnor ne sauvegarde rien pour 2 entrées car elle est encore plus longue (19 octets). Cependant, si vous avez déjà une chaîne (ou une itérable appropriée) avec la longueur appropriée (parce que magique?), Elle pourrait être plus courte.
xnor a trouvé un exemple de chaîne magique pour 3 entrées en Python 2 uniquement:
Cela nécessite également que les invites ne soient pas importantes, cependant.
Cette astuce permet en fait d'économiser des octets pour un grand nombre d'entrées en utilisant la
1eX
notation (obtenir x + 3 entrées):Explication:
La
map
fonction de Python exécute la fonction qui lui est transmise sur chaque élément de l'itérable qui lui est également transmis, et renvoie la liste (ou l'objet de carte) contenant les résultats de ces appels. Pour le premier exemple, la carte pourrait être décomposée en:la source
map(input,'xxx')
est de longueur égale pour 3 vars, mieux pour 2 et pire pour 4+.map(input,`id`)
c'est plus court :-). De même,map(input,`.1`)
pour 19 entrées.a,b,c=map(input,`.5`)
enregistre un caractère pour 3 entrées, car.5
est représenté par0.5
.Pour 3 entrées ou plus, c'est plus court:
la source
Notez que sauf si la question spécifie le type d'entrée ou nécessite un programme complet, vous pouvez prendre l'entrée comme arguments de fonction , supprimant ainsi la nécessité de
input()
. Lorsque ce n'est pas une option, les éléments suivants peuvent aider dans certains cas.Si vous voulez des caractères uniques dans les variables
a
etb
, vous pouvez utiliserLa saisie d'une chaîne de 2 caractères entraînera alors l'affectation du premier caractère au
a
deuxième caractèreb
. (Moins de 2 ou plus de 2 caractères dans la chaîne donneront une erreur.)Si vous avez besoin de plus d'un caractère par variable, cette approche ne fonctionnera pas. Cela peut toujours être utilisé pour saisir 2 nombres à un chiffre sous forme de chaîne. Si des nombres au-delà de 9 sont requis, la gamme complète des caractères d'entrée potentiels pourrait être interprétée comme des nombres.
Notez que cela fonctionne également pour plus de 2 variables:
Cela fonctionne car en Python, une chaîne est une séquence de caractères et peut être utilisée partout où une séquence est attendue.
la source