2010-11-12 14 views
7

Voglio leggere due valori di input. Il primo valore dovrebbe essere un numero intero e il secondo valore dovrebbe essere un float.Come leggere due ingressi separati dallo spazio in una singola riga?

Ho visto Read two variables in a single line with Python, ma si applica solo se entrambi i valori sono dello stesso tipo. Ho qualche altro modo?

Esempio di input, il primo è int e il secondo è float. Gli ingressi devono essere su una sola riga:

20 150.50 

http://www.codechef.com/problems/HS08TEST/

Sono molto nuovo a Python.

+2

La risposta alla domanda legato a questo è la maggior parte della risposta si ha bisogno. Che cosa hai provato? – SingleNegationElimination

+0

il mio primo input dovrebbe essere un interger e il secondo dovrebbe essere un float. –

+0

L'errore @TokenMacGuy è mio. Avrei dovuto leggere prima la documentazione :( –

risposta

16

Ti piace questa:

In [20]: a,b = raw_input().split() 
12 12.2 

In [21]: a = int(a) 
Out[21]: 12 

In [22]: b = float(b) 
Out[22]: 12.2 

Non si può fare questo in un one-liner (o almeno non senza qualche Super Duper abilità hackz0r extra - o punti e virgola), ma python non è fatta per un -liners.

4

uno di linea :)

>>> [f(i) for f,i in zip((int, float), raw_input().split())] 
1 1.2 
[1, 1.2] 
+0

Spiega ogni componente della linea – abhishah901

3

Simpler uno di linea (ma meno sicura):

map(eval, raw_input().split()) 
-2

map(str,input().split()) che è come lo fai.

1

Se l'ingresso è separato da spazi ""

a,b,c = raw_input().split(" ")

Se l'ingresso è separato da virgola ''

a,b,c = raw_input().split(",") 
0

In Python 2.7, utilizzo questa

A,B = raw_input().split(" ") 

A = int(A) 

B = float(B) 

print(A) 

print(B) 

Uscita

34 6,9

6,9

Problemi correlati