2021. 4. 21. 15:24ㆍPYTHON/Do it! 점프 투 파이썬
06장 파이썬 프로그래밍, 어떻게 시작해야할까?
06-1 내가 프로그램을 만들 수 있을까?
프로그램을 만드려면 가장 먼저 '입력'과 '출력'을 생각하라.
구구단 프로그램 중 2단 만들기
1. 먼저 에디터를 열고 다음과 같이 입력한다. GuGu라는 함수에 2를 입력값으로 주면 result라는 변수에 결과값을 넣으라는 뜻이다.
result=GuGu(2)
2. 결과값을 어떤 형태로 받을 것인지 생각한다. 2단이니까 2,4,6,...18까지 갈 것이고 이런 종류의 데이터는 리스트 자료형이 좋다. 따라서 result=[2,4,6,8,10,12,14,16,18]같은 결과를 얻는 것이 좋겠다는 생각을 하고 프로그래밍을 시작하는 것이 필요하다.
3. 이름을 GuGu로 지은 함수를 다음과 같이 만든다.
def GuGu(n):
print(n)
위와 같은 함수를 만들고 GuGu(2)처럼 실행하면 2를 출력한다. 즉 입력값으로 2가 잘 들어오는지 확인하는 것이다.
4. 이제 결과값을 담을 리스트를 생성한다. 앞에서 작성한 print(n)은 지운다.
def GuGu(n):
result=[]
5. result에 2,5,6,...18을 어떻게 넣어야 할지 생각해본다. 리스트에 요소를 추가하는 append 내장함수를 사용할 수 있다.
def GuGu(n):
result=[]
result.append(n*1)
result.append(n*2)
result.append(n*3)
result.append(n*4)
result.append(n*5)
result.append(n*6)
result.append(n*7)
result.append(n*8)
result.append(n*9)
return result
print(GuGu(2))
[2,4,6,8,10,12,14,16,18]
6. 똑같은 일을 반복할 때는 반복문을 사용할 수 있다. 1부터 9까지 출력해주는 반복문을 만들 수 있다.
i=1
while i < 10:
print(i)
i=i+1
1
2
3
4
5
6
7
8
9
7. 위 과정을 거쳐 완성한 GuGu함수는 다음과 같다.
def GuGu(n):
result=[]
i=1
while i < 10:
result.append(n*i)
i=i+1
return result
print(GuGu(2))
[2,4,6,8,10,12,14,16,18]
06-2 3과 5의 배수 합하기
Q. 10 미만의 자연수에서 3과 5의 배수를 구하면 3,5,6,9이다. 이들의 총합은 23이다. 1000 미만의 자연수에서 3과 5의 배수의 총합을 구하라.
1. 먼저 1000 미만의 자연수는 어떻게 구할 수 있을지 생각해보자. 다음과 같이 변수에 초기값 1을 준 후 루프를 돌리며 1씩 증가시켜서 999까지 진행할 수 있다.
n=1
while n<1000:
print(n)
n+=1
또는 range 함수를 사용할 수도 있다.
for n in range(1,1000):
print(n)
2. 3과 5의 배수를 구하는 방법을 알아보자. 1000 미만의 자연수 중 3의 배수는 다음과 같이 증가할 것이다.
3,6,9,12,15,18,...,999
1부터 1000까지의 수 중 3의 배수는 3으로 나누어 떨어지는 경우이고 %연산자를 사용하면 3의 배수를 찾을 수 있다.
for n in rangr(1, 1000):
if n%3==0:
print(n)
5의 배수도 같은 방식으로 찾을 수 있다.
3. 3과 5의 배수에 해당하는 수를 result 변수에 계속해서 더해준다. 단 3의 배수고 되고 5의 배수도 되는 값이 이중으로 더해지지 않기 위해 or 연산자를 사용한다.
result=0
for n in range(1, 1000):
if n%3==0 or n%5==0:
result+=n
print(result)
06-3 게시판 페이징하기
Q. 게시물의 총 건수와 한 페이지에 보여줄 게시물 수를 입력으로 주었을 때 총 페이지 수를 출력하는 프로그램 만들기
1. 다음과 같이 총 건수(m)를 한 페이지에 보여줄 게시물 수(n)로 나누고 1을 더하면 총 페이지 수를 얻을 수 있다.
총 페이지 수 = (총 건수/한 페이지 당 보여줄 건수) + 1
2. 이러한 공식을 적용했을 때 총 페이지 수가 표의 값처럼 구해지는지 확인해보자.
(m을 n으로 나눌 때 소수점 아래 자리를 버리기 위해 / 대신 // 연산자를 사용하였다.)
def getTotalPage(m, n):
return m//n+1
print(getTotalPage(5, 10))
print(getTotalPage(15, 10))
print(getTotalPage(25, 10))
print(getTotalPage(30, 10)) #실패
3. 실패 케이스는 총 게시물 수와 한 페이지에 보여 줄 게시물 수를 나눈 나머지 값이 0이 될 때 발생한다. 이 실패 케이스를 해결하려면 다음과 같이 코드를 변경해야 한다.
def getTotalPage(m, n):
if m%n==0:
return m//n
else:
return m//n+1
print(getTotalPage(5, 10))
print(getTotalPage(15, 10))
print(getTotalPage(25, 10))
Print(getTotalPage(30, 10))
나누었을 때 나머지가 0인 경우는 나누기의 몫만 돌려주고 그 이외의 경우에는 1을 더하여 돌려주도록 변경했다.
프로그램을 실행해보면 모든 케이스가 원하던 결과를 출력함을 확인할 수 있다.
'PYTHON > Do it! 점프 투 파이썬' 카테고리의 다른 글
[Do it! 점프 투 파이썬-스터디 노트] 07장 정규 표현식(07-1 정규 표현식 살펴보기, 07-2 정규 표현식 시작하기) (0) | 2021.04.22 |
---|---|
[Do it! 점프 투 파이썬-스터디 노트] 06장 파이썬 프로그래밍, 어떻게 시작해야할까?(06-4~06-6) (0) | 2021.04.21 |
[Do it! 점프 투 파이썬-스터디 노트] 05장 파이썬 날개 달기 연습문제 (0) | 2021.04.21 |
[Do it! 점프 투 파이썬-스터디 노트] 05장 파이썬 날개 달기(05-6 라이브러리) (0) | 2021.04.20 |
[Do it! 점프 투 파이썬-스터디 노트] 05장 파이썬 날개 달기(05-5 내장 함수) (0) | 2021.04.20 |