現在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):
ますか?