본문 바로가기
Python

파이썬 기초 (3) - 실전 예제 풀이

by 아짱이아빠 2022. 3. 21. 13:38
반응형

파이썬 기초 마지막 편으로 앞에서의 파이썬 기본 기능들을 활용하여 간단한 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 함수를 써서 행의 수를 넣어주고 결과를 출력한다.

결과는 아래와 같다.

예제 2의 수행 결과
(예제 2의 수행 결과)



반응형

 

[예제 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부에 걸쳐 파이썬의 기초를 아주 간략하게 정리하고 간단한 예제를 통해 활용하는 방법도 알아봤다.

 

다음에는 간단한 프로젝트나  좀 더 복잡한 문제들을 파이썬으로 어떻게 풀 수 있는지 알아볼 예정이다.

 

반응형

댓글