该Python代码如何正常工作?

时间:2018-12-22 11:23:40

标签: python dictionary

这段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)

3 个答案:

答案 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