鱼C论坛

 找回密码
 立即注册
查看: 98|回复: 2

32讲 字符串VI 动动手1 :解压字符串 我是这样写的

[复制链接]
发表于 2024-4-25 02:32:55 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
uncompress = input("请输入待解缩字符串:")

s = uncompress + " "
ch = s[0]
result = ""
num = ""

for each in s:
    if each.isdecimal():
        num += each
    else:
        if num == "":
            ch = each
        if num != "":
            result += ch * (int(num)-1)  #我暴力的直接 乘以数字加进去,不遍历了
        if not each.isdecimal():         #遍历到数字后面的字母 应该加到 有数字相乘结果之后   
            result += each
            
        num = ""
   
print(f"解压后的字符串:{result}")

#我作业每次和甲鱼老师的都不一样,我都自闭了!帮看看! 我感觉我太钻牛角尖了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-4-25 02:33:05 | 显示全部楼层
你的代码基本正确,但有一处小问题需要修正。在遍历字符串时,在`if num != "":`这个条件判断语句中,你将`ch`乘以`(int(num)-1)`后,应该要重新赋值给`result`,否则会丢失之前解压出来的字符串。

下面是修正后的代码:

  1. uncompress = input("请输入待解缩字符串:")

  2. s = uncompress + " "
  3. ch = s
  4. result = ""
  5. num = ""

  6. for each in s:
  7.     if each.isdecimal():
  8.         num += each
  9.     else:
  10.         if num == "":
  11.             ch = each
  12.         if num != "":
  13.             result += ch * (int(num)-1)
  14.             ch = each  # 修正这一行,重新赋值给ch
  15.         if not each.isdecimal():
  16.             result += each
  17.             
  18.         num = ""
  19.    
  20. print(f"解压后的字符串:{result}")
复制代码


现在你可以再运行一次,应该就能得到正确的解压结果了。别太纠结实现的细节,关键是能正确解压出字符串就好,加油!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-4-25 10:51:41 | 显示全部楼层
可以啊,代码实现方式有很多,不一定要和小甲鱼写的一样,你直接相乘不用循环也ok的啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-19 01:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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