《python语言程序设计》2018版–第8章12题(生物信息:找出基因)输入基因组,识别基因组和非基因组,(之字符串的识别)

识别有效基因组和非基因组

一、识别1.1封装分割函数silcStr(strN):1.2、识别开头ATG的字符串并去掉ATG:1.3、突然发现的问题1.4、流程分析
二、分割字符串后的保存问题三、知识点的运用3.1 运用in 和 not in运算符3.2 运用比较字符串3.3 其实运算符对,但是位置错了。分析一下in 前后都应该放什么

四、知识点

《python语言程序设计》2018版--第8章12题(生物信息:找出基因)输入基因组,识别基因组和非基因组,(之字符串的识别)

读者类型 核心内容
《Python 语言程序设计》2018版学习者 字符串的识别、判断
一直困扰作者的问题 如何提取结果,并将结果赋值或者使用,不论是字符串还是数字
带入第8章内容学习 我们用in和not in运算符还是用比较字符串

一、识别

1.1封装分割函数silcStr(strN):


textInput = "TTATGTTTTAAGGATGGGGCGTTAGTT" #字符串

def silcStr(strN):
    conNum = 0 #设计计数器
    for i in range(len(strN)+1):
        conNum += 1 # 累计增加1个数
        if i <25:
            print(strN[i:i+3])  #打印分割好的字符串
silcStr(textInput)

1.2、识别开头ATG的字符串并去掉ATG:

我们现在识别atg
发现atg进行换行或者从ATG出现后开始进行基因识别
当发现TAG、TAA、TGA后将这三种字符串前截出

1.3、突然发现的问题

我突然发现了一个问题,我是需要截取ATG之后的字符串。那么我现在有的函数是遍历这个字符,按3个一组进行了分组。那么如果让这个分组拥有截取的功能,或者说辅助截取功能呢??如何将遍历循环变成发现字符串进行截取呢??


textInput = "TTATGTTTTAAGGATGGGGCGTTAGTT"  # 字符串

# 输入函数
def inText(s1):
    print("Enter a genome string: ")  # 打印标题伪装成是输入的
    input(s1)  # 直接转到input打印出字符串

# 利用切片函数分割字符串
def silcStr(strN):
    conNum = 0  # 设计计数器
    for i in range(len(strN) + 1):
        conNum += 1  # 累计增加1个数
        if i < 25:
            print(strN[i : i + 3])  # 打印分割好的字符串

# 建立一个函数来寻找ATG是否存在字符串内
def identiyTheGenome(idGenome):
    if idGenome == "ATG": #布尔值
        print('Find ATG')
        
# 执行段
def main():

    silcNum = silcStr(textInput)
    identiyTheGenome(silcNum)

main()

结果
《python语言程序设计》2018版--第8章12题(生物信息:找出基因)输入基因组,识别基因组和非基因组,(之字符串的识别)

不成功并不是我设想的差哪里了呢?

1.4、流程分析

代码不理想==代码不完整。
我觉得我应该补全no的状态


textInput = "TTATGTTTTAAGGATGGGGCGTTAGTT"  # 字符串

# 输入函数
def inText(s1):
    print("Enter a genome string: ")  # 打印标题伪装成是输入的
    input(s1)  # 直接转到input打印出字符串

# 利用切片函数分割字符串
def silcStr(strN):
    conNum = 0  # 设计计数器
    for i in range(len(strN) + 1):
        conNum += 1  # 累计增加1个数
        if i < 25:
            print(strN[i : i + 3])  # 打印分割好的字符串

# 建立一个函数来寻找ATG是否存在字符串内
def identiyTheGenome(idGenome):
    if idGenome == "ATG": #布尔值
        print('ATG存在该字符串内,该字符串有一定概率存在基因组')
    else:
        print('ATG不在本字符串内')

# 执行段
def main():

    silcNum = silcStr(textInput)
    identiyTheGenome(silcNum)

main()

《python语言程序设计》2018版--第8章12题(生物信息:找出基因)输入基因组,识别基因组和非基因组,(之字符串的识别)

二、分割字符串后的保存问题

*这是我现在最难也是最想办到的
1.分析一下
我是先把字符串变量textInput发给分解字符串的函数silcStr。然后再把分解后的字符串给识别ATG是否存在的函数identiyTheGenome,那么现在有个问题。我是不是可以直接将字符串变量textInput,发给函数identiyTheGenome直接判断呢???
2.分析错误
我感觉identiyTheGenome函数里判断条件写错了


def identiyTheGenome(idGenome):
   if idGenome == "ATG": #布尔值
       print('ATG存在该字符串内,该字符串有一定概率存在基因组')
   else:
       print('ATG不在本字符串内')

这个
if idGenome == "ATG"
不应该是条件,根据第8章所讲解,我们应该用
in
或者
not in
,而我的方法是把他们看出了一个单独的字符串。

三、知识点的运用

《python语言程序设计》(2018版)第8章参见第201页和第202页中,8.2.6 in和 not in 以及 8.2.7 比较字符串两个章节中都有对比的办法。我们分别尝试一下将函数identiyTheGenome内的条件进行修改

3.1 运用in 和 not in运算符


def identiyTheGenome(idGenome):
    if idGenome in "ATG" is True: #布尔值
        print('ATG存在该字符串内,该字符串有一定概率存在基因组')
    else:
        print('ATG不在本字符串内')


288:SyntaxWarning:"is" with 'str' literal. Did you mean "=="?

语法警告:将 “is” 与字符串字面量一起使用。您是不是想说 “==”

3.2 运用比较字符串


 def identiyTheGenome(idGenome):
    if idGenome == "ATG": #布尔值
        print('ATG存在该字符串内,该字符串有一定概率存在基因组')
    else:
        print('ATG不在本字符串内')

《python语言程序设计》2018版--第8章12题(生物信息:找出基因)输入基因组,识别基因组和非基因组,(之字符串的识别)

3.3 其实运算符对,但是位置错了。


if idGenome in "ATG" is True: #布尔值
有个错误,如果这个字符串在ATG里则打印,但是我们要的是如果ATG在字符串里,是不是表述的位置就换了

分析一下in 前后都应该放什么

in和not in是测试一个字符串(本题是“ATG”)是否在另一个字符串(本题是idGenome)中。因防反了所以出现了错误提示,经过调整后恢复正常


textInput = "TTATGTTTTAAGGATGGGGCGTTAGTT"  # 字符串

def identiyTheGenome(idGenome):
    if "ATG" in idGenome: #将ATG放在前面
        print('ATG存在该字符串内,该字符串有一定概率存在基因组')
    else:
        print('ATG不在本字符串内')
def main():
    identiyTheGenome(textInput)
main()

《python语言程序设计》2018版--第8章12题(生物信息:找出基因)输入基因组,识别基因组和非基因组,(之字符串的识别)

四、知识点

教材第 8 章核心知识点(P201-202):

in
运算符的语法:子字符串
in
父字符串(判断子字符串是否包含在父字符串中);
错误写法:
idGenome in "ATG"
(意为 “判断整个输入字符串是否是 ATG 的子串”,显然不成立);
正确写法:
"ATG" in idGenome
(意为 “判断 ATG 是否是输入字符串的子串”,符合需求);
无需加
is True:if "ATG" in idGenome
本身返回布尔值,直接作为判断条件即可,加
is True
多余且易报错。

© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
none
暂无评论...