我刚开始使用python而且我遇到了一个愚蠢的错误,但我不明白它为什么不能正常工作
def encryption(str1):
i = 0
for x in str1:
if (x >= 'a' and x <= 'z' or x >= 'A' and x <= 'Z'):
str1[i] = str1[i] + 3 % 26 #str[i] = x + 3 % 26
i+=1
return str1
当我执行程序时出现此错误:
TypeError:字符串索引必须是整数,而不是str。
有人可以解释为什么str [i] - 23被视为str吗?对我来说,我只是修改了一个字符的ascii值。
答案 0 :(得分:1)
python中的字符串不是像C中的数组。它们是不可变的,即 你无法对字符串进行更改。你的选择是转 将字符串放入列表(类似于c数组)或创建一个新的空字符串 并将每个加密的字母连接到它上(这可能会更快)。 Ord将字符串转换为ascii数字,chr转换为反向字符串。 如果字符在{a-z A-Z}
中,则isalpha方法测试为truestr1 = 'this is a test string!@#$@#$@'
def encryption(str1):
new_string = ''
for character in str1:
if character.isalpha():
new_string += chr(ord(character) + 3 % 26)
else:
new_string += character
return new_string
print(encryption(str1))