好了,第一個問題是你的函數只是返回None
,只是扔把這兩個名單拿走,所以沒有辦法看到它是否做得正確。
如果你修復了這個問題,你會發現它是正確的選擇。
def balance_equation(species,coeff):
data=zip(coeff,species)
positive=[]
negative=[]
for (mul,el) in data:
if mul<0:
negative.append((el,mul))
if mul>0:
positive.append((el,mul))
return negative, positive
>>> n, p = balance_equation(balance_equation('abcdef', range(-3,3))
>>> n
[('a', -3), ('b', -2), ('c', -1)]
>>> p
[('e', 1), ('f', 2)]
所以,有兩種可能性:
- 既然你粘貼的代碼顯然不是你正在運行的實際代碼,也許你固定的bug,同時改寫它張貼在這裏。
- 你不會用明智的輸入來調用它。例如,如果您向後傳遞參數,因爲
species
可能是字符串的集合,它們最終都會變爲正值。或者,同樣,如果您將coeffs作爲整數的字符串表示形式傳遞。
如果這是最後一個問題 - 你傳球,比方說,'abcdef', ['-3', '-2', '-1', '0', '1', '2', '3']
,並且要balance_equation,而不是在調用代碼中的處理是,這很容易。就在zip
前加入這一行:
coeff = [int(x) for x in coeff]
或更改zip
到:
data = zip((int(x) for x in coeff), species)
順便說一句,我假設你在CPython的2.在Python 3,嘗試比較字符串爲0將提高TypeError
,而不是總是返回True
,而在其他Python 2實現中,它可能總是返回False
而不是True
...
你可以張貼值的一個例子'species'和'coeff'之前,它不會給出預期輸出? –
什麼是coeff?數字或字符串列表? – Xzhsh
您確實需要發佈示例輸入,期望的輸出和實際輸出,以便我們可以知道代碼的實際錯誤。否則,我們只是猜測。 – abarnert