2017-01-06 5 views
-4

整数offsetと文字列を受け取るメソッドを記述します。 新しい文字列を生成します。各文字はoffsetだけシフトされます。 は、文字列には小文字だけが含まれ、文字列には のスペースが含まれていると仮定できます。シーザー暗号オブジェクトは代入Pythonをサポートしていません

def caesar_cipher(offset, string): 
    words = string.split(" ") 

    word_i = 0 
    while word_i < len(words): 
     word = words[word_i] 

     letter_i = 0 
     while letter_i < len(word): 
      char_i = ord(word[letter_i]) - ord("a") 

      new_char_i = (char_i + offset) % 26 
      word[letter_i] = chr(ord("a") + new_char_i) #----error is at this line ---- 

      letter_i += 1 
     word_i += 1 
    return words.join(" ") 
print caesar_cipher(3, "abc") 

print defを返す必要があります。

このstr割り当てエラーを修正する方法をご希望ですか、ありがとうございます!

+0

あなたは*あなたはこの自分を解決しようとした任意の*証拠を示すことはできますか? –

+1

文字列は不変です。代わりに新しいものを作成してください。 – kraskevich

答えて

0

文字列は不変です。このエラーで

a = "hello" 
a[1] = 'q' 

..results:

TypeError: 'str' object does not support item assignment 

より良いアプローチ置換文字のうちの1文字の文字列の新しいリストを構築することです。慣用句Pythonでは、それはlist comprehensionになりますが、forループもうまく動作します。

最後に、このような新しい文字列にそれらを結合:

''.join(cipher_chars) 
関連する問題