hao1232 发表于 2024-12-3 19:49:49

字典与列表大比拼中代码运行问题

原文网址: https://fishc.com.cn/thread-201013-1-1.html
以下为原文粘贴:

def morsecode2(code):
      # 摩斯密码对比表
      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"]
      split_code = code.split(" ")
      result = for each in split_code]
      return result

import timeit

timeit.timeit("morsecode2(test_code)", setup="from __main__ import morsecode2, test_code")

使用的python版本:3.11.1
报错如下:
timeit.timeit("morsecode2(test_code)", setup="from __main__ import morsecode2, test_code")
Traceback (most recent call last):
File "<pyshell#5>", line 1, in <module>
    timeit.timeit("morsecode2(test_code)", setup="from __main__ import morsecode2, test_code")
File "C:\Users\2023x's\AppData\Local\Programs\Python\Python311\Lib\timeit.py", line 234, in timeit
    return Timer(stmt, setup, timer, globals).timeit(number)
File "C:\Users\2023x's\AppData\Local\Programs\Python\Python311\Lib\timeit.py", line 178, in timeit
    timing = self.inner(it, self.timer)
File "<timeit-src>", line 3, in inner
ImportError: cannot import name 'test_code' from '__main__' (unknown location)

isdkz 发表于 2024-12-3 19:49:50

你都没有定义 test_code

FishC 发表于 2024-12-3 19:54:25

鱼油,你的代码报错是因为缺少了`test_code`变量的定义。`timeit`模块尝试从`__main__`中导入`test_code`,但没有找到相应的变量。你需要在代码中定义`test_code`并填入你想要测试的摩斯密码字符串。

示例修正如下:

def morsecode2(code):
    # 摩斯密码对比表
    c_table = {"....": "H", ".": "E", "-.--": "Y", ".---": "J", "..-": "U", "-..": "D"}
    split_code = code.split(" ")
    result = for each in split_code if each in c_table]
    return result

import timeit

test_code = ".... . -.-- .--- ..- -.."
print(timeit.timeit("morsecode2(test_code)", setup="from __main__ import morsecode2, test_code"))

在这个示例中,我定义了一个基本的摩斯密码表`c_table`,并添加了`test_code`变量以便能够正常运行`timeit`的测试。你可以根据需要调整`c_table`来进行完整的摩斯密码翻译。如果有其他问题,请随时询问!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: 字典与列表大比拼中代码运行问题