免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
论坛 程序设计 Perl 除法题
12345下一页
最近访问板块 发新帖
查看: 19657 | 回复: 44
打印 上一主题 下一主题

除法题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-09-25 12:41 |只看该作者 |倒序浏览
大家好:
     我有一个文件,里面标题(NTSEQ)和字母组成,字母有几行为一段的,也有十几行为一段的,我想做的工作就是把 为一段的字母能被3整除,能被整除的就print出来,不能被3整除的就抛弃。
    我是这样做的,但还是做错了
    #!/usr/bin/perl-w
use strict;
open (IN,'d:\perl\genes\') || die "$!";
open (OUT,'>d:\perl\genes_fasta\.fasta') || die "$!";
my ($title,$seqs);
while (<IN>) {
        if (/^NTSEQ/) {
           $title = $_;
           }
        else {
           $seqs .= $_;
           if ($seqs%3==0) {   #肯定是这一步错了,好像它什么也不做。
             print OUT;
             }
           }
    }
          该怎么做?谢谢大家

论坛徽章:
0
2 [报告]
发表于 2009-09-25 13:23 |只看该作者
lz 的问题,问的不清不楚的……
“我想做的工作就是把 为一段的字母能被3整除”,字母怎么被3整除?

论坛徽章:
0
3 [报告]
发表于 2009-09-25 13:50 |只看该作者
把 你的文件发出一段来大家看看呗?

论坛徽章:
0
4 [报告]
发表于 2009-09-25 14:12 |只看该作者
不好意思。没说清楚。文件里面是这些东西:
NTSEQ       267
            atggaaaatagttacaagatgggagttaaaaatattgtattgttatttgccacattttta
            ttaagtgttttagcagaagatcaaaaggatggagaaattttagcagtaactccaagagat
            ttaaagttgactccttttaatttatcagctttaattttagtttctttttttactatgttg
            attatttttattgttggattaactattgatactgatactccaactagatttgaagaaaag
            atgccacctattatgaaggaatattaa
NTSEQ       2253
            atggtggattatgattctagaatttgtcaaagacctcattctgaaagagctttagaacaa
            tatgaaaagtacccagatgaatatatagaaagtgcaacagtaagaccagaaaagtatcat
            gttttagagcaagaagaatatgatgattgtattatcacaaaatttcaccaaattattaat
            agcgactatttagacgtggaaagggagttgataaatggaaagttaatgaatagtgagaat
            tatgaaagcagagtatttaataaatatggattatctgctgaccaaaaaggaggggatctg
            agagaaaaagattataatgaaacaggagaagagaattctgatgatgagttagacgatggt
            cttgaagaatgtgaggacgaaacagaatctgaagaattggattctgaagacgaaatatat
            gaagataatagtcgtgaattattgatgttattaaagagcagaggaaaatcgagacgtatt
            caaaagagagaaatactaagtttaccaagctccgaatttttagtaataagggaatttccg
            gtatcttttggaattccagtaatcacattacaaaaattgaatgtacgtccaattctattt
            ctttggatattctttttaatttcaatggtttatactttttcaatatttctagatgagtat
            attgttaatgatattattccattataccctttgggaagtatttttgagtcaaagaatgaa
            caaactgaagtattagttccttcattactaagatcaaagaatccaacagtgatatcaaga
            actggtaacagtgatatgggattaataggtaaaagtaacttattaaagaagctttttcct
            ttactcaatattaaacaagactctgatatttttgaaaattcaataaatagaccactaaat
            gtaactttggatgttaagcattgccatattcaattccttaattcaactagcgatctgagt
            tatattaaagttagatcttggagattattttccaaatcacatatgtactatggtagttct
            ggaaggtacagtataccatctaggaagaaagataagttcgaatatatatgctctcacgga
            actttcttctggatattgaaaagatatattcttccttgggatacttatagtgattataat
            ataaagaatatttcttggaaggattataaagaatactgtgattcaagtcctagaccttgg
            aattttaataatgattcaaatttgtcaataaaattacaccaatctaatactggtgattat
            tttcaatgctcaataaactttttcttggcaaataacttccagtttgacgaactttctgtc
            aagtttgtgccatcttcaacatatatgaaagtttcatcatcgattccgatcaaggctaaa
            tcaatatttcacttggaagcattacatgggacttttgatttaaaagatgtatattcacca
            aatatttcactcacaatttcagacggttgggcttctattgatctcccaaatcttcaagat
            tcaggtcgtaggaatgtgtttatagaaagtagaggagctccaatatatattaatagtaga
            acaccaattgttgttactatgccagtcagaattgcagaattagcagtttttagagctgag
            catgttaaagtcaagcttgaaagcaaatcaaatgatttagatggccatgggtattataaa
            actgcatcagttgttgcaactctgaatccagatccgtcattcttggataataaactttca
            ggttcttcaattaatacaagaattaacattcaaggaagtattccaccagtatatgtaaat
            gcttattcaaactttgaatcaagttcagattttaataacatatcggatgaacttattact
            tgggcaggaagacaccaatggaaagatccacatttacttgcattttcaaagtcaagattt
            aatgggttttcaaaatggcttcaagaggatcttgcaagtccatgggtactttatattaat
            gttttaggaaatagagaatatcctaggggaacttggaaagcagtatcttcaagagctttt
            attcgagatccatatgctttggttttattatcaggaggacttttaatgccaaggatatac
            actctatttattcatattcttggattaaggtgtatggttccagtaagtcattcagatttg
            gaagatctagatgtaatcaatgttgatgataatccttctaatacaggtaatattaatgga
            ggaattagtgggaatttatgcaaatataactaa
NTSEQ       836
            atgttttcccacgagaagagttcaatgttaactacaattttaatagttgttgcaacttca
            gttggagttggatgtttttatattccagcagcatttaagaattgtggtgcaatggcagga
            ttgataatttcattaatagttggtacattttcagtattatcaatgaagactttggcaaat
            gcaagtgtgaaatcaggtgcagaatcatatggatcattattatttatggcatatagtgaa
            gagataacaacaagtttaagaattcaaaaatcagaaaatccatttttttctataccaaga
            ttatttgattttctggtatttttagattgtttattttgtataccattatttttaattgtt
            ttatcagacttaataccagcgctaatttcatattttgggtttgtgaatgactatttattc
            atgtttagttcaaaaactgcaataatatcattattttcactattattctttccaatatgt
            attccttcaggatgttttaattgggttggacttacatttttatcagtcatttccattttc
            ctatgttttgcatcagtaattagccaatcaatttcatcaggttttggtattaataatatt
            attaaagagatttcaaatatatctttcaacagtaactcaatttcaagttacttttcatta
            ttgaatatttgtatttttgcattctttgcacaattcaatataattcaagcagcatctaat
            cttaataatccaagtaaaagtagattacgtatattaacagctgtaactggtattataata
            gtatttacatattcaataatgtcattgatatcattttcatttcttggagatagaac
NTSEQ       486
            atgattgaatatttagagcataatatttcaggaaaagactttttacagcccgagtttcaa
            caagtccttgtggaatctgggaactttccaatgctcccatatttttcagactcaaacaat
            gaagtcgagttaacaggatcattcacaatattaaggtacctcgcagataagtgtaagttg
            atgggtaaaagtcctgaggaaagaaataagatagaaaattggctggaatatcttcaatct
            ttactacattcagtatgggatttcgaaaatatgtcagataattatacaggaattcaacag
            gcaaagaaaaagagccagtttctattagaaactcttcatccaatgcttaaatgtatagat
            gaaaagattgaacaaggagtctgggctctagaatcctattcagtagtggacattgtccta
            tattcagcaataagcgtgataattagatcttggggaagtgatctattgaaaccttatatt
            aggtaa
NTSEQ       1584
            atgataagtagtcttgaaaatgggcctactgaggaggatcttgaattattattaggtggg
            tataataaggaagaggaaatattatttgttgatttgagggaagaatcagatgaattagat
            aaagttgattaccaggaaaattccaattttttgaatccagttagctatataaaaaggatt
            ggagatgaacaaaatcaagatgcacctgataaattgaaaaagcgtagagttaagtcaaag
            aaaacaagaccaaggaggaaaaaaagtaaattgaaagatgattctgataaactttcaata
            gactctgatgaatttgttgtaccagacgatgaggtgattccacctgactgggagtataac
            tttgaaaagccaatagtttgtcaaaatgttacattttataataaagttgacaatatttta
            actgagaagcttgaaaatgatgttgatcattttaaaattaatgaagaggagcttgaatgt
            aatgatagtagtttggacgaagattttttaaatagttgcgaaattaatgaagacggattt
            aaaggtagaaaacgtaaaaatggaatgattgggattgatattgataaagaatatattgat
            gataaagacaatactgcattaattgttgaaagccatttactgaaagatgacatagatgat
            gaagaccaggtaatttttgtagataggaatttgaactcttttattaagcaggttgataaa
            aataagacaatagatgaagttaggacatatgattctgaaccaattattgttgaaagcgat
            gaattcattataaatacagagattttcaattatgggatttttaatatatactttaaaatg
            atggatattattgaagattttgaaaattataacaagtttcaatgtttttcagaaggttca
            tttaaacttgaagaaaaagatatttccactcttttgatagtattcaaatcaattgatatt
            gaattcagcagtttcagcaataatagtaacattaatagtagctgtagcagtggcaatatt
            agtaataataatattggaagttttgacttgattcaaagttaccttgacttattttacaat
            aatatcttaaattcattaaaagagactcaaaattttaatttaacatttttaaaggaatta
            cactttgaaatgattggttttattgagtcaaagtttgatgagattgttcaattgaaccca
            tctgaatggaattacaaggtattgtttttgtttttaagaatacttggactaactttattt
            gttgagcacttgctaatacatacaataaagattgaaaaaacttcagagccaaagatatca
            aatttgaatgaagaattttcagttttttttgtcaatgaaaatattttgaacaaaaataat
            gtatccaagattcttagacaaatcttgaaaaaaatgttggatcatttattaaatttgacg
            ttaaaagaaaacttgaatggtaatatgagtagtattcattgtattttgattttgacttta
            ttcattaattttaaagtaagtggggacttgattttcactcatatttcagaaaagtatatt
            aaagatttaaatataacttttgat
NTSEQ       777
            atgatattactttatgctacacaacatggagaaggaaacgttaaagttaagatgagaatg
            ggaaacaagatttgggagtttactctgctttgtaacttgaatgatggatctttttatgta
            gggaatagtgagagttttgatcataccaattgggattggataactgaattctcagtgtct
            atgaaaatgagcttaggactagaatacttacaagagaagtacttttctatggaactttat
            gcaaaatcatgtcttaagaagattcaaagttatttggtactttctaaattttggaatagc
            catattttcttaaactttgaaacaaatatgaaaatggatacttctgatttgacaaaagga
            gatatcaatttatcatttttcgatatttttgaagataattttgttcggtattcaagtaat
            aaaggatctaaatataagattgattcagttttcggttttttgagagaatttcatgtaaaa
            aaagaaaaccaagtagatgatattgaatatcaaaatattgataaagaaaaccaatcaaac
            ttaaatatatccaatacatctcaaacaacttctctaaagacaggctatctttacgtttac
            cgtttttcgaatggaatgccaattatttgtaaagatacagaatattgtgatattgtaaca
            tcagttaaaagcttcattagaaagaaaggaaatatctttggaatgaaattggcaaaaaaa
            gatgaaatagtagaaaataatcatgagaaactttcagtgttttctggggtaagttag
NTSEQ       358
            atggacttccatcaaatatctgagaagtttttaaacttattgaaaagatattataaagaa
            atttatgacgatttttcagagtcaggtttggatgagataattaaattgagggatgaaatt
            ttagattttggaaatgaaatagatttttctaatataatttcaaagaatgaagaagttgaa
            gatttgaatacaaatgacataaaatatttattatattcatatataagagcagaaacaaca
            aggtatgtaaaagatcataatgtaccaaaagaacgtgtagaaagaagaaatgatttaaat
            gaaataattgaactatatttacaattttttaataatacccttgaaattagaaatacaa
NTSEQ       339
            atggattttaatctaaacttgaatatttacttccgtaattttttacataattttgttact
            gaaagtcaagtaaacctaaatgatgcatacaaaccaacaaataatgaatacattttgatt
            attgacatctttccctatgaactgtgcatcaatgaattatttatcaataaaaaattgaga
            atcgtgaattgcaagcactccattaactctcctaaaagaatcgcgattaacgaatttaac
            tcaataattaacttatcaaaacatcttctaaagaatacaacttatattattgtaaaaact
            ttattaaataaaagtctaaatcctctaatatatttttag
NTSEQ       276
            atgaatagactaataacagagaacagattattacttaatcaacttaaagaaattggtaag
            gaattgttattaaagagtgaacaaattcaagaaaaaaacgcaatgatagacaaatatcag
            aaagaaataaggaaacttgagttagagcaaactgtgaataaaatccaagaaaatatggac
            aaagatcaaaacttggagcttgtatccaaactcgaaaatcaagtttttgcacttaatcag
            aaattaaatattattagggatacagttaacaattag
NTSEQ       537
            atgaataagacaatttttaaacttttatttttttttgcaatttatataatgattggcatt
            tcaaacgcctctgatgtgacatctagtggtagcttgaagacatcaaacaaccttgaaaaa
            gttaaactcgtaaatttggatttgtgtaactcgaaagaagcaactatcaatgttcaagac
            ataagtagctctgattccataatatatttcattactgttaagcttggaacggaaattatt
            gtgaatataaagggcaatccaacgacagggtatagccaagagatgattattaaaccggat
            gattcaattgtaaaagttatcgatgttgagccaagttacgttccagatccacacccagaa
            ggcatggttggatatggtggcaggtatatcttcaagttcttggcagttggatccggttca
            acagtttcgactattgaatatgcaagatactttgaaaggccaccaaaatgtatttttaag
            acagaaattcaattcaaagttatcgatctgccctgcgaagaaataataaaggaatag
NTSEQ       3189
            atgaatactgataaaagagatgaaattgatacaaatctctacagtcgtcagatcggtacg
            ctgggccttgaggcaatgggaaagctgataaagttacgcgtattgattgtggggcttcgt
            gggcttggcgtcgaaatagcgaaaaatattatattggctgggccgaaatcaataaccctt
            gtggatgatgagatatgtagtttttctgatatgggtgcaaacttttatattacagaaaat
            gacgtaaaaaaaggagccaaacgctcagatgcatgcttaaacaaacttgcatctttaaac
            gaatatgttcaagtcaccgtatttcatggagaaattacaagccaattgatcttcaaccac
            gacgtaattgtttgtgcggatgtaccattatcactacagataaaatacaacgaattatgt
            agagaccatactccaaatattgggtttatttccgccaactcccttggtctttgtggctcc
            gtttttgttgattttggggattcttttaatgtattcgatggaaatggtgaagaaccaaag
            agtgccataattgcaaagatttcaaggggtaaagaaacaacatctataacatgtctagcc
            gagaaacttctcccatttcaagaaggtgactatgtaatgtttagagaagtacagggaatg
            acagagttgaatggtacaggtcctcataagatcatctcaacaggaaaacaccaatttaca
            atccaattagattcgagtatgttcagagaatatgaaagagagggtttggttactcaggtt
            aaagttcctataaattacagcttccggagtttaagagatgcactcgaatatcctatttgt
            gatgaacagggaattttaattgttccagatctaaataaatttggcagatccgagcagctt
            ttcttctcaataaattctgttcttaaatactctgatattaaaggttctcgtccagaacac
            accgacctgcaagcaattaatgaatgccattcgcttgcagtggaaatgaacgagaactca
            aagaaaaagcaagactcaaacgacgaaaaaaaagaatttgttatttcagttagtagtatt
            gatagggatatactcgagaaagtatgcaaatattctagatgttgtatatctcctatggct
            gcttttctaggtggaattgctgcacaagaaattgtgaagtttgttggcaagtatacacca
            ttgcgccaattcttcttctttgatgcgttcgaacaattagatctaatttcaaatgagact
            catacaaaagaagagtttatgccattagggagtaggtacgatgatcagataatcatattc
            ggtagaagcttccaaaatagactatctgagaaaaatatttttattgtaggagcaggagct
            ttaggctgcgaatttttaaaaagcatggcgctactaggagttggatgtgggccaaatgga
            actgtaacaattacggatatggataatatcgaggtttcaaacctgaatcggcaattccta
            tttaggcaagaacatgtgggttcaccaaagagtgcaattgctgctcaagttatcagaaca
            ataaacaaagatataaatattatctctcttcaaacccgagttggcacagatactgaagat
            gtttttgatgatatattttggaataagaccagttttgtgattaatgctctagataatgtt
            ccttcaaggatgtacatcaatgatcgatgtttgtggtacgaaaaaccattactagaaagc
            ggtacattgggaaccaaagctaatagtgaaacatatctcccgcataaaacccagtcttat
            tctgataatcgtgatcctgcggaagaaagcatccctttgtgcactttaaagcacttcccg
            cacgcaatagagcacacaattgaatgggctcgtgacgcatttcagggaatttttacatca
            gacccgcaagaggctattacttttcttaatagcccatgcgaatatatccaaaatctgaaa
            caaagaggaaatcctaatgttatccttgagaaatctcaaaaaatatttgagctaattaat
            tggatttcagagaaagaccctacgcatgaagattgtattcgaatggcaataaatttgttt
            catgactacttctattgtcaaattaaacaacttttgactaacttcccccctgaccatatt
            aatagtgatgggcttcctttttggtcaggaccgaaaaggtgtccaacgcccataaagctg
            aatatacaagataaattgcattttgactttatcctttcagcttcaaacctatattcaaat
            atggttagattaccagaaatatccgactcttcaattatattcaaggtctcaaatgaaaca
            atccttccagaattcaatgctaagactacaataatcaagattgacgacgatggcaatact
            tcaagtaatgaaaatagcagctcaagttcaataatattggatacaagtattgctgaagag
            tacacaaataaattactttcatttacagaaaatagaattaaaaggtgcttaaactttata
            cagcctattgaatttgagaaagatgatgactcaaactttcatatagattttatgaattct
            tgtgccaacttaagagctaggaactactctataaaagaatgtgacagacataaatgtaaa
            atgatcgcggggcgtataatacctgccatagcaacaaccacagcaatgataactgggctc
            gtttcgttcgaagcgctgaaggtatcttcgtctggcgaatacaaaatagagctcttcaaa
            aattcattcatcaatctttctctcccgttgtttgtaattacggaaccccttccagcccca
            aagacaatttcaaaggaatttgatccaatagttgaaggtccattaagggcaaggcctgaa
            ggatttacagcctgggataagcttgttatcgaacaaaaagatggtactgttcaaaacatt
            atcgactatctgacaaataaaatgaatcttgagacacaaatcatctcgtttggcaacata
            tgtctttacaacgcgtatatcccaaatcaccaagaaagaaagtgcattcctattgcttta
            ttaatagaacaaattaccaagaagaagttgcacgttacaaagaatagtattgcgttagaa
            gttagttgttgtgatatcgatgatggggttgacacaattattccgtcaatcaagtttatt
            ttcaaatag
这只是文件里的一小部分,我只是要每段字母加起来能被3整除,就print,不能被整除的就抛弃。

论坛徽章:
0
5 [报告]
发表于 2009-09-25 14:36 |只看该作者
while (<IN>) {
        if (/^NTSEQ/) {
           if (length($seqs)%3==0) {   #移到上面来,还是不懂你的字母被3除,是指 字符个数吧? 加上 length , 这里是上一次的记录
             print OUT;
             }
           }
           $title = $_;
        else {
           $seqs .= $_;
           }
    }

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
6 [报告]
发表于 2009-09-25 14:52 |只看该作者
先把中文学好。

论坛徽章:
0
7 [报告]
发表于 2009-09-25 15:05 |只看该作者
就是字母个数除以3的。不过把if (length($seqs)%3==0) {
             print OUT;
             }   放在上面还是不对呀,这样只是把标题给输出来了。

论坛徽章:
0
8 [报告]
发表于 2009-09-25 15:28 |只看该作者
……
当然不会打印了,我又没有加 print,你看了代码没……

论坛徽章:
0
9 [报告]
发表于 2009-09-25 15:36 |只看该作者
黑哥很幽默

论坛徽章:
0
10 [报告]
发表于 2009-09-25 15:52 |只看该作者
我print 了。不过还是原样输出。根本没什么变化。太打击了,呵呵
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP