LEEFEI571 发表于 2024-11-29 23:00:38

关于字典课程中例题代码运行出错的问题

我在学习小甲鱼老师字典的课程时,尝试运行了课程中的代码范例,但在运行后均出错了,麻烦大神帮忙看下问题出在哪里,谢谢啦!

课程中的代码范例如下:

例子1
# 摩斯密文表
c_table = [".-", "-...", "-.-.", "-..", ".", "..-.",
         "--.", "....", "..", ".---", "-.-", ".-..",
         "--", "-.", "---", ".--.", "--.-", ".-.",
         "...", "-", "..-", "...-", ".--", "-..-",
         "-.--", "--..", ".----", "..---", "...--", "....-",
         ".....", "-....", "--...", "---..", "----.", "-----"]
# 摩斯明文表
d_table = ["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", "1", "2", "3", "4",
         "5", "6", "7", "8", "9", "0"]
   
code = input("请输入摩斯密码:")
split_code = code.split(" ")
result = for each in split_code]
print(result)


例子2
# 摩斯密码对比表
c_table = [".-", "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", ".----", "1", "..---", "2",
         "...--", "3", "....-", "4", ".....", "5", "-....", "6",
         "--...", "7", "---..", "8", "----.", "9", "-----", "0"]
   
code = input("请输入摩斯密码:")
split_code = code.split(" ")
result = for each in split_code]
print(result)

例子3
# 摩斯密码对比表
c_table = {".-":"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", ".----":"1", "..---":"2",
         "...--":"3", "....-":"4", ".....":"5", "-....":"6",
         "--...":"7", "---..":"8", "----.":"9", "-----":"0"}
   
code = input("请输入摩斯密码:")
split_code = code.split(" ")
   
result = for each in split_code]
print(result)

上述代码在实际运行中出错的信息烦请见附件.

FishC 发表于 2024-11-29 23:00:56

你好!看起来你的代码示例中有一些问题,主要是由于字典未正确定义和使用。让我们逐一检查并修正每个例子:

**例子1**
# 摩斯密文表(假设要定义)
c_table = {"A": ".-", "B": "-...", "C": "-.-."}# 示例内容
# 摩斯明文表(假设要定义)
d_table = {".-": "A", "-...": "B", "-.-.": "C"}# 示例内容

code = input("请输入摩斯密码:")
split_code = code.split(" ")
result = for each in split_code if each in d_table]# 需要从d_table中查找每个字符
print(result)

**例子2**
# 摩斯密码对比表
c_table = {".-": "A", "-...": "B", "-.-.": "C"}# 示例内容

code = input("请输入摩斯密码:")
split_code = code.split(" ")
result = for each in split_code if each in c_table]# 需要从c_table中查找每个字符
print(result)

**例子3**
你的第三个例子已经接近正确,只是需要确保在列表解析中从字典中查找,而不是直接引用字典:
# 摩斯密码对比表
c_table = {".-": "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", ".----": "1", "..---": "2",
         "...--": "3", "....-": "4", ".....": "5", "-....": "6",
         "--...": "7", "---..": "8", "----.": "9", "-----": "0"}

code = input("请输入摩斯密码:")
split_code = code.split(" ")

result = for each in split_code if each in c_table]
print(result)

如果你的字典元素不完整或者你尝试使用未经定义的字典,你的代码就会出错。另外,假设摩斯密码输入是用空格分隔的字符。在`result`列表中,确保每一个`each`都存在于字典中,这样可以避免KeyError。

如果有其他问题,请随时告诉我!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

smallwh 发表于 2024-11-30 09:21:13

课程中的代码范例是将摩斯密码转换为字母,而不是将字母转换为摩斯密码。
尝试输入
.... . .-.. .-.. ---
代码将会输出HELLO

jackz007 发表于 2024-11-30 10:40:01

本帖最后由 jackz007 于 2024-11-30 10:49 编辑

# 摩斯密文表
c_table = [".-", "-...", "-.-.", "-..", ".", "..-.",
         "--.", "....", "..", ".---", "-.-", ".-..",
         "--", "-.", "---", ".--.", "--.-", ".-.",
         "...", "-", "..-", "...-", ".--", "-..-",
         "-.--", "--..", ".----", "..---", "...--", "....-",
         ".....", "-....", "--...", "---..", "----.", "-----"]
# 摩斯明文表
d_table = ["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", "1", "2", "3", "4",
         "5", "6", "7", "8", "9", "0"]

e = dict(zip(d_table , c_table))
while True :
    s = input('请输入字符串 :')
    try :
      print(' ' . join(map(lambda x : e , s)))
      break
    except :
      print('输入中含有无效字符\n')

d = dict(zip(c_table , d_table))
while True :
    s = input('请输入摩尔斯码 :')
    try :
      print('' . join(map(lambda x : d , s . split(' '))))
      break
    except :
      print('输入中含有无效字符\n')
      运行实况:
D:\\Python>python x.py
请输入字符串 :abCdE
.- -... -.-. -.. .
请输入摩尔斯码 :.- -... -.-. -.. .
ABCDE

D:\\Python>
页: [1]
查看完整版本: 关于字典课程中例题代码运行出错的问题