您好,我有点难以理解为什么字符串索引被列为“超出范围”。考虑一下我在这段代码中试图翻译的字符串:
a = str("g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr amknsrcpq ypc dmp. bmgle gr gl zw fylb gq glcddgagclr ylb rfyr'q ufw rfgq rcvr gq qm jmle. sqgle qrpgle.kyicrpylq() gq pcamkkclbcb. lmu ynnjw ml rfc spj.")
b = 0
while True:
if a[b] == str("k"):
a.replace("k", "m")
b = b + 1 #Methodically checks each string for a 'k' and replaces it with a 'm'
elif a[b] == str("o"):
a.replace("o", "q")
b = b + 1#Checks for an 'o' and replaces with 'q'
elif a[b] == str("e"):
a.replace("e", "g")
b = b + 1
else:
b = b + 1
continue
if b == 202:
print(a)
break
您永远不会在循环结束时到达您的
break
语句,因为您首先命中continue
,然后跳到下一个迭代。只要把continue
拿出来,你就可以准备好了。在我也建议不要使用像
^{pr2}$202
这样的“神奇”数字。相反,使用len
函数动态地确定您是否在字符串的末尾:或者更好的是,利用Python中可以轻松迭代字符串的事实:
正如其他人在评论中所说,你的逻辑也是有缺陷的(
replace
无论如何都会覆盖整个字符串!),而且你不需要所有这些str(...)
调用。您的整个函数可以重写为:或者更好的方法是,只需按照其预期的方式使用
replace
函数:在打破“如果”比较之前有一个“继续”。所以它可能永远不会到达if,也永远不会破裂
String是python中的一个序列,可以对其进行迭代。在
其次,由于字符串是不可变的,因此
str.replace
不修改a
,它只返回一个新的字符串。在相关问题 更多 >
编程相关推荐