随机生成100个大写英文字母,按每行20个字符形式输出,统计每个字符出现的次数并按照字母升序方式输出统计结果,要求利用字典数据类型进行操作
import random
# 生成随机100个大写字母
charslist = [chr(random.randint(65, 90)) for i in range(100)]
for i in range(len(charslist)):
print(charslist[i],end=' ')
if (i+1)%20==0:
print()
# 统计字符出现次数,将其添加进字典
charnumber = {}
for i in charslist:
if charnumber.get(i):
charnumber[i] += 1
else:
charnumber[i] = 1
_=list(charnumber.items())
_.sort(key=lambda x:x[1],reverse=False)
charnumber=dict(_)
print(charnumber)
import random
a = [''.join([chr(random.randint(65,90)) for x in range(20)]) for n in range(5)]
print('\n'.join(a))
print()
b = {n:list(''.join(a)).count(n) for n in list(''.join(a))}
print(b)
print()
print({n:b[n] for n in sorted(b,key=lambda x:b[x])})
print()
print({n:b[n] for n in sorted(b)})
根据题目要求按字母升序排列输出,可以这样解:
import string
import random
letters=[random.choice(string.ascii_uppercase) for i in range(100)]
i=0
for l in letters:
print(l,end=' ')
i+=1
if i%20==0:
print()
res={}
for c in letters:
if c in res:
res[c]=res.get(c,0)+1
else:
res[c]=1
lis=sorted(res.items(),key=lambda x:x[0])#sorted函数默认升序,按字母升序方式排序
new={}
for char,num in lis:
new[char]=num
print(new)
运行结果:
F:\2021\qa\ot2>t9
Z I E M Q S B V E K F L X K N L I K P C
O Z B C X Z A I J N P N W O W L Y N E O
O N Q Z W N E T T T C S V C Z D A Y C R
R G K U N L T J T C L A M B O H L I X C
E F P Q V E Q F A J T O R N T Q B Q D O
{'A': 4, 'B': 4, 'C': 7, 'D': 2, 'E': 6, 'F': 3, 'G': 1, 'H': 1, 'I': 4, 'J': 3, 'K': 4, 'L': 6, 'M': 2, 'N': 8, 'O': 7, 'P': 3, 'Q': 6, 'R': 3, 'S': 2, 'T': 7, 'U': 1, 'V': 3, 'W': 3, 'X': 3, 'Y': 2, 'Z': 5}
如对你有帮助,请点击采纳按钮给予采纳。
你题目的解答代码如下:
import random
import string
li = [random.choice(string.ascii_uppercase) for i in range(100)]
for i in range(0,100,20):
print(" ".join(li[i:i+20]))
dic = {}
for v in li:
dic[v] = dic.get(v,0)+1
li2 = sorted(dic.items(),key=lambda x: x[0])
for c,v in li2:
print(f'{c}: {v}')
如有帮助,望采纳!谢谢!