我现在在python中做一个密码,我需要一些关于如何在另一个函数中调用另一个外部函数的帮助
这是外部函数...到目前为止100%正确工作!
def buildCoder(shift):
import string
import random
from itertools import chain, islice
from string import ascii_uppercase, ascii_lowercase
def _helper(letters):
return dict(zip(letters, chain(islice(letters, shift, None), letters)))
d = _helper(ascii_uppercase)
d.update(_helper(ascii_lowercase))
return d
这是新功能:
def applyCoder(text, coder):
buildCoder(int(n))
coder = buildCoder(int(n))
newtext = string.translate(text, buildCoder(int(n)))
return newtext
代码有问题 - 下面是一些测试用例 测试案例
>>> applyCoder("Hello, world!", buildCoder(3))
'Khoor, zruog!'
>>> applyCoder("Khoor, zruog!", buildCoder(23))
'Hello, world!'
当这样的测试完成后,上面的结果会弹出......
然而,每当我调用上面的函数applyCoder("string",buildCoder(n))
时,我都会收到以下错误消息:它表示n未定义但是如果我调用该函数 - 例如applyCoder("drink milk love life",buildCoder(5))
,它会给出以下输出:
Traceback (most recent call last):
File "<pyshell#24>", line 1, in <module>
applyCoder("drink milk love life", buildCoder(5))
File "C:\ProblemSet5\ProblemSet5\ps5_encryption.py", line 143, in applyCoder
buildCoder(int(n))
NameError: global name 'n' is not defined
那么我怎么会最终修复这个功能 - def applyCoder(text, coder):
?
答案 0 :(得分:0)
n指的是全局n。
你在你的pythonshell中写了这样的东西:
n = ...
def applyCoder(text, coder):
buildCoder(int(n))
coder = buildCoder(int(n))
newtext = string.translate(text, buildCoder(int(n)))
return newtext
n = ... # or this
但这应该是这样的:
def applyCoder(text, coder):
newtext = string.translate(text, coder)
return newtext
有帮助吗?