1815702237 发表于 2022-3-29 14:38:35

python最新版 27讲 字符串1

动动手1:



我能正常打印结果,可为什么我改了好几种方式,第8行都会报错
用for循环来实现,去单步调试的时候第一次运行到这个地方也会报错,在往下能正常运行
这是为什么

str = "AABaAbCc"
str1 = str.swapcase()#将目标字符串整个翻转过来
length = len(str)

j = 0
while j <= length - 2:
    #将目标字符串与它大小写对调后的字符串进行对比,相同则删除
    if str == str1 and j >= 0:
      str = str[:j] + str
      str1 = str.swapcase()
      j -= 2
    j += 1

    print(str)

python爱好者. 发表于 2022-3-29 14:52:21

应该是索引值超出列表的最大范围了吧......

1815702237 发表于 2022-3-29 15:01:52

python爱好者. 发表于 2022-3-29 14:52
应该是索引值超出列表的最大范围了吧......

while给定的条件j <= length - 2   限定了j最大到倒数第二个元素,在加上1正好和最后一个对比完就结束,第一次循环也是从零开始,所以我想不明白为什么报错

大马强 发表于 2022-3-29 15:18:19

1815702237 发表于 2022-3-29 15:01
while给定的条件j

str长度是变化的
str = "FishCcCode"
str1 = str.swapcase()# 将目标字符串整个翻转过来 对调

j = 0
while j <= len(str) - 2:
    # print(length, j)
    # 将目标字符串与它大小写对调后的字符串进行对比,相同则删除
    if str == str1 and j >= 0:
      str = str[:j] + str
      str1 = str.swapcase()
      j -= 2
    j += 1

    print(str, str1, j)# 这样调试也可以
页: [1]
查看完整版本: python最新版 27讲 字符串1