dic=dict() d={} s=set() s='helloworld' (1)d=dict() for x in s: if x not in d.keys(): d[x]=1 else: d[x]=d[x]+1 print(d) (2)d2=dict() for x in s: d2[x]=d2.get(x,0)+1 print(d2) (3)d3=dict() for x in s: d3[x]=s.count(x) print(d3)
上面一共給出了三種方法,均是以字典的形式輸出,但可以看出,通過第二三種的內置函數方法更簡便
def countchar(str): str=str.lower()#化成小寫 ans=[] for i in range(26): #列表賦初值 26 個 0 ans.append(0) for i in str: if(ord(i)>=ord('a')and ord(i)<=ord('z')): ans[ord(i)-ord('a')]=ans[ord(i)-ord('a')]+1 #統計個數 return ans if __name__ == "__main__": str = input() print(countchar(str)) def countchar(st): #定義數個數的函數 keys = [chr(i+97) for i in range(26)] #生成26個字母的key列表 di = dict().fromkeys(keys,0) #賦給每個key初始值0 new = [] #建立一個新列表用於存放有序的key st = st.lower() #將所有輸入的字符改為小寫 for s in st: #遍歷字符串 di[s] = st.count(s) #輸出每個字符的個數,存放到字典里 for k in keys: #遍歷keys,將其在di中的值添加到新列表,獲得有序的26個字母的個數 new.append(di[k]) return new #返回存有26個字母個數的列表 if __name__ == "__main__": st = input() #輸入字符串 str1 = "" #定義一個空字符串 for s in st: #遍歷輸入的字符串 if s.isalpha() != 0: #只有字母才添加到新字符串,標點忽略不計 str1 += s print(countchar(str1)) #輸出列表
上面的兩種方法也是輸出字符串的字母出現次數,略有不同的是,這里它先設定了26個字母,並使其對應的初始值為0,然后統計字符串中的各字母出現次數,每個字母出現了多少次,即為其對應的初始值處的值。而沒出現的字母,其對應的值則仍為初始值0
通過上述的幾種方法,我們不難總結出解決這種問題的思路:從鍵盤隨機輸入一段字符串,然后循環遍歷字符串,通過循環字符串中的每一個字符,統計各類字符出現的次數,循環遍歷字符串