05_自訂函數

  • 除內建函數以外,也可以將常用的功能包成一個函數

計算矩形面積

def rect(width, height):
	'''
	This function will return the area of an rectangel
	'''
	area = width * height
	return area
area = rect(2, 3)
print(area) # 6

從指定區間中取得指定數量隨機數

from random import choice
# 參數可以做預設值
def get_rand(start=1, end=100, amount=4):
	'''
	By default, this function will retrun four unique random numbers in a range from 1 to 100.
	'''
	nums = [n for n in range(start, end +1)]
	result = []
	for n in range(amount):
		rand = choice(nums)
		result.append(rand)
		nums.remove(rand)
	return result
# 不加入參數arguments的情況下,函數也可以執行
get_rand() # [38, 95, 51, 72] 0到100中取4個不重複數字

自訂一個parse FASTA format的函數

'''
The header/identifier of a sequence in a FASTA file usually starts with a ">". Subsequent lines are the actual sequence which may be a dna, rna, or protein sequence.
'''
def fasta_parse(raw):
	raw = raw.split()
	name_list, seq_list = [], []
	seq = ''
	for line in raw:
		if line.startswith('>'):
			# 第一個迴圈seq為空字串,不進行append
			if seq:
				seq_list.append(seq)
				seq = ''
			name_list.append(line.strip('>'))
			continue
		seq += line
	# 迴圈結束後的最後一組seq要再append進seq_list才完整
	seq_list.append(seq)
	seqs = list(zip(name_list, seq_list))
	return seqs
raw = '''
>one
ATCC
TGAA
>two
CGAA
CCGG
>three
ATCG
GTTA
'''
seqs = fasta_parse(raw)
print(seqs)
# [('one', 'ATCCTGAA'), ('two', 'CGAACCGG'), ('three', 'ATCGGTTA')]

Written with StackEdit.