企业网站建设 信息安全,新人做外贸流程,做一晚水泥工歌曲网站,做网站公司 汉狮网络描述
编写程序#xff1a;从键盘中输入一段字符#xff0c;完成以下统计并输出#xff1a;
#xff08;1#xff09;该段字符中总共出现了多少种不同类型的字符#xff1b;
#xff08;2#xff09;出现次数最多的前3个字符#xff08;只能为字母和数字#xff0c…描述
编写程序从键盘中输入一段字符完成以下统计并输出
1该段字符中总共出现了多少种不同类型的字符
2出现次数最多的前3个字符只能为字母和数字其它忽略及次数
样例
输入
ukvP^hhhhh0d~R],$Ls[5555555vV1(,Q[9}adWNdRnZ:Nt*SF/?-SEY
输出
总共出现了43种字符
57次
h5次
d3次
代码
def count_char(text):# 统计字符出现次数char_count {}for char in text:if char.isalnum():char_count[char] char_count.get(char, 0) 1# 统计不同类型字符数量num_of_types len(char_count)# 找到出现次数最多的前3个字符most_common_chars sorted(char_count.items(), keylambda x: x[1], reverseTrue)[:3]return num_of_types, most_common_chars
input_text input(请输入一段字符)
types, most_common count_char(input_text)
print(不同类型的字符数量, types)
print(出现次数最多的前3个字符及次数)
for char, count in most_common:print(char, :, count)代码描述 s input()这行代码使用input函数从键盘获取用户输入的一段字符并将其赋值给变量s。 dict0 {}
dict1 {}这两行代码分别创建了两个空字典dict0和dict1用于记录字符出现的次数。 all_length 0这行代码创建了一个变量all_length初始化为0用于记录总共出现的不同字符的数量。 for ch in s:这是一个for循环遍历变量s中的每个字符用变量ch表示当前字符。 dict0[ch] dict1.get(ch)这行代码将字典dict1中对应字符ch的值赋给字典dict0中的键ch相当于将字典dict1复制给dict0。 all_length len(dict0)这行代码更新变量all_length的值为字典dict0中的键值对的数量即不同字符的数量。 if ch.isalnum():这是一个if条件语句判断字符ch是否为字母或数字使用isalnum()方法进行判断。 dict1[ch] dict1.get(ch, 0) 1如果字符ch是字母或数字则将字典dict1中对应字符ch的值加1。如果字符ch在字典dict1中不存在则使用dict1.get(ch, 0)获取字符ch对应的值即出现次数如果字符不存在于字典中则返回默认值0。 length len(dict1)这行代码计算字典dict1的长度即出现过的不同字符的数量。 items list(dict1.items())
items.sort(keylambda x: x[1], reverseTrue)这两行代码将字典dict1转换为列表并对列表中的元素按照出现次数进行排序。dict1.items()将字典中的键值对以元组的形式返回。sort函数对列表中的元素进行排序keylambda x: x[1]指定按照元组的第二个元素也就是出现次数进行排序。reverseTrue表示降序排列。 top3 items[:3]这行代码将排序后的列表items的前三个元素赋值给变量top3即出现次数最多的前三个字符及其次数。 print(f总共出现了{all_length}种字符)这行代码使用print函数打印出现的不同字符的数量。 for i in range(3):if i len(top3):print(f{top3[i][0]}{top3[i][1]}次)这部分代码使用for循环遍历前三个字符及其次数的列表top3。使用print函数打印每个字符和对应的次数格式为字符次数。注意在循环中会判断变量i是否小于top3的长度以防止越界访问。