Python编程作业:不使用max()和count()找出字符串最频繁字符
解决方法:统计字符串中最频繁字符(不使用max()/count())
核心思路
要实现需求,分两步走:
- 手动统计每个字符的出现次数:用字典存储每个字符与其对应的出现次数,替代
count()函数的功能。 - 手动找出次数最多的字符:遍历字典的键值对,跟踪当前最大次数及对应字符,替代
max()函数的功能。
代码实现(区分大小写)
def main(): my_sentence = input("Enter a sentence: ") # 1. 统计所有字符的出现次数 char_counts = {} for ch in my_sentence: if ch in char_counts: char_counts[ch] += 1 else: char_counts[ch] = 1 # 2. 找出出现次数最多的字符(支持多个字符并列最多的情况) max_count = 0 most_frequent_chars = [] for char, count in char_counts.items(): if count > max_count: max_count = count most_frequent_chars = [char] elif count == max_count: most_frequent_chars.append(char) # 输出结果 if len(most_frequent_chars) == 1: print(f"The most frequent character is '{most_frequent_chars[0]}' with {max_count} occurrences.") else: chars_str = ", ".join([f"'{char}'" for char in most_frequent_chars]) print(f"The most frequent characters are {chars_str}, each appearing {max_count} times.") main()
代码实现(不区分大小写,如T/t视为同一字符)
如果需要忽略大小写统计,只需在遍历字符时统一转换为小写(或大写):
def main(): my_sentence = input("Enter a sentence: ") char_counts = {} for ch in my_sentence: # 统一转换为小写,消除大小写差异 normalized_char = ch.lower() if normalized_char in char_counts: char_counts[normalized_char] += 1 else: char_counts[normalized_char] = 1 max_count = 0 most_frequent_chars = [] for char, count in char_counts.items(): if count > max_count: max_count = count most_frequent_chars = [char] elif count == max_count: most_frequent_chars.append(char) if len(most_frequent_chars) == 1: print(f"The most frequent character (case-insensitive) is '{most_frequent_chars[0]}' with {max_count} occurrences.") else: chars_str = ", ".join([f"'{char}'" for char in most_frequent_chars]) print(f"The most frequent characters (case-insensitive) are {chars_str}, each appearing {max_count} times.") main()
关键步骤解释
- 统计字符次数:通过字典
char_counts记录每个字符的出现次数,遍历输入字符串时,若字符已在字典中则计数+1,否则初始化为1,完全手动实现了count()的统计逻辑。 - 查找最频繁字符:初始化
max_count为0、most_frequent_chars为空列表,遍历字典时逐个比较计数大小:- 若当前字符计数大于
max_count,更新最大计数并重置结果列表; - 若等于当前最大计数,将字符加入结果列表,支持多个字符并列最多的场景。
- 若当前字符计数大于
内容的提问来源于stack exchange,提问作者BigSaus
相关产品推荐
相关产品推荐

