2012-12-05 35 views
-2

我試圖讓用戶同時輸入矩形的長度和寬度。如何讓Python 2.7在一行上接受多個變量輸入

length,width = float (raw_input("What is the length and width? ")).split(',') 

當我運行程序,但是,並輸入兩個變量如3,5-我得到一個錯誤,說我有一個無效的字面float類型()。

+2

你能確定這是你試圖運行的確切代碼嗎?現在,這段代碼會給出一個語法錯誤,因爲你在提示字符串中缺少''' –

回答

1

首先,爲什麼會發生這種失敗:

float (raw_input("What is the length and width? ")).split(',') 

split(',')將字符串分割成字符串的序列。您只能在一個字符串上對字符串序列調用float。這就是爲什麼錯誤說它是「浮點類型的無效文字」。

如果你想打電話序列中的每一個值相同的功能,有兩種方法可以做到這一點:

使用列表理解(或發電機表達式):

[float(x) for x in raw_input("What is the length and width? ")).split(',')] 

或者該map功能:

map(float, raw_input("What is the length and width? ")).split(',')) 

我會使用列表理解,因爲這是BDFL喜歡什麼,因爲它是其他的東西你簡單可能想要像x[2]那樣做,但在這種情況下它確實無關緊要;無論哪種方式都很簡單,你應該瞭解它們的含義。

+0

謝謝,這對我有用。 – user1880808

2

那麼,那是因爲你輸入了兩個以逗號分隔的數字,但是在一段時間內分割了這個值。用逗號分割它,它應該工作得更好。

+0

這是我輸入的錯誤,而不是我實際的代碼。問題是最新的,編輯 – user1880808

1

你也可能會想轉換爲整數:

prompt = "what is the length and width? " 
inpt = raw_input(prompt) 
length, width = [int(i) for i in inpt.split(',')] 
+0

其實浮動,但我認爲我可以只改變int()float() – user1880808

+0

是的,你可能也想讓用戶知道它需要用逗號分隔,並檢查inpt.split(', ')來確認輸入的是兩個數字 –

相關問題