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

Python初学者编写摩尔斯电码转换器遇TypeError,要求不使用字典集合

问题原因&解决方法

核心错误说明

  • 你定义morse列表时使用了==比较运算符,该符号的作用是判断左右两侧的值是否相等,执行后你的列表内所有元素都是布尔值False,完全没有存储字符与摩尔斯电码的对应关系
  • Python的列表仅支持使用整数作为下标访问元素,你直接用输入的字符作为索引取morse[i],不符合列表的使用规则,因此触发TypeError

符合要求的修改方案

因为你要求不能使用字典,我们可以用两个并行的列表存储对应关系,一个列表存原字符,另一个列表对应位置存摩尔斯码,匹配时找到字符的下标,再取对应位置的摩尔斯码即可,完整可运行代码如下:

# 两个列表位置一一对应,chars[n]的摩尔斯码就是morse_codes[n]
chars = [',', '?', '.', ' ', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
         'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N',
         'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']
morse_codes = ['--..--', '..--..', '.-.-.-', ' ', '-----', '.----', '..---', '...--',
               '....-', '.....', '-....', '--...', '---..', '----.', '.-', '-...',
               '-.-.', '-..', '.', '..-.', '--.', '....', '..', '.---', '-.-', '.-..',
               '--', '-.', '---', '.--.', '--.-', '.-.', '...', '-', '..-', '...-',
               '.--', '-..-', '-.--', '--..']

userInput = input('Enter your sentence to be converted to morse code.: ')
morseOutput = ''
for char in userInput:
    # 把输入字符转大写,匹配我们存的大写字母规则
    upper_char = char.upper()
    # 找到字符在chars列表里的下标,取对应位置的摩尔斯码
    idx = chars.index(upper_char)
    morseOutput += morse_codes[idx] + ' '  # 加空格分隔每个字符的摩尔斯码,更易读
print(morseOutput)

注:如果输入的字符不在chars列表范围内,会触发ValueError,你可以根据需要增加异常判断逻辑,这里先实现基础转换功能。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 08:15:02