Dies ist keine Herausforderung. Ich frage mich, ob es überhaupt möglich ist, Benutzereingaben in zwei separaten Variablen in Python (2 oder 3) mit weniger als 19 Bytes zu erhalten. Dies sind alles die kürzesten, die ich bekommen kann:
a,b=input(),input()
a=input();b=input() (newline replaced with semicolon for readability)
i=input;a,b=i(),i()
Gibt es dafür einen kürzeren Weg?
a,b=sys.argv[1:2]
oder was auch immer sagen, aber dann brauchst du einimport sys
(richtig?)a,b=input().split()
wäre eine weitere 19-Byte-Lösung keine Verbesserung. Beachten Sie, dass dies bedeutet, dass a und b Zeichenfolgen sind und die Eingabe in einem Durchgang durch ein Leerzeichen getrennt erfolgt.a,b=input()
in Py2Antworten:
Wenn die Aufforderung des Benutzers keine Rolle spielt, ist dies etwas kürzer als
eval
bei 3 oder mehr:Es ist auch kürzer, auch wenn die Eingabeaufforderung nicht in Ordnung ist:
Leider speichert die Idee von xnor nichts für 2 Eingaben, da sie immer noch länger ist (19 Bytes). Wenn Sie jedoch bereits eine Zeichenfolge (oder eine entsprechende iterable) mit der entsprechenden Länge haben (weil Magic?), Könnte sie kürzer sein.
xnor hat nur in Python 2 ein Beispiel für eine magische Zeichenfolge für 3 Eingaben gefunden:
Dies setzt jedoch auch voraus, dass die Eingabeaufforderungen nicht wichtig sind.
Dieser Trick hilft tatsächlich, Bytes für eine große Anzahl von Eingaben unter Verwendung der
1eX
Notation zu speichern (Abrufen von x + 3 Eingaben):Erläuterung:
Die
map
Funktion von Python führt die Funktion aus, die an jedes Element der Iterable übergeben wird, das auch an sie übergeben wird, und gibt die Liste (oder das Map-Objekt) zurück, die die Ergebnisse dieser Aufrufe enthält. Für das erste Beispiel könnte die Karte zerlegt werden in:quelle
map(input,'xxx')
ist für 3 Vars gleich lang, besser für 2 und schlechter für 4+.map(input,`id`)
ist das kürzer :-). Ebensomap(input,`.1`)
für 19 Eingänge.a,b,c=map(input,`.5`)
spart ein Zeichen für 3 Eingänge, da.5
als dargestellt0.5
.Bei 3 oder mehr Eingaben ist dies kürzer:
quelle
Beachten Sie, dass es sei denn , die Frage nach der Art Eingabe gibt oder erfordert ein komplettes Programm, Sie Eingabe als Funktionsargumente übernehmen können , für die Notwendigkeit , Ausschneiden
input()
.Wenn dies keine Option ist, kann in bestimmten Fällen Folgendes hilfreich sein.Wenn Sie einzelne Zeichen in den Variablen
a
und möchtenb
, können Sie verwendenDie Eingabe einer 2-stelligen Zeichenfolge führt dann dazu, dass das erste Zeichen zugewiesen wird
a
und das zweite Zeichen zugewiesenb
. (Weniger als 2 oder mehr als 2 Zeichen in der Zeichenfolge führen zu einem Fehler.)Wenn Sie mehr als ein Zeichen pro Variable benötigen, funktioniert dieser Ansatz nicht. Dies kann weiterhin verwendet werden, um 2 einstellige Zahlen als Zeichenfolge einzugeben. Wenn Zahlen über 9 erforderlich sind, kann der gesamte Bereich der möglichen Eingabezeichen als Zahlen interpretiert werden.
Beachten Sie, dass dies auch für mehr als 2 Variablen funktioniert:
Dies funktioniert, weil in Python eine Zeichenfolge eine Folge von Zeichen ist und überall dort verwendet werden kann, wo eine Folge erwartet wird.
quelle