关于Python字符串反码
s=input()i=0
j=0
len=len(s)
str0=*len
while(i-1<=len):
if(65<=ord(s)<=77):
temp1=ord(s)
temp2=ord('Z')-(temp1-ord('A'))
str0=s.replace(s,str(temp2))
i+=1
elif(78<=ord(s)<=90):
temp1=ord(s)
temp2=ord('A')+(ord('Z')-temp1)
str0=s.replace(s,str(temp2))
i+=1
elif(97<=ord(s)<=109):
temp1=ord(s)
temp2=ord('z')-(temp1-ord('a'))
str0=s.replace(s,str(temp2))
i+=1
elif(110<=ord(s)<=122):
temp1=ord(s)
temp2=ord('a')+(ord('z')-temp1)
str0=s.replace(s,str(temp2))
i+=1
else:
i+=1
print(str0)
输入:CD 后报错: if(65<=ord(s)<=77):
~^^^
IndexError: string index out of range
请问这是什么原因? 这个错误是由于在while循环中的条件判断出现了问题导致的。
在条件判断中,你使用了连续的比较运算符<=和<= ,但是这种写法在Python中是不支持的。
正确的写法应该是使用逻辑运算符and来连接多个条件判断,如下所示:
if 65 <= ord(s[ i]) and ord(s[ i]) <= 77:
# do something
elif 78 <= ord(s[ i]) and ord(s[ i]) <= 90:
# do something
elif 97 <= ord(s[ i]) and ord(s[ i]) <= 109:
# do something
elif 110 <= ord(s[ i]) and ord(s[ i]) <= 122:
# do something
else:
# do something
请注意,这里的条件判断需要使用逻辑运算符and连接两个判断条件,以确保两个条件都为真时才执行相应的代码。
另外,你的while循环的终止条件应该是i < len ,而不是i-1 <= len 。这是因为索引是从0开始的,所以最后一个元素的索引是len-1 。
希望这个解释对你有帮助!如果你还有其他问题,请随时提问。 isdkz 发表于 2023-9-25 17:48
这个错误是由于在while循环中的条件判断出现了问题导致的。
在条件判断中,你使用了连续的比较运算符
感谢!
页:
[1]