美文网首页
【Python生信编程笔记】for循环

【Python生信编程笔记】for循环

作者: 生信开荒牛 | 来源:发表于2023-06-06 14:23 被阅读0次

for控制结构允许重复执行代码,同时保留一个具有可迭代对象值的变量。

base=['T','C','G','A']
for x in base:
    print(x)
T
C
G
A

要知道你正在迭代的可迭代对象的位置,enumerate方法将返回可迭代对象的索引和值。

base=['T','C','G','A']
for n,x in enumerate(base):
    print(n,x)
0 T
1 C
2 G
3 A

迭代数字列表的方法是使用内置函数range(n)。

for x in range(4):
    print(x)
0
1
2
3

例:计算蛋白质的净重。

prot_seq=input('请输入氨基酸序列:')
prot_weight={"A":89, "V":117, "L":131, "I":131, "P":115,
               "F":165, "W":204, "M":149, "G":75, "S":105,
               "C":121, "T":119, "Y":181, "N":132, "Q":146,
               "D":133, "E":147, "K":146, "R":174, "H":155}
total_weight=0
for aa in prot_seq:
    total_weight=total_weight+prot_weight.get(aa.upper(),0)
total_weight=total_weight-18*(len(prot_seq)-1)  #减去结合后失去的水分子质量
print('蛋白质净重为:{0}'.format(total_weight))
请输入氨基酸序列:AFTGTGATCGTMATGHQ
蛋白质净重为:1610

但是上面无法判断是否输错了氨基酸序列,下面加上一个判断:

prot_seq=input('请输入氨基酸序列:')
prot_weight={"A":89, "V":117, "L":131, "I":131, "P":115,
               "F":165, "W":204, "M":149, "G":75, "S":105,
               "C":121, "T":119, "Y":181, "N":132, "Q":146,
               "D":133, "E":147, "K":146, "R":174, "H":155}

#判断输错的情况
err=0
prot_weight_keys=prot_weight.keys()   #取出键
keys_list=[]                          #将键放入一个列表里
for pro in prot_weight_keys:
    keys_list.append(pro)
print(keys_list)

for inp in prot_seq:                 #写循环判断是否有输错
    if inp in keys_list:
        pass
    else:
        err=err+1
print('输错了{0}个氨基酸序列。'.format(err))
    
total_weight=0                       #计算净重
for aa in prot_seq:
    total_weight=total_weight+prot_weight.get(aa.upper(),0)
total_weight=total_weight-18*(len(prot_seq)-err-1)      #减去错误的氨基酸序列个数及水分子质量
print('蛋白质净重为:{0}'.format(total_weight))
请输入氨基酸序列:AFTGTGATCGTBBMATGHQ
['A', 'V', 'L', 'I', 'P', 'F', 'W', 'M', 'G', 'S', 'C', 'T', 'Y', 'N', 'Q', 'D', 'E', 'K', 'R', 'H']
输错了2个氨基酸序列。
蛋白质净重为:1610

相关文章

网友评论

      本文标题:【Python生信编程笔记】for循环

      本文链接:https://www.haomeiwen.com/subject/vfsgedtx.html