讓我們一步一個腳印吧。
首先,我們知道我們需要從中讀取兩個的用戶列表中的數字。爲了簡單起見,讓我們假設用戶可以輸入一個或多個空間分辨率值來填充數字列表。例如。
1 2 3 4 5
現在,我們已經定義了我們的輸入將如何進入,我們可以正確地解析它。爲此,我們將首先使用.split()
將輸入拆分爲一個字符串列表,然後使用列表理解將每個字符串轉換爲實際數字。但由於我們將不得不使用這個邏輯兩次,讓我們將其封裝在一個名爲get_numbers()
功能:
def get_numbers():
numbers = input("Enter some numbers: ").split()
return [int(n) for n in numbers]
現在我們可以用我們的新功能來收集用戶數的兩個列表。我將其命名爲第一個列表list1
和第二list2
:
list1 = get_numbers()
list2 = get_numbers()
現在,我們已經解決了讓用戶輸入進入名單的問題,我們可以將注意力轉移到了問題的第二部分:
返回單個列表,其是每個列表中的兩個參數的逐元素乘法。如果列表長度不同,它應該返回一個列表,其長度與兩者中較短的一樣長。
讓我們開始通過只是履行第一要求,那麼我們將在後面處理第二個。
我們知道,我們需要從兩個列表中成對獲取每個元素的第n個元素,將它們一起多個並將結果放在一個新的列表中。爲了完成成對遍歷列表的任務,我們可以使用zip()
。同樣,我們將使用列表理解,而不是爲循環常規:
[A * B爲A,B拉鍊(列表1,列表2)]
現在,讓我們也包裹在connivence功能,並稱之爲zip_and_multiply()
:
def zip_and_multiply(list1, list2):
return [a*b for a, b in zip(list1, list2)]
然而,沒有意識到這一點,我們也履行了我們的第二個要求(「如果列表的長度不同,它應該返回一個列表,是隻要短這兩個。「)。
你會發現,如果zip()
有兩個不同長度的列表,它會在兩個列表中最短的一個結束時停止拉伸,因此它完全滿足了第二個要求。
所有剩下要做的就是打印list1
和list2
(變量)使用的zip_and_multiply()
結果:
print zip_and_multiply(list1, list2)
在整體編寫所有上面的代碼(!唷),我們的最終方案後將(注意,這是一個不同的順序如何出現上面的代碼):但是
def get_numbers():
numbers = input("Enter some numbers: ").split()
return [int(n) for n in numbers]
def zip_and_multiply(list1, list2):
return [a*b for a, b in zip(list1, list2)]
list1 = get_numbers()
list2 = get_numbers()
print zip_and_multiply(list1, list2)
應該注意,上面的代碼缺少它們通常在說很多代碼段的程序,如正確的錯誤哈ndling。
對不起,我錯誤地輸入了代碼 - 我現在編輯了它! – Jane
如果您有任何建議,我會很感激!這是幾個小時,我仍然不知道:( – Jane
你可以提供你的輸入原因你使用raw_input需要一個字符串。這將是有益的 –