不吃辣的雾都人 发表于 2023-4-18 22:26:59

新版PYTHON第32课最后一道大题,求解!


words = input('请输入待解压字符串:')
decompact = ''
mix = ''

for i in range(len(words)-1,0,-1):
    if words.isalpha():
      if i == len(words) -1:
            decompact = ''.join(])
      elif words.isdecimal():
            continue
      elif words.isalpha():
            decompact = ''.join(])
    else:
      for J in range(int(words)):
            mix = ''.join(])
      decompact = ''.join()
      mix = ''
      
decompact = decompact[::-1]
print('解压后的字符串:{}'.format(decompact))

代码如上,为何我输入FFI4SSHC6,得到的结果是FIIIISSHCCCCCC,少了一个F呢??

sfqxx 发表于 2023-4-18 22:28:44

本帖最后由 sfqxx 于 2023-4-18 22:31 编辑

在解压字符串的循环中,由于计数是从字符串最后一个字符开始的,导致对于第一个字母需要单独处理。所以对于输入的字符串FFI4SSHC6,需要在循环外先将第一个字符加入到解压后的字符串中

修改代码如下:


words = input('请输入待解压字符串:')
decompact = words # 添加第一个字符
mix = ''
for i in range(len(words)-1,0,-1):
    if words.isalpha():
      if i == len(words) -1:
            decompact = ''.join(])
      elif words.isdecimal():
            continue
      elif words.isalpha():
            decompact = ''.join(])
    else:
      for J in range(int(words)):
            mix = ''.join(])
      decompact = ''.join()
      mix = ''
      
decompact = decompact[::-1]
print('解压后的字符串:{}'.format(decompact))


输出结果为:`FFIIIISSHCCCCCC`,和预期结果相同,不再少了字母 F。

isdkz 发表于 2023-4-18 22:35:08

你好!你在处理第一个字母时遇到了问题。在当前的代码中,你并没有处理到字符串的第一个字符(索引为0的字符),因此在处理过程中丢失了一个 'F'。

为了修复这个问题,你可以将循环的范围从 1 开始,即将 range(len(words)-1, 0, -1) 改为 range(len(words)-1, -1, -1)。

以下是修改后的代码:

words = input('请输入待解压字符串:')
decompact = ''
mix = ''

for i in range(len(words)-1, -1, -1):
    if words.isalpha():
      if i == len(words) -1:
            decompact = ''.join(])
      elif words.isdecimal():
            continue
      elif words.isalpha():
            decompact = ''.join(])
    else:
      for J in range(int(words)):
            mix = ''.join(])
      decompact = ''.join()
      mix = ''
      
decompact = decompact[::-1]
print('解压后的字符串:{}'.format(decompact))

现在,当你输入 "FFI4SSHC6" 时,输出结果将是 "FFIIIISSHCCCCCC"。

不吃辣的雾都人 发表于 2023-4-18 22:43:28

sfqxx 发表于 2023-4-18 22:28
在解压字符串的循环中,由于计数是从字符串最后一个字符开始的,导致对于第一个字母需要单独处理。所以对于 ...

我把你的代码跑了一遍,结果是FIIIISSHCCCCCCF。
应该在最后循环结束后,加一行:decompact = ''.join(])
忘记range()是左闭右开了,谢谢大佬

isdkz 发表于 2023-4-18 22:46:42

不吃辣的雾都人 发表于 2023-4-18 22:43
我把你的代码跑了一遍,结果是FIIIISSHCCCCCCF。
应该在最后循环结束后,加一行:decompact = ''.join([ ...

我的答案没有问题呀,为什么不给我最佳{:10_266:}

不吃辣的雾都人 发表于 2023-4-18 23:43:04

isdkz 发表于 2023-4-18 22:46
我的答案没有问题呀,为什么不给我最佳

他先回复,就他最佳啦。也很感谢你的帮助,谢谢大佬{:9_217:}

isdkz 发表于 2023-4-18 23:45:35

不吃辣的雾都人 发表于 2023-4-18 23:43
他先回复,就他最佳啦。也很感谢你的帮助,谢谢大佬

懂了,下次我不测试直接回复,看谁的gpt快{:10_256:}

不吃辣的雾都人 发表于 2023-4-19 10:31:58

isdkz 发表于 2023-4-18 23:45
懂了,下次我不测试直接回复,看谁的gpt快

{:9_227:}

平凡之路1314 发表于 2023-4-19 11:03:29

渔币

kerln888 发表于 2023-4-20 09:05:44

{:10_256:}{:10_256:}膜拜大佬们

sfqxx 发表于 2023-4-30 12:13:39

isdkz 发表于 2023-4-18 23:45
懂了,下次我不测试直接回复,看谁的gpt快

{:10_321:}
页: [1]
查看完整版本: 新版PYTHON第32课最后一道大题,求解!