2016-06-25 11 views
-5
def my_fun(x):  
    z = 0  
    for item in x:   
     m = x.count(item)   
     if m > z:    
      z = m  
     return z 

y = ["cat", 4, "dog" , "cat" , 2, "cat", 2] 
print (my_fun(y)) 

コードの出力は3です。誰かがどのように説明できますか?コードの出力は3です。どのように説明することができますか?

+2

を期待他に何はっきりしていませんか? –

+0

でも出力は3となりますが、それでも3を返します。 –

+0

コード実行を[http://pythontutor.com/visualize.html#mode=edit](http://pythontutor.com/visualize.html#mode=edit)で視覚化してください。 – wwii

答えて

2

return文がforループ内にあり、z = mが実行されるため、すぐにforループが返されます。

リターンがループの外にあったとしても、リストに時間がかかる可能性が最も高いcatが表示されているため、3が残っています。

あなたは、基本的に私は3を出力し、なぜあなたが見ることができる信頼コード

print(["cat", 4, "dog" , "cat" , 2, "cat", 2].count("cat")) 

のこの単一の行を持っているそれはたぶん、あなたは、return文をインデント解除するためのもの、あなたが

関連する問題