試圖找出爲什麼我在這裏得到兩個不同的結果(一個是錯誤)。這裏是運行的代碼:兩套類似的python代碼似乎行爲不同
hta = 2.13
visitor_team_ratings = [21.53]
home_team_ratings = [None]
difference = []
for a, b in zip(visitor_team_ratings, home_team_ratings):
if a and b:
difference.append(a - (b + float(hta)))
else:
difference.append('NO RATING')
print(difference)
這打印出「無等級」,但我很難理解爲什麼它這樣做。 None與空列表不同,爲什麼python會下降到else
聲明。
以下是引發錯誤的類似代碼。相同的變量/列表如上工作代碼:
if visitor_team_ratings and home_team_ratings:
difference.append((visitor_team_ratings[0] - (home_team_ratings[0] + float(hta))))
else:
difference.append('NO RATING')
print(difference)
的錯誤是:TypeError: unsupported operand type(s) for +: 'NoneType' and 'float'
我不知道我理解爲什麼一個工程,一個沒有。而那個工作的人,我甚至不知道我明白爲什麼它會這樣做。我一直在我的程序中使用第一個代碼塊一段時間...
'如果visitor_team_ratings和home_team_ratings:'應該是'如果visitor_team_ratings [0]和home_team_ratings [0]:'否則你不看這個元素,但在列表本身 – Nuageux
我想現在我發佈了這個SO,我有點看到問題是什麼。在第一個代碼塊中,我正在測試以查看列表a/b中的元素是否真實。在第二個代碼塊中,我正在測試以查看列表本身是否真實... – Biggen
我正在寫這個答案。請發佈一個@Nuageux – e4c5