파이썬 기초 마지막 편으로 앞에서의 파이썬 기본 기능들을 활용하여 간단한 3가지 예제를 풀어보도록 하겠다.
[예제 1. 물리 방정식 풀기]
철수와 민구가 각각 10m/s와 15m/s의 속도로 공을 던졌을 때, 0에서 2초 동안 각 공의 궤적을 그려보자
공의 궤적은 다음의 방정식으로 주어진다.
여기서,
t = 시간
y = 공의 높이
v0 = 공의 초기 속도
g = 중력
먼저, 시간 t는 0에서 2초 동안이며 이 시간을 약 100개 정도로 쪼갠다.
t = np.linspace(0,2,100)
그리고 다음과 같이 각 변수에 값을 정의한다.
g = 9.81
v0_c = 10
v0_m = 15
위의 공식을 철수와 민구에 맞춰 정의한다.
y_c = -1/2 * g * t**2 + v0_c*t
y_m = -1/2 * g * t**2 + v0_m*t
이제 각 공식을 앞에서 쪼개 놓은 t 시간 동안 그리면 된다.
plt.plot(t,y_c, label = 'chulsoo')
plt.plot(t,y_m, label = 'minkoo')
plt.xlabel('Time')
plt.ylabel('Height of the Ball')
plt.grid()
plt.legend()
이제 결과는 아래와 같이 출력된다.
철수의 공은 2초 만에 거의 지면에 떨어지는 반면 공을 더 빠르게 던진 민구의 공은 더 높게 올라가서 더 멀리 갈 것으로 보인다.
[예제 2. 리스트 내의 단어 찾기]
두 번째 예제는 다음과 같이 시 한 소절이 리스트로 정의되어 있을 때 “인생”이란 단어가 들어간 행을 찾는 문제이다.
poem = ['인생은 무엇인가? 하나의 열정.',
'인생은 무엇인가? 하나의 환상.',
'하나의 그림자, 하나의 허기.',
'그래서 가장 큰 행복은 작은 것.',
'모든 인생은 꿈.',
'그리고 꿈은 꿈일 뿐.']
앞의 파이썬 기초(2)에서 얘기한 내용을 활용하면 아래와 같이 구성할 수 있다.
for i, line in enumerate(poem):
if '인생' in line:
print('행 {}에서 인생을 포함하고 있음'.format(i+1))
for 문은 i부터 시의 전체 행 수만큼 수행되며 각 행에서 ‘인생’이란 단어가 있는지는 if 문으로 조건을 만든다.
'인생'이란 단어가 행에 있다면 .format 함수를 써서 행의 수를 넣어주고 결과를 출력한다.
결과는 아래와 같다.
[예제 3. 특정 값으로 나눠지는 수를 제외한 나머지 수의 합 구하기]
마지막 예제 역시 간단하다.
1부터 999999까지의 수 중에서 4와 6으로 나누어지는 수를 제외한 나머지 수의 합을 구하는 것이다.
먼저 숫자들의 합을 초기화한다.
summation = 0
그리고 역시 파이썬 기초(2)에서 얘기한 Boolean 내용을 활용하면 다음과 같이 구성할 수 있다.
for i in range(1000000):
if not(i%4==0) and not(i%6==0):
summation = summation + i
% 는 값을 나누고 난 후의 나머지를 출력한다.
그렇기때문에 4와 6으로 나눈 값이 0과 같을 때라는 조건을 만들고 이 앞에 ‘not’을 붙여 문제를 풀기 위한 조건을 완성한다.
즉, 이 조건을 만족하는 i의 값은 4와 6으로 나눠지지 않는 수들이며 이러한 수들의 누적합을 구한다.
결과는 333333666666 이 된다.
여기까지 3부에 걸쳐 파이썬의 기초를 아주 간략하게 정리하고 간단한 예제를 통해 활용하는 방법도 알아봤다.
다음에는 간단한 프로젝트나 좀 더 복잡한 문제들을 파이썬으로 어떻게 풀 수 있는지 알아볼 예정이다.
'Python' 카테고리의 다른 글
파이썬 딥러닝을 이용하여 로또 번호 예측하기 - 1부 (0) | 2022.04.24 |
---|---|
파이썬을 이용한 주식 연 수익률 계산 (0) | 2022.04.01 |
파이썬 기초 (2) - for문과 if문 (0) | 2022.03.15 |
파이썬 기초 (1) - 변수, 배열, 그래프 (0) | 2022.03.09 |
추세 지표와 변동성 지표의 조합을 통한 가상 화폐 매매 전략 (0) | 2022.02.20 |
댓글