Lies zwei Variablen in einer einzigen Zeile mit Python

8

Ich kenne die Funktion input (), um eine einzelne Variable aus Benutzereingaben zu lesen. Gibt es eine ähnliche einfache Möglichkeit, zwei Variablen zu lesen?

Ich suche nach dem Äquivalent von:

%Vor%

Eine Möglichkeit, dies zu erreichen, ist die Verwendung von raw_input() und dann von split , was eingegeben wurde. Gibt es einen eleganteren Weg?

Dies ist nicht für den Live-Einsatz. Nur zum Lernen ..

    
Alterlife 19.10.2009, 11:00
quelle

7 Antworten

27

Nein, der übliche Weg ist raw_input().split()

In Ihrem Fall könnten Sie map(int, raw_input().split()) verwenden, wenn Sie wollen, dass sie ganze Zahlen und keine Zeichenfolgen sind

Verwenden Sie nicht input() dafür. Überlegen Sie, was passiert, wenn der Benutzer

eingibt
  

import os;os.system('do something bad')

    
John La Rooy 19.10.2009, 11:02
quelle
9

Sie können auch von sys.stdin

lesen %Vor%     
MAK 19.10.2009 18:04
quelle
4

Ich bin auch neu in diesem Zeug. Habe etwas Recherche von der python.org Website und ein bisschen Hacking gemacht, um das zum Laufen zu bringen. Die raw_input -Funktion ist wieder verfügbar und wurde von input geändert. Das ist, was ich gefunden habe:

%Vor%

Zugegeben, der Code ist nicht so elegant wie die Einzeiler, die Cs scanf oder C ++ cin verwenden. Der Python-Code sieht näher an Java aus (mit einem völlig anderen Mechanismus als C, C ++ oder Python), so dass jede Variable separat behandelt werden muss.

In Python ruft die Funktion raw_input Zeichen von der Konsole ab und verknüpft sie zu einer einzigen Zeichenfolge als Ausgabe. Wenn nur eine Variable auf der linken Seite des Zuweisungsoperators gefunden wird, unterbricht die Funktion split diesen String in eine Liste von < strong> String -Werte.

In unserem Fall, in dem wir zwei Variablen erwarten, können wir Werte in sie aufnehmen, indem wir eine durch Kommas getrennte Liste für ihre Bezeichner verwenden. String -Werte werden dann den aufgelisteten Variablen zugewiesen. Wenn wir mit diesen Werten arithmetisch arbeiten wollen, müssen wir sie in den numerischen Datentyp int (oder float ) konvertieren, indem wir Pythons eingebauten int oder float -Funktion.

Ich weiß, dass dieser Beitrag eine Antwort auf ein sehr altes Posting ist und wahrscheinlich ist das Wissen schon seit einiger Zeit als "Allgemeinwissen" bekannt. Allerdings hätte ich einen Beitrag wie diesen sehr geschätzt, statt dass ich ein paar Stunden mit Suchen und Hacken verbringen musste, bis ich die eleganteste Lösung gefunden hatte, die ich in einem CS1-Klassenzimmer präsentieren konnte.

>     
Professor Richard 02.01.2015 21:58
quelle
1

Lies zuerst die komplette Zeile in einen String wie

%Vor%

Verwenden Sie dann eine for-Schleife wie diese

%Vor%

Diese Schleife nimmt eine vollständige Zeile als Eingabe für die Zeichenfolge und verarbeitet die darin enthaltenen Teile einzeln und hängt dann die Zahlen an die Liste an - lst nach dem Konvertieren in Ganzzahlen.

    
Pinkoo 28.02.2015 05:18
quelle
0

oder Sie können dies tun

%Vor%     
deepakkumar 27.01.2016 11:58
quelle
0

Sie können 2 int Werte lesen, indem Sie dies in Python 3.6.1

verwenden %Vor%     
saigopi 28.08.2017 16:29
quelle
0

Sie können diese Methode auch für eine beliebige Anzahl von Eingaben verwenden. Berücksichtigen Sie Folgendes für drei durch Leerzeichen getrennte Eingaben:

%Vor%     
Neetish Singh 19.10.2017 21:39
quelle

Tags und Links