我寫了一個簡單的函數來計算模式,但似乎有一個參數沒有成功通過。爲什麼我不能通過我的參數python
我初始countdict= dict()
在主要功能,然後我通過它mod = mode(magList, countdict)
。
在mode(alist, countdict)
,countdict= dict(zip(alist,[0]*len(alist)))
。和countdict
可以在模式下打印。
但是當我在主函數中嘗試print(countdict)
時,輸出表示它是空的。我檢查我的代碼,它在功能模式中說,我沒有使用countdict。這怎麼可能。
整個代碼如下:
def mode(alist, countdict):
countdict= dict(zip(alist,[0]*len(alist)))
for x in alist:
countdict[x]+=1
maxcount =max(countdict.values())
modelist = [ ]
for item in countdict:
if countdict[item] == maxcount:
modelist.append(item)
return modelist
def makeMagnitudeList():
quakefile = open("earthquakes.txt","r")
headers = quakefile.readline()
maglist = [ ]
for aline in quakefile:
vlist = aline.split()
maglist.append(float(vlist[1]))
return maglist
def mymain():
magList = makeMagnitudeList()
print(magList)
countdict= dict()
mod = mode(magList, countdict)
print("mode: ", mod)
print(countdict)
if __name__=='__main__':
mymain()
我懷疑這是因爲'countdict'在'mode'函數的第一行被重新分配。 – 2014-10-03 07:39:50
您正在誤解有關全局和局部變量的一些概念。你在main中的'countdict'與函數中的'countdict'不一樣,它們是完全不同的變量。也許這會幫助你[Python通過引用傳遞變量](http://stackoverflow.com/questions/986006/how-do-i-pass-a-variable-by-reference) – AlvaroAV 2014-10-03 07:42:23