我正在进行python练习并编写我的第一个函数,我必须在其中返回一个值......但是没有返回值。我正在使用Python 3.2.3通过OS X上的终端运行.py文件。最后一行应该与第四行不同,但它们的结果是相同的。然而,如果我在函数本身中打印textMessage它打印正常。 我错过了什么?
def caesarEncipher(textMessage, shift):
listOfChars = list(textMessage)
length = len(listOfChars)
count = 0
while length != count:
listOfChars[count] = chr(ord(listOfChars[count])+shift)
count = count + 1
textMessage = ''.join(listOfChars)
return (textMessage)
print ("Please enter your message to cipher:")
textMessage = raw_input()
print ("Please enter the value you wish to shift your message by:")
shift = int(input())
print "Your original message was:"
print textMessage
caesarEncipher(textMessage, shift)
print "Your message adjusted by a shift of", shift, "is:"
print textMessage
答案 0 :(得分:8)
您需要 保存 caesarEncipher()
功能返回的值。
所以而不是:
caesarEncipher(textMessage, shift)
有:
textMessage = caesarEncipher(textMessage, shift)
现在方法 返回一个值,但它没有保存,因此无法在后续的print
语句中显示。一旦将函数的返回值赋给变量(在本例中为textMessage
),就可以使用它。
答案 1 :(得分:6)
确实如此。你必须把它变成一个变量。
textMessage = caesarEncipher(textMessage, shift)
无论如何,凯撒不会这样加密它。如果shift
字母Z
的值为正数,则表示您已经不在字母表中并返回其他字符。
您可以使用此方法(仅适用于小写字符):
import string
def caesarEncipher(textMessage, shift):
src_chars = string.lowercase
dst_chars = string.lowercase[shift:] + string.lowercase[:shift]
return textMessage.translate(string.maketrans(src_chars, dst_chars))
答案 2 :(得分:1)
您返回值。但是你没有做任何事情。调用函数时需要存储返回的值:
textMessage = caesatEncipher(textMessage, shift)
答案 3 :(得分:1)
您永远不会存储ceaserEncipher
的返回值。要存储该值,请执行以下操作:
new_text_message=ceasarEncipher(textMessage,shift)