图中远行程序是在计算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
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥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中频率调制法代码的解读