2013-10-09 83 views
1

這段代碼在考試中,它詢問輸出結果如何。瞭解這個python代碼

不幸的是我弄錯了,並把它全是1。

我對這個程序特別用if/else語句做了些什麼感到困惑。

我是C程序員,所以如果可能的話,請將if/else語句翻譯成C代碼,以便我能理解正在發生的事情。謝謝!

編輯:爲了澄清,我不知道的情況是什麼意思「如果x在d」

def somefunction(L): 
    d = {} 

    for x in L: 
     if x in d: 
      d[x] = d[x] + 1 

     else: 
      d[x] = 1 

    return d 

L = [6, 10, -2, 2, 6, 4, -2, 6] 
print somefunction(L) 


output: {10: 1, 2: 1, 4: 1, -2: 2, 6: 3} 
+1

它計算每個值出現在'L'中的次數。 '如果x in d'表示「如果字典中有一個元素d是哪個鍵是x,那麼...」 – iamnotmaynard

+0

關於Python的一件好事,或者關於C的一件不好的事情是,一件簡單的事情就像'd [x] = d [x] + 1'或'd'中的x需要數千行庫代碼才能準確地轉化爲C. – delnan

回答

1

在Python in進行圍堵檢查。它查看右邊的操作數,看它是否包含左邊的操作數。

>>> 2 in [1, 2, 4] 
True 
>>> 3 in [1, 2, 4] 
False 
0

我會鼓勵你不要翻譯一切都變成C. Python是相當不同的,並試圖保持對事物的心靈的C畫幅會使事情更難理解。

有一件很棒的事是Python被解釋了,所以你可以輸入「python」然後輸入命令來看看他們做了什麼。你可以檢查所有的變量,因爲事情被操縱。例如,您可以執行以下操作:

L = [6, 10, -2, 2, 6, 4, -2, 6] 
for x in L: 
    print x 

查看「in」的含義。對於其他代碼也是如此。另外,還有很多關於Python的在線教程,例如Google「潛入Python」。

0

主要看這個代碼,你正在做的是你在做的沒有時代的元素重複在list..you使用字典作爲取計數手段的計數的..

第一所有在if-else塊中,你正在檢查元素是否存在。如果它存在,那麼你正在使用元素作爲鍵增加計數。因此,你正在創建一個新的鍵,鍵是元素和默認值爲1 ...

因此,你遍歷所有在列表並檢查列表中的每個元素的計數..

d[i]=j 
#i is key,j is value. 

最後你打印字典..打印你的發現!