2016-11-16 37 views
0

我目前正在使用python,但我不太瞭解這一點。在字典之前,我正在尋找這個問題的幫助。這個問題是在沒有任何字典的情況下完成的。問題是我對最大功能瞭解不多。編寫一個程序,讓用戶輸入一個字符串並顯示字符串中出現頻率最高的字符

到目前爲止,我有:

AlphaCount = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] 
Alpha = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 

for ch in text: 
    ch = ch.upper() 
    index=Alpha.find(ch) 

    if index >-1: 
     AlphaCount[index] = AlphaCount[index]+1 
+5

而這個代碼的問題是? (除了'if'上的大寫字母錯誤外) – UnholySheep

+0

你最好使用字典來代替... – MMF

+0

@ MMF-看起來像這樣(作業?)問題「將在沒有任何字典的情況下完成」。 –

回答

1

您可以使用計數器

from collections import Counter 
foo = 'wubalubadubdub' 
Counter(list(foo)) 

爲了獲得最頻繁的信

Counter(list(foo)).most_common(1) 
+2

不需要顯式強制轉換爲「most_common」調用列表。另外在技術上'Counter'是一個'dict'子類,所以與OP的要求相矛盾 –

+3

如果字典不被允許,我非常懷疑'計數器'將不勝感激。 – Shivendra

0

您可以使用set將只得到唯一的字符從輸入。然後遍歷它們並計算輸入中出現的次數爲count。如果發生的頻率更高,那麼max和isalpha(不是空格)就會將max設置爲count。

text='This is a test of tons of tall tales' 
un=set(text.upper()) 
max=0 
fav='' 

for u in un: 
    c=text.upper().count(u) 
    if c>max and u.isalpha(): 
     max=c 
     fav=u 
print(fav) # T 
print(max) # 6 

編輯

從代碼做到這一點:修復資本(因爲,如果),然後找到並打印/返回最常見的字母。另外AlphaCount有一個額外的0,你只需要26.

text='This is a test of tons of tall talez' 
AlphaCount=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] 
Alpha='ABCDEFGHIJKLMNOPQRSTUVWXYZ' 

for ch in text: 
    ch= ch.upper() 
    index=Alpha.find(ch) 

    if index >-1: 
     AlphaCount[index]+=1 
print(AlphaCount) # the count of characters 
print(max(AlphaCount)) # max value in list 
print(AlphaCount.index(max(AlphaCount))) # index of max value 
print(Alpha[AlphaCount.index(max(AlphaCount))]) # letter that occurs most frequently 
相關問題