주석 포함 코드 · 한 줄씩 상세 설명 · OX 개념 퀴즈 · 5지선다형 문제
변수, 문자열, 리스트, if, for, count(), len()
세포는 분열을 통해 개수가 증가할 수 있습니다.
cells = 1 # 처음 세포 수
division = 5 # 분열 횟수
for i in range(division): # 분열 횟수만큼 반복한다.
cells *= 2 # 한 번 분열할 때마다 세포 수가 2배가 된다.
print("최종 세포 수 =", cells)DNA는 A, T, G, C 네 종류의 염기로 이루어져 있습니다.
dna = "ATGCGATTA" # DNA 염기서열
a = dna.count("A") # A의 개수
t = dna.count("T") # T의 개수
g = dna.count("G") # G의 개수
c = dna.count("C") # C의 개수
print("A:", a)
print("T:", t)
print("G:", g)
print("C:", c)DNA에서 A는 T와, G는 C와 상보적으로 결합합니다.
dna = "ATGCCGTA" # 원래 DNA 가닥
pair = "" # 상보적 DNA 가닥을 저장할 문자열
for base in dna: # 염기를 하나씩 확인한다.
if base == "A":
pair += "T"
elif base == "T":
pair += "A"
elif base == "G":
pair += "C"
elif base == "C":
pair += "G"
print("원래 가닥:", dna)
print("상보 가닥:", pair)DNA의 정보를 RNA로 옮길 때 T 대신 U가 사용됩니다.
dna = "ATGCTTACG" # DNA 염기서열
rna = "" # RNA 염기서열
for base in dna:
if base == "T":
rna += "U" # DNA의 T는 RNA에서 U로 바뀐다.
else:
rna += base # 나머지 염기는 그대로 둔다.
print("DNA:", dna)
print("RNA:", rna)RNA는 세 염기씩 묶인 코돈 단위로 해석됩니다.
rna = "AUGGCUUAA" # RNA 염기서열
for i in range(0, len(rna), 3): # 3칸씩 건너뛰며 반복한다.
codon = rna[i:i+3] # 세 글자를 잘라 코돈으로 만든다.
print(codon)Aa와 Aa가 교배할 때 유전자형 비율을 계산할 수 있습니다.
parent1 = ["A", "a"] # 첫 번째 부모가 만들 수 있는 생식세포
parent2 = ["A", "a"] # 두 번째 부모가 만들 수 있는 생식세포
children = [] # 자손 유전자형 저장
for g1 in parent1:
for g2 in parent2:
children.append(g1 + g2) # 두 생식세포 조합
print(children)우성 대립유전자 A가 하나라도 있으면 우성 형질이 나타난다고 가정합니다.
children = ["AA", "Aa", "aA", "aa"]
dominant = 0
for genotype in children:
if "A" in genotype: # A가 하나라도 있으면 우성 표현형
dominant += 1
ratio = dominant / len(children)
print("우성 표현형 비율 =", ratio)개체군은 출생과 사망에 따라 증가하거나 감소합니다.
population = 100 # 처음 개체 수
birth = 30 # 태어난 개체 수
death = 10 # 죽은 개체 수
population = population + birth - death # 개체군 변화
print("현재 개체 수 =", population)환경 제한이 없으면 개체군은 일정 비율로 빠르게 증가할 수 있습니다.
population = 100 # 처음 개체 수
rate = 0.2 # 증가율 20%
years = 5 # 기간
for year in range(1, years + 1):
population = population * (1 + rate) # 매년 20% 증가
print(year, "년 후:", int(population))먹이사슬에서 다음 영양 단계로 전달되는 에너지는 일부입니다.
energy = 10000 # 생산자의 에너지
rate = 0.1 # 10%만 다음 단계로 전달
levels = 4 # 영양 단계 수
for level in range(1, levels + 1):
print(level, "단계 에너지:", energy)
energy *= rate # 다음 단계로 10% 전달효소 반응은 기질 농도가 증가하면 반응 속도가 증가하다가 포화됩니다.
substrate = 10 # 기질 농도
vmax = 100 # 최대 반응 속도
km = 5 # 반응 속도가 절반이 되는 농도
velocity = vmax * substrate / (km + substrate) # 간단한 효소 반응식
print("반응 속도 =", velocity)물질은 농도가 높은 곳에서 낮은 곳으로 이동하는 경향이 있습니다.
left = 100 # 왼쪽 농도
right = 20 # 오른쪽 농도
diffusion = (left - right) * 0.1 # 농도 차이의 일부가 이동한다고 가정
left -= diffusion # 왼쪽 농도 감소
right += diffusion # 오른쪽 농도 증가
print("왼쪽 농도:", left)
print("오른쪽 농도:", right)물은 용질 농도가 낮은 곳에서 높은 곳으로 이동합니다.
inside = 30 # 세포 안 용질 농도
outside = 80 # 세포 밖 용질 농도
if outside > inside:
print("물이 세포 밖으로 이동")
elif outside < inside:
print("물이 세포 안으로 이동")
else:
print("물의 순이동 없음")생물은 체내 환경을 일정하게 유지하려고 합니다.
body_temp = 38.5 # 현재 체온
normal = 37.0 # 정상 체온
if body_temp > normal:
print("땀을 흘려 체온을 낮춘다.")
elif body_temp < normal:
print("몸을 떨어 체온을 높인다.")
else:
print("정상 체온 유지")혈당은 인슐린과 글루카곤 등에 의해 조절됩니다.
blood_sugar = 160 # 혈당 수치
normal = 100 # 기준 혈당
if blood_sugar > normal:
print("인슐린 분비 증가")
elif blood_sugar < normal:
print("글루카곤 분비 증가")
else:
print("혈당 정상")여러 번 측정한 심박수의 평균을 계산할 수 있습니다.
heart_rates = [72, 75, 70, 78, 74] # 측정한 심박수
total = 0
for h in heart_rates:
total += h # 심박수를 모두 더한다.
average = total / len(heart_rates) # 평균 계산
print("평균 심박수 =", average)DNA 염기서열에서 원래 서열과 다른 위치를 찾을 수 있습니다.
normal = "ATGCCGTA" # 정상 DNA
mutant = "ATGACGTA" # 변이 DNA
for i in range(len(normal)):
if normal[i] != mutant[i]: # 같은 위치의 염기가 다르면
print(i + 1, "번째 염기 변이:", normal[i], "->", mutant[i])DNA에서 G와 C의 비율은 생물학적 특성을 이해하는 데 사용됩니다.
dna = "ATGCGCGTTA" # DNA 염기서열
g = dna.count("G") # G 개수
c = dna.count("C") # C 개수
gc = (g + c) / len(dna) * 100 # GC 함량 백분율
print("GC 함량 =", gc, "%")생존율은 처음 개체 중 살아남은 개체의 비율입니다.
start = 200 # 처음 개체 수
survived = 150 # 살아남은 개체 수
survival_rate = survived / start * 100 # 생존율 계산
print("생존율 =", survival_rate, "%")광합성은 빛을 이용해 이산화탄소와 물로 포도당을 만드는 과정입니다.
co2 = 6 # 이산화탄소 분자 수
water = 6 # 물 분자 수
if co2 >= 6 and water >= 6:
glucose = min(co2 // 6, water // 6) # 만들 수 있는 포도당 분자 수
print("포도당 생성 가능:", glucose, "개")
else:
print("재료 부족")dna.count("A")T → Urange(0, len(rna), 3)population + birth - deathsurvived / start * 100