|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
words = input('请输入待解压字符串:')
decompact = ''
mix = ''
for i in range(len(words)-1,0,-1):
if words[i].isalpha():
if i == len(words) -1:
decompact = ''.join([decompact,words[i]])
elif words[i+1].isdecimal():
continue
elif words[i+1].isalpha():
decompact = ''.join([decompact,words[i]])
else:
for J in range(int(words[i])):
mix = ''.join([mix,words[i-1]])
decompact = ''.join([decompact,mix])
mix = ''
decompact = decompact[::-1]
print('解压后的字符串:{}'.format(decompact))
代码如上,为何我输入FFI4SSHC6,得到的结果是FIIIISSHCCCCCC,少了一个F呢??
本帖最后由 sfqxx 于 2023-4-18 22:31 编辑
在解压字符串的循环中,由于计数是从字符串最后一个字符开始的,导致对于第一个字母需要单独处理。所以对于输入的字符串FFI4SSHC6,需要在循环外先将第一个字符加入到解压后的字符串中
修改代码如下:
- words = input('请输入待解压字符串:')
- decompact = words[0] # 添加第一个字符
- mix = ''
- for i in range(len(words)-1,0,-1):
- if words[i].isalpha():
- if i == len(words) -1:
- decompact = ''.join([decompact,words[i]])
- elif words[i+1].isdecimal():
- continue
- elif words[i+1].isalpha():
- decompact = ''.join([decompact,words[i]])
- else:
- for J in range(int(words[i])):
- mix = ''.join([mix,words[i-1]])
- decompact = ''.join([decompact,mix])
- mix = ''
-
- decompact = decompact[::-1]
- print('解压后的字符串:{}'.format(decompact))
复制代码
输出结果为:`FFIIIISSHCCCCCC`,和预期结果相同,不再少了字母 F。
|
|