这段Python代码会在Age = {age:numberOfOccurence}词典中打印出最大年龄。但是因为所有年龄段都已经大于零,所以为什么代码会打印出50个最大年龄段?
Age = {45:3, 50:2, 25:1, 10:5, 15:10}
Oldest = 0
for MaxAge in Age:
if MaxAge>Oldest:
Oldest = MaxAge
print(Oldest)
答案 0 :(得分:2)
我注释了代码并添加了一些打印语句,以帮助您了解其工作原理。
Age = {45:3, 50:2, 25:1, 10:5, 15:10}
Oldest = 0 ## Initialize oldest with the minimum number
print('Initial Oldest Value: ', Oldest)
for MaxAge in Age: ## Iterating Age
## If age at current index is greater than oldest (which is 0 for first iteration)
if MaxAge>Oldest:
## Update oldest with current age
print('MaxAge: ', MaxAge, ' > Oldest: ', Oldest)
Oldest = MaxAge
print('New Oldest Value: ', Oldest)
print('-'*10)
print('Final Oldest Value: ', Oldest)
输出
Initial Oldest Value: 0
MaxAge: 25 > Oldest: 0
New Oldest Value: 25
----------
MaxAge: 50 > Oldest: 25
New Oldest Value: 50
----------
Final Oldest Value: 50
答案 1 :(得分:1)
因为每次每次大于零,您都在代码中将.svn
变量设置为该变量,然后下一个大于前一个变量,将被分配,依此类推...所有这些都是通过以下if语句完成:
Oldest
如果您将其删除,然后为for循环添加其他内容,它将无法按预期工作。
请注意@andreihondrari的评论。
答案 2 :(得分:1)
我不确定您是否期望代码执行其他操作,或者您是否不知道它为什么起作用。
但是,您可以看一下这个问题和答案:Iterating over dictionaries using 'for' loops
代码起作用的原因是字典上的for循环将迭代字典的键。如果添加这样的额外打印语句,则可以看到以下内容:
Age = {45:3, 50:2, 25:1, 10:5, 15:10}
Oldest = 0
for MaxAge in Age:
print(MaxAge)
if MaxAge>Oldest:
Oldest = MaxAge
print(Oldest)
然后您应该看到:
45
50
25
10
15
50