Dies ist eine ziemlich einfache Frage, und ich hasse es, sie hier zu fragen, aber ich finde nicht, dass sie die Antwort irgendwo anders findet.
In C kann ich zum Beispiel so etwas tun: scanf("%d %d", &var1, &var2)
. Ich kann jedoch nicht herausfinden, was das Python-Äquivalent ist. Ich dachte mir, es wäre nur so etwas wie var1, var2 = input("Enter two numbers here: ")
, aber das funktioniert nicht und ich beklage mich nicht, weil es nicht sehr viel Sinn machen würde, wenn es so wäre.
Kennt jemand da draußen einen guten Weg, dies elegant und prägnant zu tun?
Die Python-Methode zur Kartierung
printf("Enter two numbers here: ");
scanf("%d %d", &var1, &var2)
wäre
var1, var2 = raw_input("Enter two numbers here: ").split()
Beachten Sie, dass wir split(' ')
nicht explizit angeben müssen, da split()
Whitespace-Zeichen standardmäßig als Trennzeichen verwendet. Das heißt, wenn wir einfach split()
aufgerufen hätten, hätte der Benutzer die Zahlen mit Hilfe von Tabulatoren trennen können, wenn er wirklich wollte, und auch Leerzeichen.
Python verfügt über eine dynamische Typisierung, sodass %d
nicht angegeben werden muss. Wenn Sie jedoch den obigen Befehl ausführen, wären var1
und var2
beide Strings. Sie können sie mithilfe einer anderen Zeile in int
konvertieren
var1, var2 = [int(var1), int(var2)]
Oder Sie könnten Listenverständnis verwenden
var1, var2 = [int(x) for x in [var1, var2]]
Zusammenfassend könnte man sagen, dass Sie das Ganze mit diesem Einzeiler gemacht haben könnten:
# Python 3
var1, var2 = [int(x) for x in input("Enter two numbers here: ").split()]
# Python 2
var1, var2 = [int(x) for x in raw_input("Enter two numbers here: ").split()]
Man kann es nicht wirklich auf dem C-Weg machen (denke ich), aber eine pythonische Vorgehensweise wäre (wenn Ihre Eingaben Leerzeichen enthalten):
raw_answer = raw_input()
answers = raw_answer.split(' ') # list of 'answers'
So könnten Sie Ihren Versuch umschreiben:
var1, var2 = raw_input("enter two numbers:").split(' ')
Beachten Sie, dass dies etwas weniger flexibel ist als die Verwendung der 'ersten' Lösung (wenn Sie beispielsweise ein Leerzeichen am Ende hinzufügen, wird dies bereits unterbrochen).
Beachten Sie auch, dass var1 und var2 mit dieser Methode weiterhin Strings sind, wenn sie nicht in int umgewandelt werden.
In Python 2.*
lässt input
den Benutzer einen beliebigen Ausdruck eingeben, z. ein Tuple:
>>> a, b = input('Two numbers please (with a comma in between): ')
Two numbers please (with a comma in between): 23, 45
>>> print a, b
23 45
In Python 3.*
ist input
wie 2.*
s raw_input
und gibt Ihnen eine Zeichenfolge zurück, die der Benutzer genau eingibt (und nicht eval
ing als 2.*
. verwendet, um input
) zu tun, also müssen Sie .split
und/oder eval
& c, aber Sie haben auch viel mehr Kontrolle über das Ganze.
Wenn Sie zwei ganze Zahlen sagen müssen, sagen Sie a, b in Python, können Sie die Map-Funktion verwenden.
Angenommen, Eingabe ist,
1 5 3 1 2 3 4 5
wenn 1 einen Testfall darstellt, 5 die Anzahl der Werte und 3 einen Taskwert und in der nächsten Zeile 5 Werte angeben, können wir diese Eingabe in PYTH 2.x Version mit dieser Methode vornehmen.
testCases=int(raw_input())
number, taskValue = map(int, raw_input().split())
array = map(int, raw_input().split())
Sie können 'int' in map () durch einen anderen erforderlichen Datentyp ersetzen.
Alle Eingaben erfolgen über eine Zeichenfolge. Sie müssen diese Zeichenfolge bearbeiten, nachdem Sie sie erhalten haben. Wenn dies nicht der Fall ist, verwenden Sie die eval (input ()) -Methode, die jedoch in den meisten Situationen nicht empfohlen wird.
input_string = raw_input("Enter 2 numbers here: ")
a, b = split_string_into_numbers(input_string)
do_stuff(a, b)
Sie müssen die split()
-Methode verwenden, die die Eingabe in zwei verschiedene Eingänge aufteilt. Nach was auch immer Sie in den Split gehen, wird gesucht und die Eingabe wird von dort aus aufgeteilt. In den meisten Fällen ist es der weiße Raum.
Zum Beispiel geben Sie die Eingabe 23 24 25
. Sie erwarten 3 verschiedene Eingaben wie
num1 = 23
num2 = 24
num3 = 25
In Python kannst du das tun
num1,num2,num3 = input().split(" ")
Die Lösung, die ich gefunden habe, ist die folgende:
Bitten Sie den Benutzer, zwei durch Komma oder ein anderes Zeichen getrennte Zahlen einzugeben
value = input("Enter 2 numbers (separated by a comma): ")
Dann wird der String geteilt: n
nimmt den ersten Wert und m
den zweiten
n,m = value.split(',')
Um sie schließlich als Ganzzahlen zu verwenden, müssen sie konvertiert werden
n, m = int(n), int(m)
Überprüfen Sie diese praktische Funktion:
def gets(*types):
return Tuple([types[i](val) for i, val in enumerate(raw_input().split(' '))])
# usage:
a, b, c = gets(int, float, str)
Der einfachste Weg, den ich für mich selbst gefunden habe, war die Verwendung der Split-Funktion mit Eingabe
a,b=input("Enter two numbers").split()
Das ist es ... Es gibt eine weitere Methode (explizite Methode) Sie möchten beispielsweise drei Werte eingeben
value=input("Enter the line")
a,b,c=value.split()
EINFACH..
Für n
Anzahl der Eingänge deklarieren Sie die Variable als leere Liste und verwenden Sie zum Fortfahren dieselbe Syntax:
>>> x=input('Enter value of a and b').split(",")
Enter value of a and b
1,2,3,4
>>> x
['1', '2', '3', '4']
Dies ist ein Beispielcode für zwei Eingaben, die durch den Befehl split und das Trennzeichen "," voneinander getrennt sind.
>>> var1, var2 = input("enter two numbers:").split(',')
>>>enter two numbers:2,3
>>> var1
'2'
>>> var2
'3'
Andere Variationen von Trennzeichen, die verwendet werden können, sind wie folgt:var1, var2 = input("enter two numbers:").split(',')
var1, var2 = input("enter two numbers:").split(';')
var1, var2 = input("enter two numbers:").split('/')
var1, var2 = input("enter two numbers:").split(' ')
var1, var2 = input("enter two numbers:").split('~')
wenn wir also zwei Eingaben in einer einzigen Zeile haben wollen, lautet der Code wie folgt: enter code here
x,y=input().split(" ")
print(x,y)
nachdem wir den Wert als Eingabe angegeben haben, müssen wir aufgrund der aufgeteilten ("") Funktion oder Methode Leerzeichen zwischen ihnen angeben.
diese Werte sind jedoch vom String-Typ, wenn zum Ausführen einiger Rechenoperationen der Typ von x konvertiert werden muss, y wie folgt:
wir können dies auch mit Hilfe von list in python tun. enter code here
list1=list(map(int,input().split()))
print(list1)
diese Liste enthält die Elemente vom Typ int
Diese Lösung wird zum Konvertieren mehrerer Zeichenketten ("22 44 112 2 34") in eine Ganzzahlliste verwendet, und Sie können auf die Werte in einer Liste zugreifen.
n = input("") # Like : "22 343 455 54445 22332"
if n[:-1] != " ":
n += " "
char = ""
list = []
for i in n :
if i != " ":
char += i
Elif i == " ":
list.append(int(char))
char = ""
print(list) # Be happy :))))
Ich habe dies in Python 3 ausprobiert, scheint gut zu funktionieren.
a, b = map(int,input().split())
print(a)
print(b)
Eingabe: 3 44
Ausgabe :
3
44
a,b=[int(x) for x in input().split()]
print(a,b)
Ausgabe
10 8
10 8
Zwei durch Leerzeichen getrennte Eingänge:
x,y=input().split()
Das kannst du so machen
a, b = map(int, input().split())
OR
a, b = input().split()
print(int(a))
OR
MyList = list(map(int, input().split()))
a = MyList[0]
b = MyList[1]
In Python 3 wurde raw_input()
in input()
umbenannt.
input([Prompt])
Wenn das Prompt-Argument vorhanden ist, wird es in die Standardausgabe .__ geschrieben. ohne nachlaufenden Zeilenumbruch. Die Funktion liest dann eine Zeile aus der Eingabe konvertiert es in eine Zeichenfolge (entfernt einen abschließenden Zeilenumbruch) und gibt .__ zurück. Das. Wenn EOF gelesen wird, wird EOFError ausgelöst.
So kannst du diesen Weg machen
x, y = input('Enter two numbers separating by a space: ').split();
print(int(x) + int(y))
Wenn Sie nicht zwei Zahlen mit einem Leerzeichen eingeben, erhalten Sie eine ValueError
-Ausnahme. Das ist also gut zu gehen.
N.B. Wenn du altes Verhalten von input()
brauchst, benutze eval(input())