반응형
무작위로 완두콩 RR, Rr, rR, rr을 생성시켜 둥근 완두콩과 주름진 완두콩의 비율이 3:1임을 시뮬레이션하는 프로그램을 작성해보자.
import random
descendant = []
def make_descendant():
h1 = random.randrange(0,2)
h2 = random.randrange(0,2)
if h1 == 0 and h2 == 0:
h = 'RR'
elif h1 == 0 and h2 == 1:
h = 'Rr'
elif h1 == 1 and h2 == 0:
h = 'rR'
else:
h = 'rr'
descendant.append(h)
def count_descendant(d):
d_dict = {}
for n in d:
if n in d_dict:
d_dict[n] += 1
else:
d_dict[n] = 1
print(d_dict)
cal_rate(d_dict)
def cal_rate(d):
rate = (d['RR']+d['Rr']+d['rR'])/d['rr']
print(rate,":1")
for n in range(100):
make_descendant()
count_descendant(descendant)
▶ descendant = [] : descendant라는 빈 리스트 저장
def make_descendant():
h1 = random.randrange(0,2)
h2 = random.randrange(0,2)
if h1 == 0 and h2 == 0:
h = 'RR'
elif h1 == 0 and h2 == 1:
h = 'Rr'
elif h1 == 1 and h2 == 0:
h = 'rR'
else:
h = 'rr'
descendant.append(h)
▶ make_descendant() 사용자 정의 함수 생성
→ random.randrange(0,2) : h1과 h2 변수에 0과 1 중 하나의 랜덤값 지정
→ 0은 R, 1은 r로 바꿔 'RR', 'Rr', 'rR', 'rr' 생성
→ descendant 리스트에 h값을 저장
def count_descendant(d):
d_dict = {}
for n in d:
if n in d_dict:
d_dict[n] += 1
else:
d_dict[n] = 1
print(d_dict)
cal_rate(d_dict)
▶ count_descendant() 사용자 정의 함수 생성
→ d_dict = {} : d_dict라는 빈 딕셔너리 생성
→ descendant 리스트를 전달받아 리스트에 있는 유전 형질 RR, Rr, rR, rr에 따른 개수를 세어 d_dict 딕셔너리에 저장
→ 외형에 따른 비율을 계산하는 cal_rate(d_dict)를 count_descendant() 함수에 호출
def cal_rate(d):
rate = (d['RR']+d['Rr']+d['rR'])/d['rr']
print(rate,":1")
for n in range(100):
make_descendant()
▶ cal_rate() 사용자 정의 함수 생성
→ 유전 형질 RR, Rr, rR, rr에 따른 빈도를 저장하고 있는 d_dict 딕셔너리를 매개변수로 받아 둥근 완두콩과 주름진 완두콩의 비율 계산
반응형
'Language > Python' 카테고리의 다른 글
[ Python ] e-mail 보내기 프로그램 (0) | 2021.09.03 |
---|---|
[ Python ] 행성까지의 여행 시간 구하기 프로그램 (0) | 2021.09.03 |
[ Python ] 딕셔너리와 집합 개념 (0) | 2021.09.03 |
[ Python ] 거미줄 그리기 프로그램 (0) | 2021.09.02 |
[ Python ] 벌집 모양 그리기 프로그램 (0) | 2021.09.02 |