バイオインフォ道場、くまぞうです。
while文を使うと、コードブロックを(特定の条件を満たす場合)ずっと実行することができます。
while文による繰り返し処理
while文の書き方
while文は、「あるコマンドの入力があるまで」・「ある状態なら」といったずっと繰り返す処理に用います。whileの後に「条件」を記述します。ブロックは、インデントを忘れないように注意します。尚、他のプログラミング言語にあるdo〜whileは使えません。
while文
while count<10: # 条件 countが10未満の場合 繰り返す処理
繰り返し処理について
whileの繰り返し処理では、「特定の条件を記述する場合」と「特定の条件を記述しない(while True:)場合」があります。後者の場合は、繰り返し処理の内部にbreakするための条件を記述します。
サンプル
whileを使った、Pythonのスクリプト例です。fastaファイルを読み込んでヘッダーをリストに格納します。ヘッダー表示をwhileで「ずっと」繰り返しますが、3個表示したら繰り返し処理を抜けて終了します。
while_test.py
#! /usr/local/bin/python # -*- coding: utf-8 -*- file_name = "my.fasta" all_header = [] f = open(file_name, "r") for line in f.readlines(): if line[0] == '>': all_header.append(line[1:].strip()) # listにセット f.close() count = 0 while True: # 特定の条件なし ずっと繰り返し print all_header[count] count += 1 if count >= 3: # 3個表示したらbreak(ループ終了) break
my.fasta
>cds1 ATGGTGGGTGGCAAGAAGAAAACCAAGATATGTGACAAAGTGTCACATGA TTTGGCAATCGGTTCCTGGATTGGACTTAGACCCCTACGCATCCTCAAAT GAAATGTTGCCAACGCTTCTTGAGAGCTGCCCAAAACTTGAATCTCTCAT >cds2 ATGGTTCAATATAATTTCAAGAGGATCACAGTTGTTCCCAATGGGAAGGA GCACGTCGTGGTGAAGCTGACAGAGTTATACCAACGCTTAGACCGAAACA AACCGACAGGCGTTGA >cds3 ATGACTCGTTTGTTGCCTTACAAAGGTGGAGATTTTTTGGGACCGGATTT CCGAGGTATACCTCTACCTTATCTTTCTGAATTAACTGTGAGCTTCATAG GCAAAAATTAAGATTGGTGAATGCTCAAAACGTAAAAAGGATAAGCAAGT >cds4 ATGGATTCAGAGTCAGAGTCAAAGCTCATATCATTCATTTCTCAATTAGT ATCATGCATGATACAAACAATCTCTCTGGTCAGCTCAATGGATTTGAAGT ATCTATTTCGGTAACTTCTTCTCATGTATGCAATGTGATTATATTCTCCA >cds5 ATGTCGGTTCCTCCTAGATTCCGGTCCGTAAATTCCGATGAGCGAGAGTT GCTGCAGAGGAAACCACCGGGGATGAAACTGGAGAAGCCGATGATGGAGA GAGAGAGAGTGATAAATAA
実行と結果
$ ls my.fasta while_test.py $ python while_test.py cds1 cds2 cds3