试图找出为什么我在这里得到两个不同的结果(一个是错误)。这里是运行的代码:两套类似的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