鱼C论坛

 找回密码
 立即注册
查看: 2230|回复: 5

帮老哥忙看下代码

[复制链接]
发表于 2023-9-20 17:45:49 | 显示全部楼层 |阅读模式

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

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

x
  1. for i in range(n):
  2.     if i == 0:
  3.         temp = list(gra.keys())[i]
  4.         a.append(temp)
  5.         print(1,a)
  6.         a.append(gra[temp][i])
  7.         print(2,a)
  8.         m = keys.index(temp)  # 该节点在字典的位置
  9.     t = a[-1]  #上一结点
  10.     print(3,t)
  11.     m = keys.index(t)
  12.     print(4,m)#该节点在字典的位置
  13.     num_kids = listlen[m]   #该节点的子节点个数

  14.     temp = gra[t][0]
  15.     print(5,temp)
  16.     if num_kids > 1:
  17.         gra[temp].pop(0)
  18.     a.append(temp)

  19. print(a)
复制代码

这段代码哪里有问题,运行第三次循环会显示下标超出

本帖被以下淘专辑推荐:

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

使用道具 举报

发表于 2023-9-20 17:46:01 | 显示全部楼层
这段代码中出现了下标超出的问题。具体来说,当  temp  是字典  gra  中的最后一个键时, gra[temp][ i]  会超出索引范围。

为了解决这个问题,可以将  gra[temp][ i]  改为  gra[temp][0] ,因为  temp  是  gra  字典中的一个键,它对应的值是一个列表,而我们只需要取出这个列表中的第一个元素即可。

修改后的代码如下:

  1. for i in range(n):
  2.     if i == 0:
  3.         temp = list(gra.keys())[ i]
  4.         a.append(temp)
  5.         print(1, a)
  6.         a.append(gra[temp][0])
  7.         print(2, a)
  8.         m = keys.index(temp)  # 该节点在字典的位置
  9.     t = a[-1]  # 上一结点
  10.     print(3, t)
  11.     m = keys.index(t)
  12.     print(4, m)  # 该节点在字典的位置
  13.     num_kids = listlen[m]  # 该节点的子节点个数
  14.     temp = gra[t][0]
  15.     print(5, temp)
  16.     if num_kids > 1:
  17.         gra[temp].pop(0)
  18.     a.append(temp)

  19. print(a)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-9-20 17:50:29 | 显示全部楼层
isdkz 发表于 2023-9-20 17:46
这段代码中出现了下标超出的问题。具体来说,当  temp  是字典  gra  中的最后一个键时, gra[temp][ i]   ...

还是不行啊,报错是第三次循环,不是第一次if判断中的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-9-20 19:28:11 | 显示全部楼层
能不能具体一点,或者把代码给全,你这样没头没尾的我们人类很难找到问题(毕竟我不是ai,做不到盲猜)

或者是完整的报错信息给我们
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-9-20 20:53:30 | 显示全部楼层
JasonChencCjj 发表于 2023-9-20 19:28
能不能具体一点,或者把代码给全,你这样没头没尾的我们人类很难找到问题(毕竟我不是ai,做不到盲猜)

...
  1. lis = ['ACT', 'CTG', 'TGC', 'GCC', 'CCT', 'CTG', 'TGA', 'GAC', 'ACT', 'CTA']
  2. gra = {'ACT': ['CTG', 'CTA'], 'CTG': ['TGC', 'TGA'], 'TGC': ['GCC'], 'GCC': ['CCT'], 'CCT': ['CTG'], 'TGA': ['GAC'], 'GAC': ['ACT']}

  3. def getnum(dic):
  4.     listlen = []
  5.     for i,j in dic.items():
  6.         m = len(j)
  7.         listlen.append(m)
  8.     return listlen

  9. a = []
  10. n = len(lis)
  11. listlen = getnum(gra)
  12. keys = list(gra.keys())


  13. for i in range(n):
  14.     if i == 0:
  15.         temp = list(gra.keys())[0]
  16.         a.append(temp)
  17.         print(1,a)
  18.         a.append(gra[temp][0])
  19.         print(2,a)
  20.         m = keys.index(temp)  # 该节点在字典的位置
  21.     t = a[-1]  #上一结点
  22.     print(3,t)
  23.     m = keys.index(t)
  24.     print(4,m)#该节点在字典的位置
  25.     num_kids = listlen[m]   #该节点的子节点个数

  26.     temp = gra[t][0]
  27.     print(5,temp)
  28.     if num_kids > 1:
  29.         gra[temp].pop(0)
  30.     a.append(temp)

  31. print(a)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-9-20 20:55:43 | 显示全部楼层
想将左侧的图转成右侧的图,目前是按顺序存到列表中
微信图片_20230920205417.jpg
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-22 19:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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