You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何统计输入单词的字母数并找出最长单词?附代码求助

问题分析与修正方案

你的代码核心问题是字母数统计逻辑错误,以及退出指令被误统计,以下是具体修正:

核心错误点

  • count = name.index(name) 完全错误:str.index() 是查找子串在字符串中的起始位置,查找自身永远返回0,导致所有单词计数都是0,根本没统计到真实字母数。
  • 输入'E'时会把'E'加入字典,最终统计最长单词时会包含这个退出指令,不符合需求。

正确实现方式

统计单词字母数直接用Python内置的 len() 函数即可,它会返回字符串的长度(即字母个数)。同时调整循环逻辑,避免把退出指令计入统计:

names = {}

while True:
    name = input("Enter a name. Enter E to end. ").strip()
    # 先判断是否退出,不区分大小写
    if name.upper() == 'E':
        break
    # 处理空输入,避免无效数据
    if not name:
        print("请输入有效的单词,不要留空")
        continue
    # 统计字母数并存入字典
    letter_count = len(name)
    names[name] = letter_count

# 处理未输入任何单词的情况
if not names:
    print("你没有输入任何单词")
else:
    print("你输入的单词及其字母数:", names)
    # 找到字母数最多的单词(按值排序取最大)
    longest_word, max_count = max(names.items(), key=lambda item: item[1])
    print(f"最长的单词是:{longest_word.upper()},有 {max_count} 个字母")

关键修改说明

  • 用 len(name) 替代错误的索引查找,这是获取字符串长度的标准方法。
  • 把退出判断放在最前面,输入'E'或'e'直接退出,不会将其加入统计字典。
  • 增加空输入过滤,避免空字符串被误统计。
  • 使用 names.items() 直接遍历键值对,通过 max() 的 key 参数指定按字母数排序,简洁高效。
  • 增加空字典判断,防止未输入单词时调用 max() 报错。

内容的提问来源于stack exchange,提问作者jjk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 05:15:11