wayyyyyyyy 发表于 2022-7-26 21:24:09

小甲鱼课后作业27讲动动手

s = input('请输入需要整理的字符串:')
num =
for j in range(len(num)-2):
    if num.islower() and num == num.upper():
      del num
      del num
    elif num.isupper() and num == num.lower():
      del num
      del num
   
for i in num:
    print(i,sep = '',end = '')

报错提示:Traceback (most recent call last):
File "C:/Users/29039/Desktop/小甲鱼c/27.py", line 9, in <module>
    del num
IndexError: list assignment index out of range
不知道咋改了

鱼cpython学习者 发表于 2022-7-26 21:27:38

边遍历边删除元素是个很危险的事
你可以改成num = '', num = ''

临时号 发表于 2022-7-26 21:36:26

本帖最后由 临时号 于 2022-7-26 21:41 编辑

你一边遍历一边删除会导致遍历的字符串变小,从而造成下标越界
s = input('请输入需要整理的字符串:')
num =
for j in range(len(num)-2):
    if num.islower() and num == num.upper():
      num = ''
      num = ''
    elif num.isupper() and num == num.lower():
      num = ''
      num = ''

for i in num:
    print(i,sep = '',end = '')

wayyyyyyyy 发表于 2022-7-26 21:46:43

临时号 发表于 2022-7-26 21:36
你一边遍历一边删除会导致遍历的字符串变小,从而造成下标越界

可是这样等最后删除的话,像AABaAbCc就会删去aA,但不会删去aA消失后组成的Bb。难道是我的思路错了吗{:10_266:}

zl828520 发表于 2022-7-26 21:50:36

学习学习!!新人报道学习

青出于蓝 发表于 2022-7-26 21:52:39

本帖最后由 青出于蓝 于 2022-7-26 21:56 编辑

wayyyyyyyy 发表于 2022-7-26 21:46
可是这样等最后删除的话,像AABaAbCc就会删去aA,但不会删去aA消失后组成的Bb。难道是我的思路错了吗{:10 ...

s = input('请输入需要整理的字符串:')
sum=0
n=''
def a(s):
    n=''
    sum=0
    num =
    for j in range(len(num)-2):
      if num.islower() and num == num.upper():
            num = ''
            num = ''
            sum=1
      elif num.isupper() and num == num.lower():
            num = ''
            num = ''
            sum=1

    for i in num:
      n+=i
    if sum==0:
      print(n)
    else:
      a(n)

a(s)


写成一个函数,多次整理即可

N781791878 发表于 2022-7-26 23:12:43

它说超出索引范围了

李伦奥 发表于 2022-7-27 13:53:25

超出索引范围了

不如茶香 发表于 2022-7-27 15:10:32

{:10_257:}

kkl44stupid 发表于 2022-7-27 20:29:14

{:10_256:}

kerln888 发表于 2022-7-27 23:51:12

{:10_256:}{:10_256:}{:10_256:}{:10_256:}

1molHF 发表于 2022-7-28 08:34:03

超出索引范围了

YJ.H 发表于 2022-7-28 11:30:11

学习学习
页: [1]
查看完整版本: 小甲鱼课后作业27讲动动手