开发者社区 问答 正文

python中的判断语句出错,请求支援,谢谢!? 400 报错

python中的判断语句出错,请求支援,谢谢!? 400 报错 我的程序:try:
    seqnum=open(r"c:/3/seqnum.txt",'r')
    matchaa=open(r"c:/3/matchaa.fa",'r')
    select=open(r"c:/3/miRNAchr.txt",'a')
    while True:
        a=seqnum.readline()
        t=True
        while t:
            b=matchaa.readline()
            l=len(a)
           
            print a
            print b[0:l]
            #print num
            if a == b[0:l]:
                print b
            if len(b) == 0:
                t=False
            else:
                t=True
            print b+"select"
       
except:

    print 'something wrong! please check you program!'

运行的结果是:

我想要的结果是当第一样与第二行的字符一样时打印if循环内的b,但是明明一样,不知道为什么却执行if外的print.有谁知道可否帮忙啊!非常感谢!

展开
收起
爱吃鱼的程序员 2020-06-03 11:38:15 518 分享 版权
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    看你打印的结果,貌似a最后有个换行符(\n)???

    你的python代码写的真够乱的

    ######

    原因在于,你打开的seqnum.txt文件,里面的t0000001是独占一行的,readline()之后实际上是 't0000001\n',len(a)的长度就是9。而matchaa.fa文件里面实际上是't0000001\tchr2……',那么b[0:l] 的值就是't0000001\t',那么a == b[0:l]自然不成立了。

    解决办法把a=seqnum.readline()改为a = seqnum.readline().rstrip('\n'),那么len(a)就是8,b[0:l]也就是正确的't0000001'了。

    2020-06-03 11:38:26
    赞同 展开评论