鱼C论坛

 找回密码
 立即注册
查看: 3152|回复: 7

看读序列

[复制链接]
发表于 2022-10-8 23:36:16 | 显示全部楼层 |阅读模式

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

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

x
题目:将一组数据用python呈现其看读序列。例:‘1211’ =》【‘1’‘2’,‘1’‘2’,‘2’‘1’】读作一个1, 一个2,两个1。

代码:
def parse_string (term):
  final_list = []
  current_streak = [term[0]]
  for i in term [1:]:
    if i in current_streak:
      current_streak.append(i)
    else:
      final_list.append([str(len(current_streak)),current_streak[0]])
      print (final_list)
      current_streak = [i]
  final_list.append([str(len(current_streak)),current_streak[0]])
  return final_list

term_n = '1211'
parse_string(term_n)

问题:当我把current_streak = [term[0]]写作current_streak = term[0]时,1211可以成功跑出来,1121则不可以。请问是哪里出问题了?
4CF29408-6B81-444E-BE5C-3B98DE8994A2.jpeg
3C536461-76E4-4977-A46A-754ED71D7B0D.jpeg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-10-9 00:01:39 | 显示全部楼层

回帖奖励 +10 鱼币

本帖最后由 jackz007 于 2022-10-9 00:03 编辑

        看看这个代码和结果是否符合要求:
def parse_string(term):
    final_list , i , x , c = [] , 1 , term[0] , 1
    for i in range(1 , len(term)):
        if term[i] == x :  
            c += 1
        else:
            final_list . append([str(c) , x])
            x , c = term[i] , 1
    final_list . append([str(c) , x])
    return final_list
print(parse_string('1211'))
print(parse_string('1121'))
        运行实况:
D:\[00.Exerciese.2022]\Python>python x.py
[['1', '1'], ['1', '2'], ['2', '1']]
[['2', '1'], ['1', '2'], ['1', '1']]

D:\[00.Exerciese.2022]\Python>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-9 08:24:16 | 显示全部楼层

回帖奖励 +10 鱼币

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

使用道具 举报

 楼主| 发表于 2022-10-9 08:43:28 | 显示全部楼层
jackz007 发表于 2022-10-9 00:01
看看这个代码和结果是否符合要求:

        运行实况:

谢谢,不过我是对于我给出的这个代码中中括号为什么加与不加有不同的结果,不知道您可否解答一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-9 10:58:19 | 显示全部楼层

回帖奖励 +10 鱼币

def foo(string):
    res, c, n = '', string[0], 1
    for char in string[1:]:
        if char == c:
            n += 1
        else:
            res += f"{n}{c}"
            c, n = char, 1
    res += f"{n}{c}"
    return res

def f():
    res = '1'
    while True:
        yield res
        res = foo(res)

for n, each in enumerate(f()):
    if n > 15:
        break
    print(each)
1
11
21
1211
111221
312211
13112221
1113213211
31131211131221
13211311123113112211
11131221133112132113212221
3113112221232112111312211312113211
1321132132111213122112311311222113111221131221
11131221131211131231121113112221121321132132211331222113112211
311311222113111231131112132112311321322112111312211312111322212311322113212221
132113213221133112132113311211131221121321131211132221123113112221131112311332111213211322211312113211
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-9 11:04:53 | 显示全部楼层
本帖最后由 jackz007 于 2022-10-9 11:06 编辑
1900342703 发表于 2022-10-9 08:43
谢谢,不过我是对于我给出的这个代码中中括号为什么加与不加有不同的结果,不知道您可否解答一下


       不加中括号,你指的是哪个中括号?
       另:你的代码也是对的:
def parse_string (term):
  final_list = []
  current_streak = [term[0]]
  for i in term [1:]:
      if i in current_streak:
          current_streak . append(i)
      else:
          final_list . append([str(len(current_streak)) , current_streak[0]])
          print (final_list)
          current_streak = [i]
  final_list . append([str(len(current_streak)) , current_streak[0]])
  return final_list

print(parse_string('1211'))
print(parse_string('1121'))
        运行实况:
D:\[00.Exerciese.2022]\Python>python x.py
[['1', '1']]
[['1', '1'], ['1', '2']]
[['1', '1'], ['1', '2'], ['2', '1']]
[['2', '1']]
[['2', '1'], ['1', '2']]
[['2', '1'], ['1', '2'], ['1', '1']]

D:\[00.Exerciese.2022]\Python>
        这个结果(第4、7行)有何问题?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-9 17:08:19 | 显示全部楼层

回帖奖励 +10 鱼币

看不懂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-9 22:08:34 | 显示全部楼层

回帖奖励 +10 鱼币

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-22 22:32

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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