鱼C论坛

 找回密码
 立即注册
查看: 3327|回复: 8

[已解决]代码看不懂,注释一下

[复制链接]
发表于 2022-11-2 11:11:24 | 显示全部楼层 |阅读模式
3鱼币
https://fishc.com.cn/template/default/style/t2/bgimg.jpgs = input("请输入待解压字符串:")

s += ' '    # 小技巧:末尾添加一个空格
ch = s[0]
result = ''
repeat = ''

for each in s:
    if each.isdecimal():
        repeat += each
        continue
    else:
        if repeat != '':
            for i in range(int(repeat)-1):
                result += ch
               
        result += each
        repeat = ''
        ch = each

result.rstrip() # 去掉末尾的空格

print(f"解压后的字符串:{result}")
最佳答案
2022-11-2 11:11:25
'''
解压规则:
如果一个数字后面跟一个字符,这里假设这个数字 n, 这个字符为 c
那么c就出现了n次
比如:
按照该解压规则解压字符串:
-6
最终的结果会是:
------
可以重复出现多次该结构:
-8/4[3
结果会是:
--------////[[[
但是如果只出现了一个数字 n,那么只会出现 n - 1 次的 n 的第一位数,比如:
5
结果会是:
5555
再比如:
6-3
结果会是
66666---
或者:
13-1
结果会是:
111111111111-

只出现了一个字符c那么就只会出现一个字符c:
-
结果会是:
-
再比如:
+=4
结果会是:
+====
'''

s = input() #正常读入字符串
s += ' '    #加上一个空格,可以使遍历最后一个时,也能执行,解压操作
ch = s[0]   #循环需要添加的字符
result = '' #最终解压后结果
repeat = '' #循环添加次数

for each in s: #遍历待解压的字符串
    if each.isdecimal(): #如果当前是一个数字
        repeat += each #加到次数中
        continue #遍历下一个字符,可以不用写
    else: #如果不是一个数字
        if repeat != '': #如果次数非空
            for i in range(int(repeat)-1): #循环 repeat - 1 次
                result += ch #最终结果末尾添加ch
               
        result += each #最终结果加一下该字符
        repeat = '' #循环次数清空
        ch = each #ch设置为当前的字符,是下一次出现数字时要循环的字符

result.rstrip() # 去掉末尾的空格

print(f"解压后的字符串:{result}") #照常输出解压结果
自己造出来了解压规则,求给最佳

最佳答案

查看完整内容

自己造出来了解压规则,求给最佳
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-11-2 11:11:25 | 显示全部楼层    本楼为最佳答案   
'''
解压规则:
如果一个数字后面跟一个字符,这里假设这个数字 n, 这个字符为 c
那么c就出现了n次
比如:
按照该解压规则解压字符串:
-6
最终的结果会是:
------
可以重复出现多次该结构:
-8/4[3
结果会是:
--------////[[[
但是如果只出现了一个数字 n,那么只会出现 n - 1 次的 n 的第一位数,比如:
5
结果会是:
5555
再比如:
6-3
结果会是
66666---
或者:
13-1
结果会是:
111111111111-

只出现了一个字符c那么就只会出现一个字符c:
-
结果会是:
-
再比如:
+=4
结果会是:
+====
'''

s = input() #正常读入字符串
s += ' '    #加上一个空格,可以使遍历最后一个时,也能执行,解压操作
ch = s[0]   #循环需要添加的字符
result = '' #最终解压后结果
repeat = '' #循环添加次数

for each in s: #遍历待解压的字符串
    if each.isdecimal(): #如果当前是一个数字
        repeat += each #加到次数中
        continue #遍历下一个字符,可以不用写
    else: #如果不是一个数字
        if repeat != '': #如果次数非空
            for i in range(int(repeat)-1): #循环 repeat - 1 次
                result += ch #最终结果末尾添加ch
               
        result += each #最终结果加一下该字符
        repeat = '' #循环次数清空
        ch = each #ch设置为当前的字符,是下一次出现数字时要循环的字符

result.rstrip() # 去掉末尾的空格

print(f"解压后的字符串:{result}") #照常输出解压结果
自己造出来了解压规则,求给最佳
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-11-4 16:38:48 | 显示全部楼层
s = input("请输入待解压字符串:") #输入

s += ' '    # 小技巧:末尾添加一个空格
ch = s[0]
result = ''
repeat = ''

for each in s:
    if each.isdecimal(): # 如果当前字符串是一个数字
        repeat += each   # repeat 是重复的次数,此时将重复的次数加到 repeat 末尾
                         # 比如 repeat = '',此时读入了一个3,repeat 就会变成 '3'
                         # 如果 repeat = '10',此时又读入了一个 1,repeat 就会变成'103'
                         # 这种方法比用数字存储简便
        continue         # 直接进入下一轮循环,此句没有什么实际作用,可以删去
    else:
        if repeat != '':                    # 如果 repeat 的值是 '',则前面的字符串并不需要重复
            for i in range(int(repeat)-1):  # 这个 for 循环可以改成 result += ch * (repeat-1)
                result += ch
               
        result += each                      # 读入当前的字符串
        repeat = ''                         # 重置 repeat
        ch = each                           # 重置当前的字符串

result.rstrip() # 去掉末尾的空格

print(f"解压后的字符串:{result}") # 打印
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-11-5 09:04:41 | 显示全部楼层
全部注释
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-11-5 12:08:15 | 显示全部楼层
请说明一下解压的规则!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-11-5 16:46:48 | 显示全部楼层
zhangjinxuan 发表于 2022-11-5 12:32
自己造出来了解压规则,求给最佳

这个是小甲鱼课后作业里面的一道题,规则在作业里面

你总结的单独的一个数会出现 n-1 次的 n 的第一位数这一条好像是 bug
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-11-5 16:53:28 | 显示全部楼层
tommyyu 发表于 2022-11-5 16:46
这个是小甲鱼课后作业里面的一道题,规则在作业里面

你总结的单独的一个数会出现 n-1 次的 n 的第一位 ...

beep
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-11-6 18:35:07 | 显示全部楼层
楼主在吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-11-11 14:49:49 | 显示全部楼层
楼主在吗,都过去六天了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-25 17:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表