鱼C论坛

 找回密码
 立即注册
查看: 3526|回复: 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
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

回帖奖励 +10 鱼币

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

        看看这个代码和结果是否符合要求:
  1. def parse_string(term):
  2.     final_list , i , x , c = [] , 1 , term[0] , 1
  3.     for i in range(1 , len(term)):
  4.         if term[i] == x :  
  5.             c += 1
  6.         else:
  7.             final_list . append([str(c) , x])
  8.             x , c = term[i] , 1
  9.     final_list . append([str(c) , x])
  10.     return final_list
  11. print(parse_string('1211'))
  12. print(parse_string('1121'))
复制代码

        运行实况:
  1. D:\[00.Exerciese.2022]\Python>python x.py
  2. [['1', '1'], ['1', '2'], ['2', '1']]
  3. [['2', '1'], ['1', '2'], ['1', '1']]

  4. D:\[00.Exerciese.2022]\Python>
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

回帖奖励 +10 鱼币

666
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

        运行实况:

谢谢,不过我是对于我给出的这个代码中中括号为什么加与不加有不同的结果,不知道您可否解答一下
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

回帖奖励 +10 鱼币

  1. def foo(string):
  2.     res, c, n = '', string[0], 1
  3.     for char in string[1:]:
  4.         if char == c:
  5.             n += 1
  6.         else:
  7.             res += f"{n}{c}"
  8.             c, n = char, 1
  9.     res += f"{n}{c}"
  10.     return res

  11. def f():
  12.     res = '1'
  13.     while True:
  14.         yield res
  15.         res = foo(res)

  16. for n, each in enumerate(f()):
  17.     if n > 15:
  18.         break
  19.     print(each)
复制代码
  1. 1
  2. 11
  3. 21
  4. 1211
  5. 111221
  6. 312211
  7. 13112221
  8. 1113213211
  9. 31131211131221
  10. 13211311123113112211
  11. 11131221133112132113212221
  12. 3113112221232112111312211312113211
  13. 1321132132111213122112311311222113111221131221
  14. 11131221131211131231121113112221121321132132211331222113112211
  15. 311311222113111231131112132112311321322112111312211312111322212311322113212221
  16. 132113213221133112132113311211131221121321131211132221123113112221131112311332111213211322211312113211
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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


       不加中括号,你指的是哪个中括号?
       另:你的代码也是对的:
  1. def parse_string (term):
  2.   final_list = []
  3.   current_streak = [term[0]]
  4.   for i in term [1:]:
  5.       if i in current_streak:
  6.           current_streak . append(i)
  7.       else:
  8.           final_list . append([str(len(current_streak)) , current_streak[0]])
  9.           print (final_list)
  10.           current_streak = [i]
  11.   final_list . append([str(len(current_streak)) , current_streak[0]])
  12.   return final_list

  13. print(parse_string('1211'))
  14. print(parse_string('1121'))
复制代码

        运行实况:
  1. D:\[00.Exerciese.2022]\Python>python x.py
  2. [['1', '1']]
  3. [['1', '1'], ['1', '2']]
  4. [['1', '1'], ['1', '2'], ['2', '1']]
  5. [['2', '1']]
  6. [['2', '1'], ['1', '2']]
  7. [['2', '1'], ['1', '2'], ['1', '1']]

  8. D:\[00.Exerciese.2022]\Python>
复制代码

        这个结果(第4、7行)有何问题?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

回帖奖励 +10 鱼币

看不懂
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

回帖奖励 +10 鱼币

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-26 07:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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