题目:随机生成由大小写字母和阿拉伯数字组成的长度为100的字符串,并统计其中各个字符出现的次数。
import string #可以用dir(string)来查看string模块中所有可用的成员
import random
# 候选字符集,26个小写字母+26个大写字母+10个数字
x = string.ascii_letters + string.digits #生成字符串x ,x='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
#可以用 print(string.ascii_letters)查看会有什么结果
# 生成包含100个随机字符的字符串
z = ''.join((random.choice(x) for i in range(100))) #生成器表达式,再利用join把这100个字符拼接到一起,前面的单引号中没内容表示用空串拼接
print(f'随机生成的字符串是:{z}')
d = dict() # {键:值,....} #定义一个空字典,用键表示字符,用值表示出现次数
# 遍历字符串,统计频次
for ch in z:
d[ch] = d.get(ch, 0) + 1 #字典中如果有ch,则次数加1 ; 如果没有ch,则添加一个键ch
#字典的.get方法表示是dict.get(key,default)用于判断建是否存在,存在返回键对应的值,不存在返回指定的default值
#此处用get查ch,若ch存在则返回ch对应的键值,然后将键值加1,;若吃不存在,则返回数值0,加1后变成1赋值给当前添加的键ch
# 查看统计结果,按字母顺序排序
for k, v in sorted(d.items()): #items()方法将字典里对应的一对键和值以元组的形式(键, 值),存储为所生成序列里的单个元素
print(k, ':', v)