본문 바로가기
Python/Python Examples

[Python Examples] Growth of a Bacterial Populations: for loop, matplotlib, array

by Henry Cho 2023. 9. 15.
728x90

Growth of a Bacterial Populations: for loop, matplotlib, array

포스트 난이도: HOO_Junior


# Example Codes

이번 예제코드는 박테리아 증식에 대한 결과를 산출해내고 있으며, 결괏값을 그래프로 나타내었다. matplotlib을 통해서 그래프로 표현이 가능하며, for loop를 통해서 각 시간대별 결과를 계산식으로 하여금 산출해 낼 수 있다. 또한 array를 활용해서 시간대별 값을 저장한 후에 그래프로 출력하는 데 사용하였다.

코드로 보면 허무할 정도로 간단해 보이지만 requirments나 계산식만 주어졌을 때 코드로 변환하는 과정이 어렵게만 느껴질 수 있다. 특히 이제 막 파이썬을 배우기 시작하거나 프로그래밍 자체를 다루기 시작한 학부 전공자들의 경우가 이럴 것이다. 프로그래밍 언어에 대해서는 이미 다 어느 정도 익숙하지만 막상 코드로 작성을 해보려면 막막할 따름이다. 하지만 너무 걱정하지 않아도 되는 게 꾸준한 연습과 예제코드를 통해 여러 방법들을 익혀나간다면 requirments나 계산식만 봐도 뚝딱뚝딱 코드가 머릿속으로 그려지게 될 것이다. 여기서 조금 더 미쳐버리면 글쓴이처럼 코드만 보면 행복해하는 컴퓨터에 세뇌된 사람이 되어 버릴 수도 있다.

아래의 예제코드에 사용된 계산식은 임의의 박테리아 계산식이기에 목적에 맞게 바꿔어 사용하면 된다. 또한 코드만 보고 연습하기보다는 직접 requriments나 계산식만 보고 코드를 작성해 보는 연습을 먼저 해보는 것이 좋다. 이 포스트를 읽는 브로들의 경우에는 이미 파이썬에 대해서 익숙하지만 머릿속으로 코드가 그려지지 않는 경우가 많을 것으로 예상되기 때문에 코드를 읽고 분석하는 단계를 넘어서 직접 머릿속으로 그려서 작성해 보고 예제코드와 비교해 보는 연습을 해보는 것을 추천한다.


# each mintute: for loop 0 to 60
# N0 = 2^(-1), u=0.092^(-1), e=2.71828
#gbp is a growth of a bacterial populations.
# t is a minute.

import matplotlib.pyplot as plt
n0 = 0.5
u = 10.869565217391305
e = 2.71828
t_values = []
gbp_values = []
t = 0

for x in range(61):
    eut = pow(e, (u * t))
    gbp = n0 * eut
    print(f"t={t}, gbp={gbp}")
    t_values.append(t)
    gbp_values.append(gbp)
    t = t + 1
print ("Finished! Coded by HOO")

plt.plot(t_values, gbp_values)
plt.xlabel('Time (minutes)')
plt.ylabel('GBP')
plt.title('GBP Growth Over Time')
plt.grid(True)
plt.show()


t=0, gbp=0.5
t=1, gbp=26275.986109890193
t=2, gbp=1380854892.0942848
t=3, gbp=72566647928886.7
t=4, gbp=3.8135204660414377e+18
t=5, gbp=2.004080215909736e+23
t=6, gbp=1.0531836783269993e+28
t=7, gbp=5.534687940576619e+32
t=8, gbp=2.908587668983381e+37
t=9, gbp=1.528520183792115e+42
t=10, gbp=8.032675023601627e+46
t=11, gbp=4.221329146908335e+51
t=12, gbp=2.2183917205887763e+56
t=13, gbp=1.1658086007297302e+61
t=14, gbp=6.126554119912852e+65
t=15, gbp=3.219625019126436e+70
t=16, gbp=1.6919764456324355e+75
t=17, gbp=8.891669916739915e+79
t=18, gbp=4.672747904519763e+84
t=19, gbp=2.4556211806835436e+89
t=20, gbp=1.2904773606958681e+94
t=21, gbp=6.781713040954526e+98
t=22, gbp=3.5639239533075705e+103
t=23, gbp=1.8729123258763066e+108
t=24, gbp=9.842523651953663e+112
t=25, gbp=5.172440295300041e+117
t=26, gbp=2.7182193870708232e+122
t=27, gbp=1.4284778971661538e+127
t=28, gbp=7.506933076844228e+131
t=29, gbp=3.945041385100712e+136
t=30, gbp=2.0731970527569804e+141
t=31, gbp=1.0895059392261617e+146
t=32, gbp=5.72556858514994e+150
t=33, gbp=3.008899212292491e+155
t=34, gbp=1.581235878165152e+160
t=35, gbp=8.30970639422557e+164
t=36, gbp=4.366914595838767e+169
t=37, gbp=2.29489974526661e+174
t=38, gbp=1.2060150766043282e+179
t=39, gbp=6.337847080234742e+183
t=40, gbp=3.3306636369371475e+188
t=41, gbp=1.7503294292175495e+193
t=42, gbp=9.198326353970538e+197
t=43, gbp=4.833901910223369e+202
t=44, gbp=2.5403107889918922e+207
t=45, gbp=1.3349834201271127e+212
t=46, gbp=7.015601160838793e+216
t=47, gbp=3.686836773094619e+221
t=48, gbp=1.9375054367853456e+226
t=49, gbp=1.0181973188961189e+231
t=50, gbp=5.350827721688714e+235
t=51, gbp=2.8119654978300207e+240
t=52, gbp=1.477743327249536e+245
t=53, gbp=7.76583262815796e+249
t=54, gbp=4.0810982053844733e+254
t=55, gbp=2.1446975951554976e+259
t=56, gbp=1.127080884404359e+264
t=57, gbp=5.923032332666718e+268
t=58, gbp=3.112670306031469e+273
t=59, gbp=1.6357696345191153e+278
t=60, gbp=8.596292039120459e+282
Finished! Coded by HOO

# github link

혼자하기 어려워서 끙끙되고 있는 코드에 대한 질문은 언제나 환영하며 글쓴이의 디스코드를 알고 있는 기존 브로들의 경우에는 해당 계정으로 질문을 하면 된다. 기존 브로가 아니라면 공지사항을 참고해서 질문을 하거나, 댓글을 남기는 것도 가능하다. 대부분의 포스트는 브로들이 하는 질문을 우선적으로 답변하면서 작성되고 있다.

 

아래는 위의 예제코드가 있는 깃허브 링크이다.

https://github.com/WhoisHOO/HOOAI/blob/main/Python%20Examples/growth_of_a_bacterial_populations


 

728x90

댓글