编写一个接受整数offset
和字符串的方法。
生成一个新字符串,其中每个字母都移动offset
。您
可以假设该字符串仅包含小写字母和
空格。
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 :(得分:0)
字符串是不可变的。
a = "hello"
a[1] = 'q'
..导致此错误:
TypeError: 'str' object does not support item assignment
更好的方法是从替换字母中建立新的1个字符的字符串列表。在惯用的Pythonic中,这将是list comprehension,但for循环也可以正常工作。
最后,将它们加入到这样的新字符串中:
''.join(cipher_chars)