字符统计及重排的python实现

题目

给出一个仅包含字母的字符串,不包含空格,统计字符串中各个字母(区分大小写)出现的次数,并按照字母出现次数从大到小的顺序输出各个字母及其出现次数。如果次数相同,按照自然顺序进行排序,且小写字母在大写字母之前。

字母需要的排序顺序与asc码不同,所以排序的代码有点长,如果有更好的方向可以教我,谢谢~

str1=input()
str_list=[]
for i in range(len(str1)):
    str_list.append(str1[i])
set_list=list(set(str_list))
set_list=sorted(set_list)
print(set_list)
count2=-1
for i in range(len(set_list)):
    if set_list[i]>='A'and set_list[i]<='Z':
        count2=i+1
print(count2)
for i in range(count2):
    set_list.append(set_list[i])
print(set_list)
for i in range(count2):
    del(set_list[0])
print(set_list)
num_list=[]
num2_list=[]
num3_list=[]
for i in range(len(set_list)):
    num_list.append(0)
    num2_list.append(0)
    num3_list.append(0)
#print(num_list)
for i in range(len(set_list)):
    for j in str_list:
        if set_list[i]==j:
            num_list[i]=num_list[i]+1
            num2_list[i]=num2_list[i]+1
num_list.sort()
num_list.reverse()
print(num_list)
print(num2_list)
for i in range(len(num_list)):
    if i>0 and num_list[i]==num_list[i-1]:
        continue
    count = 0
    for j in range(len(num2_list)):
        if num2_list[j]==num_list[i]:
            count=count+1
            num3_list[j]=i
for i in range(max(num3_list)+1):
    for j in range(len(num3_list)):
        if num3_list[j]==i:
            print(set_list[j]+':'+str(num2_list[j]),end=';')

 

上一篇:利用C语言制作小型计算器


下一篇:《关键第四号》小游戏控制台