这是一个将字符串加密为简单密文的简单程序,但我不断收到错误消息。有人能找出我的错误吗?下面附上代码和错误信息。
def main():
message = prep_plaintext(plaintext)
rails = build_rails(message)
encrypt(rails)
def prep_plaintext(plaintext):
message = "".join(plaintext.split())
message = message.upper()
print("\nplaintext = {}".format(plaintext))
return message
def build_rails(message):
evens = message[::2]
odds = message[1::2]
rails = evens + odds
return rails
def encrypt(rails):
ciphertext = ' '.join([rails[i:i+5] for i in range(0, len(rails), 5)])
print("ciphertext = {}".format(ciphertext))
if __name__ == '__main__':
main()
Traceback (most recent call last):
File "/Users/bennettsullivan/Documents/Encrypt.py", line 23, in <module>
main()
File "/Users/bennettsullivan/Documents/Encrypt.py", line 2, in main
message = prep_plaintext(plaintext)
NameError: name 'plaintext' is not defined
答案 0 :(得分:3)
问题在于主函数中的变量 plaintext 未声明。由于这个原因,这段代码引发了一个错误。
您可以修复例如像这样修改您的代码:
def main():
plaintext = "" # put here a value
message = prep_plaintext(plaintext)
rails = build_rails(message)
encrypt(rails)
答案 1 :(得分:0)
这一行是原因,变量plaintext
没有在main()
中定义
message = prep_plaintext(plaintext)
也许试试message = prep_plaintext(input('plaintext: '))
或更改
def main():
到
def main(plaintext):
并给main()
答案 2 :(得分:0)
在message = prep_plaintext(plaintext)
中,变量plaintext
没有定义
在方法中定义变量
def main():
plaintext = "password"
message = prep_plaintext(plaintext)
将其作为参数传递
def main(plaintext):
message = prep_plaintext(plaintext)
main("password")
您也可以将 "password"
替换为 input("Please enter a value to encrypt: ")
以在代码执行时在控制台中写入一个字