일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Jackson
- 2020년 일정
- sqldeveloper
- jsp
- 성적프로그램
- 필기
- 항해99
- 주간회고
- Til
- 함수형 코딩
- 2020년 제4회 정보처리기사 필기 문제 분석
- algorithms
- 회고
- 서평
- hackerrank
- post
- 알고리즘
- 스터디
- 뇌정리
- If
- Real MySQL
- LeetCode
- git
- 2020년 정보처리기사 4회
- java
- 미니프로젝트
- Python
- 책리뷰
- 코드숨
- 정보처리기사
- Today
- Total
조컴퓨터
200817 OOP 03 - Python While, For, Break, Continue 본문
200814 Python 수업의 마지막에 내주신 운행거리 택시 요금 문제로 수업 시작
https://chocomputer.tistory.com/6
import math
from math import ceil, floor
"""
print(abs(-3)) #3/ 절대값
print(max(1,3,5)) #5/ 최대값
print(min(2,4,6)) #2/ 최소값
print(pow(2,3)) #8/ 2의 3승
print(round(3.51)) #4/ 반올림
print(round(3.1456,3)) #3.146
print(ceil(2.1)) #3/ 소수점 올림
print(floor(2.5)) #2/ 소수점 버림
"""
Python 모듈을 이용할 수도 있겠다.
수학과 관련된 모듈
python math : https://andamiro25.tistory.com/12 (참고)
from math import abs
④ 반복문 While
"""
while 조건:
조건이 True이면 처리
조건이 True이면 처리
조건이 True이면 처리
(3번 처리)
"""
변수의 증가에 따른 반복
i=1
while i<=3:
print("JAVA")
i=i+1
변수의 감소에 따른 반복
j=3
while j>=1:
print("Corona")
j=j-1
예제1) 구구단 4단을 출력하시오.
dan=4
i=1
while i<=9:
print("4 * %d = %d" % (i, dan*i))
i=i+1
예제2) 1 ~ 10 중에서 홀수만 출력하시오.
a=1
while a<10:
print(a)
a=a+2
예제3) 1 ~ 3 사이 숫자의 누적합을 구하시오.
hap=0
a=1
while a<=3:
hap=hap+a
a=a+1
print(hap) #6=1+2+3
문제1) 4!의 값을 구하시오. (누적곱)
내 답안
multi=1
a=1
while a<=4:
multi=multi*a
a=a+1
print(multi) #24=4*3*2*1
선생님 답안
multi=1
f=4
while f>=1: #f>=1 == f>0
multi=multi*f
f=f-1
print(multi)
문제2) 2 ~ 5 사이의 수를 전부 더하시오.
start=2
end=5
sum=0
while start<=end:
sum=sum+start
start=start+1
print(sum) #14
이때 앞의 수가 뒤의 수보다 크다면 두 수를 서로 교환(swap)하는 방법도 있다.
if start>end:
tmp=start
start=end
end=tmp
start=5
end=2
sum=0
if start>end:
tmp=start
start=end
end=tmp
while start<=end:
sum=sum+start
start=start+1
print(sum) #14
또는
start=5
end=2
sum=0
while end<=start:
sum=sum+start
start=start-1
print(sum) #14
이 방식을 절차적 덮어쓰기라 하는데, 구동 원리는 다음과 같다.
start end tmp |
■ ★ □ ← 초반에는 tmp값이 비워진 상태 |
start end tmp |
□ (빈 공간) ★ ■ ← start값을 이곳에 대입 |
start end tmp |
★ ← end값을 이곳에 대입 □ ■ |
start end tmp |
★ ■ ← tmp값 (초기 start값)을 이곳에 대입 □ |
문제3) 1 ~ 10 중에서 3의 배수의 합을 구하시오.
내 답안1
sum=0
a=0
while a<=10:
sum=sum+a
a=a+3
print(sum) #18
내 답안2
sum=0
a=1
while 3*a<=10:
sum=sum+3*a
a=a+1
print(sum) #18
선생님 답안
hap=0
a=1
while a<=10:
if a%3==0:
hap=hap+a
a=a+1
print(hap) #18
문제4) 1 ~ 100 중에서 짝수의 합, 홀수의 합을 각각 구하시오.
내 답안
sum=0
a=1
while a<=100:
if a%2==0:
sum=sum+a
a=a+1
print("짝수의 합 : %d" % sum)
#2550=2+4+6+8+10+...+2n (n=1,2,3,4,...,50)
# =2*50*51/2=2550
sum=0
a=1
while a<=100:
if a%2==1:
sum=sum+a
a=a+1
print("홀수의 합 : %d" % sum)
#2500=1+3+5+7+9+...+(2n-1) (n=1,2,3,4,...,50)
# =2*50*51/2-50=2500
선생님 답안
even=0 #짝수의 합
odd=0 #홀수의 합
a=1
while a<=100:
if a%2==0:
even=even+a
else:
odd=odd+a
a=a+1
print("짝수의 합: %d" % even)
print("홀수의 합: %d" % odd)
Switch이론
짝수/홀수, Yes/No, On/Off, True/False
even=0
odd=0
flag=False
a=1
while a<=100:
if flag:
even=even+a
flag=False
else:
odd=odd+a
flag=True
a=a+1
print("짝수의 합: %d" % even) #짝수의 합: 2550
print("홀수의 합: %d" % odd) #홀수의 합: 2500
문제5) 구구단 2 ~ 9단을 출력하시오.
dan=1
while dan<=8:
dan=dan+1
i=1
print("%d단" % dan)
while i<=9:
print("%d * %d = %d" % (dan, i, dan*i))
i=i+1
문제6) 서기 1 ~ 2020년까지 윤년의 갯수를 구하시오.
내 답안
y=1
sum=0
while y<=2020:
if y%4==0 and y%100!=0 or y%400==0:
sum=sum+1
y=y+1
print(sum) #490
선생님 답안
count=0
y=1
while y<=2020:
if y%4==0 and y%100!=0 or y%400==0:
count=count+1
y=y+1
print(count) #490
문제7) 다음 식의 결과를 구하시오.
#-> 1-2+3-4+5-...-100
내 답안1
a=1
sum=0
while a<=100:
if a%2==1:
sum=sum+a
else:
sum=sum+(-1)*a
a=a+1
print(sum) #-50
내 답안2
even=0
odd=0
flag=False
a=1
while a<=100:
if flag:
even=even+(-1)*a
flag=False
else:
odd=odd+a
flag=True
a=a+1
print(even+odd) #-50
선생님 답안
result=0
num=1
while num<=100:
if num%2==0:
result=result+(-1)*num
else:
result=result+num
num=num+1
print(result) #-50
Break
반복문 안의 무한한 루프를 빠져나오기 위해 사용한다.
Continue
루프 블럭의 나머지 문장을 실행하지 않고 다음 루프로 직접 들어가게 할 수 있다.
a=1
while a<10:
a=a+1
if a==5: break #반복문 빠져나감
print(a) #234
b=1
while b<10:
b=b+1
if b==5: continue #반복문 계속 실행
print(b) #234678910
무한LOOP
끝이 없는 반복
a=0
while True:
a=a+10
if a==50: break
print(a) #10203040
위의 문장은 a=0에서 시작하여 조건이 한바퀴 돌 때마다 +10을 무한히 더하는 식이다.
허나 break문으로 50에서 끊어 보았다.
예제1) x의 값이 10으로부터 x를 여러 번 뺀 후
결과가 음수가 되면 x를 몇 번 뺐는 가를 구하시오.
내 답안
x=3
a=10
count=0
while True:
a=a-x
count=count+1
if a<0: break
print(count) #4
선생님 답안
x=3
su=10
count=0
while True: #무한루프
count=count+1
su=su-x
if su<0: break #브레이크
print(count) #4
선생님은 순서를 한 바퀴 돈 순서를 먼저 계산하고 다음 계산식을 꾸리신다.
내 사고는 아직 계산을 끝낸 후 이것을 카운트하는 방식...
예제2) 3의 배수의 누적합이 100이 넘어가려면
3부터 어디까지 더해야 하는지 구하시오.
#->3+6+9+12+...>100
내 답안
b=3
sum=0
while True:
sum=sum+b
if sum>100: break
b=b+3
print(b) #24
선생님 답안
num=0
hap=0
while True:
num=num+3
hap=hap+num
if hap>=100: break
print(num) #24
print(hap) #108
④ 반복문 for
"""
for 변수 in range(시작값, 종료값-1, 증감):
반복할 명령어
"""
위의 반복문 for 형태를 토대로 5번 반복을 작성해 보면
for a in range(5): #리턴값 0,1,2,3,4
print("JAVA")
4번 반복
for a in range(1,5): #리턴값 1,2,3,4
print("Python")
위와 같은 형식으로 반복문을 작성할 수 있다.
이때 2번 반복을 작성해 보면
#-> 1 시작값
#-> 5 종료값-1
#-> 2 증감
for a in range(1,5,2): #리턴값 1,3=1+2
print("KOREA")
다음과 같은 리스트 배열 형식도 가능하다.
list=["ONE","TWO","THREE","FOUR","FIVE"]
for word in list:
print(word)
"""
결과값
ONE
TWO
THREE
FOUR
FIVE
"""
예제1) 구구단 2 ~ 9단을 출력하시오.
(반복문 for)
for dan in range(2, 10):
print("%d단" % dan)
for a in range(1, 10):
print("%d * %d = %d" % (dan, a, dan*a))
dan의 범위를 2 ~ 10(결과적으로 9)까지 설정해 놓은 후
2단, 3단, ... , 9단을 먼저 프린트해 주고
a의 범위를 1 ~ 10(결과적으로 9)까지 설정해 주고
뽑은 a값을 초기에 설정한 dan값에 하나씩 대입하여 곱해 준다.
"""
결과값
2단
2 * 1 = 2
2 * 2 = 4
2 * 3 = 6
2 * 4 = 8
2 * 5 = 10
2 * 6 = 12
2 * 7 = 14
2 * 8 = 16
2 * 9 = 18
(나머지 생략)
"""
위와 같은 출력값이 나오는데 나머지는 생략하였다.
(반복문 while)
dan=1
while dan<=8: #dan<9로 작성해도 무방하다.
dan=dan+1 #dan<=8이므로 9단까지 출력된다.
a=1
print("%d단" % dan)
while a<=9:
print("%d * %d = %d" % (dan, a, dan*a))
a=a+1
또는
dan=2 #초기 dan값을 2로 시작하면
while dan<=9:
a=1
print("%d단" % dan) #dan값 수정 없이 바로 대입할 수 있다.
while a<=9:
print("%d * %d = %d" % (dan, a, dan*a))
a=a+1
dan=dan+1 #dan값은 한 사이클을 마친 후 수정하여 다시 사이클 안에 넣는다.
과제) 경로명, 파일명, 확장명을 각각 분리하여
변수에 저장하고 출력하시오.
path="c:\myph3425oto\helloworld.jpg"
"""
c:\myphoto
helloworld
jpg
"""
내 답안
a=path.rfind("\\")
print(path[:a])
b=path.rfind(".")
print(path[a+1:b])
print(path[b+1:])
print(path[-1]) #g
\을 rfind를 통해 먼저 찾고, \ 앞까지 프린트 :a
.을 rfind 모듈을 통해 찾고, \ 뒤부터 . 앞까지 프린트 a+1:b
. 뒤에서 끝까지 프린트 b+1:
이때 path[-1]값의 출력은 g값을 출력해 보기 위해 작성했다.
'자바 웹개발자 과정 > Python' 카테고리의 다른 글
200814 OOP 02 - Python Index, Slice, String, Function, If (0) | 2020.08.26 |
---|---|
200813 OOP 01 - 컴퓨터 기초 및 Python 환경 구축 (0) | 2020.08.26 |