首先不说你答案的对错, 就你个代码里面就写错了, 字典的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