鱼C论坛

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

帮老哥忙看下代码

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

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

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

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

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

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

本帖被以下淘专辑推荐:

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

使用道具 举报

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

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

修改后的代码如下:
for i in range(n):
    if i == 0:
        temp = list(gra.keys())[ i]
        a.append(temp)
        print(1, a)
        a.append(gra[temp][0])
        print(2, a)
        m = keys.index(temp)  # 该节点在字典的位置
    t = a[-1]  # 上一结点
    print(3, t)
    m = keys.index(t)
    print(4, m)  # 该节点在字典的位置
    num_kids = listlen[m]  # 该节点的子节点个数
    temp = gra[t][0]
    print(5, temp)
    if num_kids > 1:
        gra[temp].pop(0)
    a.append(temp)

print(a)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

还是不行啊,报错是第三次循环,不是第一次if判断中的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

或者是完整的报错信息给我们
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

def getnum(dic):
    listlen = []
    for i,j in dic.items():
        m = len(j)
        listlen.append(m)
    return listlen

a = []
n = len(lis)
listlen = getnum(gra)
keys = list(gra.keys())


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

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

print(a)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-9-20 20:55:43 | 显示全部楼层
想将左侧的图转成右侧的图,目前是按顺序存到列表中
微信图片_20230920205417.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-24 08:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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