【发布时间】:2014-12-11 09:38:41
【问题描述】:
在 python 中编写一个 vigenere 密码,我完全迷失了,有人愿意帮我一把并提出可以改进/使其正常工作的事情吗?目前我遇到了各种各样的错误
letters='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
print ("This program will take a keyword, and use it to encrypt plaintext.")
def keyword():
print ("Please enter your keyword")
keyword = input()
return keyword
def plaintext():
print ("Please enter your plaintext")
plaintext = input()
return plaintext
def translate (keyword, plaintext):
keywordtwo=0
number=0
keyword=keyword.upper()
length = len(plaintext)
lengthtwo=len(keyword)
for symbol in plaintext:
number=letters.find(symbol.upper())
if number!=-1:
number+=letters.find
num%=len(letters)
if symbol.isupper():
translated.append(letters[number])
elif symbol.islower():
translated.append(letters[number].lower())
if keywordtwo==len(keyword):
keywordtwo=0
else:
translated.append(symbol)
return ' '.join(translated)
keyword = keyword()
plaintext = plaintext()
translated = translate(keyword, plaintext)
print ("Your new text is:")
print (translate(keyword, plaintext))
【问题讨论】:
-
你得到什么样的错误?
-
TypeError: unsupported operand type(s) for +=: 'int' and 'builtin_function_or_method' 是最新的@PieterWitvoet
-
number+=letters.find 似乎不正确,您必须传递一个参数才能找到
-
阅读一些文献以改善您的编码风格可能也值得一读。你的程序很混乱,读者很难理解。这是一项极其重要的技能,最好尽早学习。
标签: python encryption vigenere