Python函数不返回变量

时间:2012-07-14 17:51:07

标签: python

我正在进行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

4 个答案:

答案 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)