lch人生苦短我学python 2022-05-29 04:25 采纳率: 100%
浏览 41
已结题

计算基因序列的复杂度

img


图中远行程序是在计算pi的值时报错了,不知道怎么改。是不是那个对字典d的赋值出现了错误,我想要的是一个字符出现的次数作为d的值,但是num好像是总的数,所以一个字符出现的次数要怎么统计呢?

  • 写回答

1条回答 默认 最新

  • 「已注销」 2022-05-30 03:11
    关注

    首先不说你答案的对错, 就你个代码里面就写错了, 字典的key是c ,而不是'c' , 前者是变量, 后者是常量字符;
    其次, 键值是c出现的次数, 而不是num, 即使是,你也写错了,要写也要写成num, 而不是'num' ,还是那句话,前者是变量, 后者是常量字符;

    看你右边图片,题目描述, 我帮你修改了一下代码如下;

    import math
    
    s = "ATae34ATGGATGGTGTTT2CT8CTG"
    # 控制台执行代码请取消下行注释, 同时注释掉上一行
    # s=input("请输入碱基链字符串:")
    
    d = {}
    
    num = 0
    
    for c in s:
        # 判断字母是否中AGTC中
        if c in "ATGC":
            # 如是+1
            num += 1
            # 统计c出现的次数存储到字典中key为c的键值中
            d[c] = s.count(c)
    
    print(f"四种碱基出现频率为:{d}")
    entropy = 0
    
    for i in d.values():
    
        pi = int(i) / num
        entropy += pi * math.log2(pi)
    
    entropy = -entropy
    
    print("序列复杂度为: {:.2f}".format(entropy))
    
    四种碱基出现频率为:{'A': 3, 'T': 9, 'G': 6, 'C': 2}
    序列复杂度为: 1.78
    
    

    展开全部

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
编辑
预览

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 5月31日
  • 已采纳回答 5月31日
  • 创建了问题 5月29日

悬赏问题

  • ¥15 esium自定义材质拉伸问题
  • ¥15 cmake+mingw使用<mysqlx/xdevapi.h>报错
  • ¥15 eNSP中防火墙的使用
  • ¥15 不能对数据库增删改但是可以查询
  • ¥15 在触控设备上启动TabTip.exe打不开键盘界面,怎么用代码启动进程打开界面
  • ¥15 关于#mlnet#的问题:mlnet相关请求(语言-c#)
  • ¥15 lvgl7.11怎么做出文字被选中的效果
  • ¥50 如何快速查看手机目标app的主要服务器ip
  • ¥15 (标签-stm32|关键词-m3)
  • ¥15 matlab中频率调制法代码的解读
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部