バイオインフォ道場、くまぞうです。
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
![バイオインフォ 道場 [bioinfo-Dojo]](https://bioinfo-dojo.net/wp-content/uploads/2016/03/some_object_luca-bravo-alS7ewQ41M8-unsplash.jpg)

