0

私はPythonの演習を行っており、値を返さなければならない最初の関数を書いています...しかし、値は返されていません。Python 3.2.3 を使用して、OS X のターミナルから .py ファイルを実行しています。最後の行は 4 番目の最後の行とは異なるはずですが、結果は同じです。それでも、関数自体で 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

4 に答える 4

8

関数から返された値を保存する必要がありますcaesarEncipher()

したがって、これの代わりに:

caesarEncipher(textMessage, shift)

持ってる:

textMessage = caesarEncipher(textMessage, shift)

現在、メソッドprint値を返していますが、保存されていないため、後続のステートメントに表示できません。関数の戻り値を変数 (この場合はtextMessage) に割り当てたら、それを使用できます。

于 2012-07-14T17:52:43.463 に答える
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))
于 2012-07-14T17:52:38.960 に答える
1

値を返します。しかし、あなたはそれで何もしません。関数を呼び出すときに、戻り値を保存する必要があります。

textMessage = caesatEncipher(textMessage, shift)
于 2012-07-14T17:52:53.307 に答える
1

の戻り値を保存することはありませんceaserEncipher。値を保存するには、次のようにします。

new_text_message=ceasarEncipher(textMessage,shift)
于 2012-07-14T17:53:13.220 に答える