我試圖讓用戶同時輸入矩形的長度和寬度。如何讓Python 2.7在一行上接受多個變量輸入
length,width = float (raw_input("What is the length and width? ")).split(',')
當我運行程序,但是,並輸入兩個變量如3,5-我得到一個錯誤,說我有一個無效的字面float類型()。
我試圖讓用戶同時輸入矩形的長度和寬度。如何讓Python 2.7在一行上接受多個變量輸入
length,width = float (raw_input("What is the length and width? ")).split(',')
當我運行程序,但是,並輸入兩個變量如3,5-我得到一個錯誤,說我有一個無效的字面float類型()。
首先,爲什麼會發生這種失敗:
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]
那樣做,但在這種情況下它確實無關緊要;無論哪種方式都很簡單,你應該瞭解它們的含義。
謝謝,這對我有用。 – user1880808
你也可能會想轉換爲整數:
prompt = "what is the length and width? "
inpt = raw_input(prompt)
length, width = [int(i) for i in inpt.split(',')]
其實浮動,但我認爲我可以只改變int()float() – user1880808
是的,你可能也想讓用戶知道它需要用逗號分隔,並檢查inpt.split(', ')來確認輸入的是兩個數字 –
你能確定這是你試圖運行的確切代碼嗎?現在,這段代碼會給出一個語法錯誤,因爲你在提示字符串中缺少''' –