目前,我正在创建一个凯撒密码,但它不能正常工作,有人可以帮助吗?代码将在下面。目前,如果程序是第一次运行(就像现在一样,不需要重新运行任何函数),它可以很好地工作,但是当getKey()函数重新运行时,它会返回一个错误。代码后面显示错误:
def runProgram():
def choice():
userChoice = input("Do you wish to Encrypt of Decrypt? Enter E or D: ").lower()
if userChoice == "e":
return userChoice
elif userChoice == "d":
return userChoice
else:
print("Invalid Response. Please try again.")
choice()
def getMessage():
userMessage = input("Enter your message: ")
return userMessage
def getKey():
try:
userKey = int(input("Enter a key number (1-26): "))
except:
print("Invalid Option. Please try again.")
getKey()
else:
if userKey < 1 or userKey > 26:
print("Invalid Option. Please try again.")
getKey()
else:
return userKey
def getTranslated(userChoice, message, key):
translated = ""
if userChoice == "e":
for character in message:
num = ord(character)
num += key
translated += chr(num)
savedFile = open('Encrypted.txt', 'w')
savedFile.write(translated)
savedFile.close()
return translated
else:
for character in message:
num = ord(character)
num -= key
translated += chr(num)
return translated
userChoice = choice() #Runs function for encrypt/decrypt selection. Saves choice made.
message = getMessage() #Run function for user to enter message. Saves message.
key = getKey() #Runs function for user to select key. Saves key choice.
translatedMessage = getTranslated(userChoice, message, key) #Runs function to translate message, using the choice, message and key variables)
print("\nTranslation complete: " + translatedMessage)
runProgram()
我尝试在getKey()函数中使用try、except和else命令创建错误证明。它将“尝试”查看输入是否是int值,如果是,则转到else,但如果不是int值,则重新运行函数。如果重新运行该函数,并且输入了int值,则给出以下错误:
这是它工作的一个例子:
Do you wish to Encrypt of Decrypt? Enter E or D: E Enter your message: Hello Enter a key number (1-26): 5 Translation complete: Mjqqt
Do you wish to Encrypt of Decrypt? Enter E or D: E Enter your message: Hello Enter a key number (1-26): H Invalid Option. Please try again. Enter a key number (1-26): 5 Traceback (most recent call last): File "C:\Python34\Encryptor2.py", line 54, in runProgram() File "C:\Python34\Encryptor2.py", line 52, in runProgram translatedMessage = getTranslated(userChoice, message, key) #Runs function to translate message, using the choice, message and key variables) File "C:\Python34\Encryptor2.py", line 35, in getTranslated num += key TypeError: unsupported operand type(s) for +=: 'int' and 'NoneType'
正如您所看到的,它也像我所希望的那样运行函数,但是在将键添加到字符的顺序时发生了错误。
第一次调用getKey(),并附上注释:
key = getKey() #Runs function for user to select key. Saves key choice.
另一个你称之为:
if userKey < 1 or userKey > 26:
print("Invalid Option. Please try again.")
getKey()
如果你用同样的注释来写,它会是:
getKey() #Runs function for user to select key. Doesn't save key choice.
return userKey
def getKey():
prompt user for key
try to convert to int and return the int
if it fails, return None as an indication that getting the key went wrong.
key = None #set some wrong placeholder
while (key is None) or (key < 1) or (key > 26):
key = getKey()
我需要编写一个python、hacker和wow这些单词的加密文本,并且使用不包括使用RAW_INPUT的python中的凯撒密码,距离为3。这是我到目前为止,但我不断得到一个错误消息,我不知道如何修复它。
问题内容: 我通过java进行了凯撒密码,它可以运行,但是在用户输入密钥后不对任何内容进行加密! 这是我的代码 跑: 问题答案: 使用效率不是很高…您可以对值进行整数运算以获得其索引。 我在代码中添加了注释以解释更多信息,但这就是我想出的。 输出应该是这样的
第一次发帖到StackOverflow! 我是一个新的程序员,所以请耐心等待,因为我还没有跟上所有可能的函数,所以可能我只是目前缺少一个函数或方法的知识,可以快速解决我的问题。 感谢大家的帮助!
我正在为我的计算机科学课做凯撒密码,我被卡住了。我已经想出了如何满足项目所需的一些元素,比如空格,当加密密钥设置为一个固定的数字时,它就可以工作了。然而,其中一个要求是,当你点击“Z”时,字母表会环绕,用户可以输入他们自己的加密密钥值。它还需要加密和解密消息。任何提示,任何人可以给我关于哪里我走错了,将不胜感激!以下是我目前所拥有的:(我是在Eclipse中制作的)
首先,我是编程的新手,所以要温柔。而且,我一直在做这个任务,但没有任何结果。任务是创建一个凯撒密码程序,它加密或解密一个段落最多100个字符。实际上是两个独立的实验室。第一个实验是加密,然后第二个实验是解密。一旦我弄清楚了如何创建加密程序,解密程序应该很简单,因为我可以只进行语义更改来解密而不是加密。无论如何,这是我到目前为止的代码。它通过了他们给我们的5个测试中的4个,但出于某种原因,有一个测试