sin0824 发表于 2024-4-25 02:32:55

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

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

s = uncompress + " "
ch = s
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}")

#我作业每次和甲鱼老师的都不一样,我都自闭了!帮看看! 我感觉我太钻牛角尖了

FishC 发表于 2024-4-25 02:33:05

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

下面是修正后的代码:

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

s = uncompress + " "
ch = s
result = ""
num = ""

for each in s:
    if each.isdecimal():
      num += each
    else:
      if num == "":
            ch = each
      if num != "":
            result += ch * (int(num)-1)
            ch = each# 修正这一行,重新赋值给ch
      if not each.isdecimal():
            result += each
            
      num = ""
   
print(f"解压后的字符串:{result}")

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

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

aix1a 发表于 2024-4-25 10:51:41

可以啊,代码实现方式有很多,不一定要和小甲鱼写的一样,你直接相乘不用循环也ok的啊
页: [1]
查看完整版本: 32讲 字符串VI 动动手1 :解压字符串 我是这样写的