2016-11-16 9 views
0

現在、私はPythonで作業していますが、これはあまり理解できません。私は辞書の前に、この質問の助けを求めています。この質問は辞書なしで完了します。問題は、私はmax関数についてあまり知りません。文字列を入力して最も頻繁に表示される文字を文字列に表示するプログラムを作成します。

これまでのところ、私が持っている:

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

あなたが唯一のユニークな文字を取得しますどのsetを使用することができます最も頻繁に手紙

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

'most_common'呼び出しのためにリストに明示的にキャストする必要はありません。また、技術的には、「カウンター」は「dict」サブクラスなので、OPの要件と矛盾します。 –

+3

辞書が許されない場合、私は「カウンター」が評価されることを非常に疑う。 – Shivendra

0

を取得するにはカウンター

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

を使用することができます入力から。次にそれらを反復処理して、入力に何回出現したかをcountで数えます。より頻繁に発生する場合はmaxとisalpha(スペースではない)をmaxに設定します。あなたのコードからこれを行うには

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 

EDIT

:見つけて、印刷/最も一般的な文字を返し、その後(もし、のために)大文字小文字を修正し。またAlphaCountには余分な0があります。

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 
関連する問題