在python中不起作用的函数中的返回值



我需要创建一个ceasar密码程序,它接受一个字符串,将其转换为ASCII,将其移位4,将其转换回字符串,打印它,然后通过反转密码函数来解密它,然后打印原始字符串。然而,在我的函数的返回值不工作。我该如何解决这个问题?#密码函数

def cipher(string):
string = ""
NewX = 0
encrypted = 0
for letter in range(len(string)):
NewX = string[letter]
#encrypted is the encrypted word 
encrypted = chr(ord(NewX)+4)
return encrypted

#Decipher function
def decipher(NewX):
NewString  = ""
for letter in range(len(encrypted)):
NewString = chr(ord(encrypted)-4)
return(NewString)

def main():
string = input("enter your string here: ")
cipher(string)
print(encrypted)
decipher(NewX)
print()

main()

代码中有不少错误。

缩进。在Python中,代码块由代码缩进的程度来表示。在破译函数中,

NewString  = ""
for letter in range(len(encrypted)):
NewString = chr(ord(encrypted)-4)
return(NewString) 

return在右边多了一个空格,或者上面的行在左边多了一个空格(更有可能)。

连接。在代码中,结果被声明为空、0或";(并将String设置为"清空您输入的字符串)。很明显,这个想法是在结果的末尾添加转换后的字符。但是,代码将分配转换后的字符,并重写现有的内容。一种简单的方法是使用操作符+=

进行连接。
encrypted += chr(ord(NewX)+4)

参数。在解密函数中,传入的参数是NewX,而实际使用的变量是encrypted。这是应该传入的参数。此外,您是在整个字符串上运行ord,而不是在单个字符上运行。

For循环。你可以简单地说:

for letter in string:

而不是

for letter in range(len(string)):
NewX = string[letter]

返回值。在代码中,运行了encrypt和decipher函数,但由于没有捕获结果,因此结果将被丢弃。

改正这些错误后,代码是:
def cipher(string):
encrypted = ""
for letter in string:
#encrypted is the encrypted word 
encrypted += chr(ord(NewX)+4)
return encrypted

#Decipher function
def decipher(encrypted):
NewString  = ""
for letter in encrypted:
NewString += chr(ord(letter)-4)
return(NewString)

def main():
string = input("enter your string here: ")
encrypted=cipher(string)
print(encrypted)
decyphered=decipher(encrypted)
print(decyphered)
main()

您需要将函数返回的值存储在一个变量中。例如,在main()函数块

encrypted= cipher(string)
print(encrypted) # Printing stored value
print(decipher(NewX)) # You can directly print it too without storing

相关内容

  • 没有找到相关文章

最新更新