wake-up-neo.com

Zwei Werte aus einer Eingabe in Python?

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? 

30
Donovan

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()]
51
kizzx2

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.

10
ChristopheD

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 evaling 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.

8
Alex Martelli

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.

6
Rishabh Prasad

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)
3
sykora

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(" ")
3
devDeejay

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)


3
E. Zavala

Ü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.. 

1
user8258851

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']
1
Premgi kumar

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('~')

1

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

0
JATIN BEHUNE

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 :))))
0
Ali Montajebi

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

0
user10564553
a,b=[int(x) for x in input().split()]
print(a,b)

Ausgabe

10 8

10 8

0
Siddharth jha

Zwei durch Leerzeichen getrennte Eingänge:

x,y=input().split()
0
Zeinab

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]
0
vishwaraj

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())

0
unclexo