1. 제어문 (control statement) : 문장들이 실행되는 순서를 제어하는 문장
- 제어구조
①순차구조 (흐름대로)
②선택구조 (참 ? , 거짓 ? )
③반복구조
- 조건문 (if - else 문)
#형식
if 조건식 :
문장1
elif 조건식 :
문장2
elif 조건식 :
문장3
else :
문장4
※ 논리연산자
- x and y : True True 일 때만 True
- x or y : True가 1개 이상이면 True
- not x : 항상 True
※ 삼단 표현
삼단 표현은 if-else 블럭을 한 줄로 표현
문장1 if 조건식 else 문장4
- 반복문 (for, while)
- 횟수 반복 (for 문) : 정해진 횟수만큼 반복
for 변수 in 리스트/튜플/문자열 : 실행문1...
- 조건 반복 (while 문) : 특정 조건이 성립되는 동안 반복, 반드시 조건식을 변경시키는 로직이 필요 ( i += 1 )
- continue, break, pass
- continue : 해당 조건에서 그 루프가 끝나고 다음 루프로 넘어 간다.(건너 뛰기)
- pass : 실행할 코드가 없는 건을 뜻함. (모두 다 실행하고 다음 루프 넘어 간다.)
- break : 반복문 자체를 중단 한다.
# 제어문 for
- 횟수 반복문
- 가장 많이 쓰임.
- 리스트 / 튜플 / 문자열의 요소의 갯수만큼 반복한다.
- for 변수 in 리스트/튜플/문자열 : 실행문1...
< if 문 >
- `elif'는 `else if'의 약자.
- if...elif...elif... 가 연속되면 다른 언어에서의 switch 또는 case 서술문에 대응 (파이썬에는 switch, case 서술문이 없음)
- else부분은 선택적
if price > 20000 :
shipping_cost = 0
else :
shipping_cost = 3000
< for 문 >
- 횟수 반복문
- 가장 많이 쓰임.
- 리스트 / 튜플 / 문자열의 요소의 갯수만큼 반복한다.
- 형태 : for 변수 in 리스트/튜플/문자열 : 실행문1...
예제1 list
ls = [1, 2, 3, 4, 5 ]
for i in ls :
print(i)
결과
1
2
3
4
5
예제2 range
for i in range(0, 10):
print(i)
결과
0
1
2
3
4
5
6
7
8
9
# range(len(ls))
list(range(len(ls)))
결과
[0, 1, 2, 3, 4]
예제3 자장면을 x그릇 먹으면 무료 쿠폰
for i in range(1, 11):
print(f'자장면 {i}그릇을 먹었습니다.')
print('무료 쿠폰을 받았습니다.')
결과
자장면 1그릇을 먹었습니다.
자장면 2그릇을 먹었습니다.
자장면 3그릇을 먹었습니다.
자장면 4그릇을 먹었습니다.
자장면 5그릇을 먹었습니다.
자장면 6그릇을 먹었습니다.
자장면 7그릇을 먹었습니다.
자장면 8그릇을 먹었습니다.
자장면 9그릇을 먹었습니다.
자장면 10그릇을 먹었습니다.
무료 쿠폰을 받았습니다.
예제4 continue : 짝수이면 건너뛰기
for i in range(1, 11):
if i % 2 == 0:
continue
print(i)
결과
1
3
5
7
9
예제4 break : 조건 만족하면 반복문 끝
for i in range(1, 11):
if i % 2 == 0:
break
print(i)
결과
1
예제4 pass : 모두 다 실행
for i in range(1, 11):
if i % 2 == 0:
pass
print(i)
결과
1
2
3
4
5
6
7
8
9
10
예제5 : 리스트에서 for문
ls = []
for i in range(1, 51):
if i % 5 == 0:
ls.append(i)
print(ls)
결과
[5, 10, 15, 20, 25, 30, 35, 40, 45, 50]
예제5 : 딕셔너리에서 for문
dic = {'name' : 'Merry',
'num' : 1,
'birth' : 'jan'}
dic.items()
for key, value in dic.items():
print(key, ' : ', value)
결과
name : Merry
num : 1
birth : jan
예제5 : 튜플에서 for문
a = [(1, 2), (3, 4), (5, 6)]
for i in a:
print(i)
print(i[0]+i[1])
결과
(1, 2)
3
(3, 4)
7
(5, 6)
11
# print(i[0]+i[1]) 이거 대신
# print(i[0]+i[1]) 이거 대신
for i, j in a:
print(i + j)
결과
3
7
11
#구구단
#구구단
for i in range(2, 10):
for j in range(1, 10):
print( i * j, end=' ')
print()
결과
2 4 6 8 10 12 14 16 18
3 6 9 12 15 18 21 24 27
4 8 12 16 20 24 28 32 36
5 10 15 20 25 30 35 40 45
6 12 18 24 30 36 42 48 54
7 14 21 28 35 42 49 56 63
8 16 24 32 40 48 56 64 72
9 18 27 36 45 54 63 72 81
< List 내 for 문 >
- 리스트 안에 for문을 포함하여 한줄!!로 편하게 코드 작성 하는 문법.
- [표현식 for 항목 in 반복가능객체 if 조건문]
기본 for 문 | list 내 for문 | 결과 |
ls = list() for i in range(1, 5): ls.append(i) print(ls) |
ls = [ i for i in range(1, 5) ] print(ls) |
[1, 2, 3, 4] |
ls = list() for i in range(1, 5): if i % 2 == 0: ls.append(i) print(ls) |
ls = [ i for i in range(1, 5) if i % 2 == 0 ] print(ls) |
#짝수값 [2, 4] |
ls = list() for i in range(1, 5): if i % 2 == 0: ls.append( i * 4 ) print(ls) |
ls = [ i * 4 for i in range(1, 5) if i % 2 == 0 ] print(ls) |
#짝수값 * 4 [8, 16] |
- 조건문이 여러 개일 경우
[표현식 for 항목1 in 반복가능객체1 if 조건문1 for 항목2 in 반복가능객체 if 조건문2...]
#기본 for문
gugudan = list()
for i in range(2, 10):
for j in range(1, 10):
gugudan.append(i*j)
print(gugudan)
#list 내 for문
gugudan = [ i*j for i in range(2, 10) for j in range(1, 10)]
print(gugudan)
결과
[2, 4, 6, 8, 10, 12, 14, 16, 18, 3, 6, 9, 12, 15, 18, 21, 24, 27, 4, 8, 12, 16, 20, 24, 28, 32, 36, 5, 10, 15, 20, 25, 30, 35, 40, 45, 6, 12, 18, 24, 30, 36, 42, 48, 54, 7, 14, 21, 28, 35, 42, 49, 56, 63, 8, 16, 24, 32, 40, 48, 56, 64, 72, 9, 18, 27, 36, 45, 54, 63, 72, 81]
<Dict comprehension (딕셔너리 내 for문)>
# Dict comprehension
# Dict comprehension
names = ['Merry', 'John', 'Chris']
num = [1, 2, 3]
dic = {names[i] : num[i] for i in range(len(names))}
dic
# 기본 for문
dic1 = dict()
# dic1 = {}
for i in range(len(names)):
dic1[names[i]] = num[i]
print(dic1)
# zip를 사용해서 딕셔너리 형태로 반복문 만들기 (index안쓰기 위해 사용하게됨 + 실수 줄이는 방법)
#zip를 사용해서 딕셔너리형태로 반복문 만들기(index안쓰기 위해 사용하게됨 + 실수 줄이는 방법)
dic = {k:v for k, v in zip(names, num)}
dic
결과
{'Merry': 1, 'John': 2, 'Chris': 3}
<실습 문제>
예제1
#제목 : 콘테스트 평가 프로그램
#7명의 심판들의 점수를 입력받아 리스트에 저장하고 최소값과 최대값을 리스트에서 제거하는 프로그램을 작성
#제거전 [10.0, 9.0, 8.3, 7.1, 3.0, 9.0, 6.0]
#제거후 [9.0, 8.3, 7.1, 9.0, 6.0]
점수 = [10.0, 9.0, 8.3, 7.1, 3.0, 9.0]
최소값 = min(점수)
최대값 = max(점수)
점수.remove(최대값)
점수.remove(최소값)
print(점수)
반복문 사용
# 7번의 인풋 필요 (while)
# 입력값이 실수(float)여야한다.
# 입력값을 리스트에 저장 해야 한다.(input(), append)
# 최솟값, 최댓값을 찾아야 한다.( min(), max() )
# 평균을 구해서 출력하자.( sum(), len() )
scores = list()
count = 0
while count < 7:
count += 1
#숫자인지 확인하는 메서드 : isdecimal()
jumsu = input(f'{count}번째 심사위원 점수를 입력하세요:')
if jumsu.replace('.', '').isdecimal():
scores.append(float(jumsu))
print(scores, min(scores), max(scores))
scores.remove(min(scores))
scores.remove(max(scores))
print(f'제거 완료된 리스트는 {scores}입니다.')
avg = sum(scores)/len(scores)
print(f'평균은 : {avg}입니다.')
출력
terminal >> python test.py 엔터
1번째 심사위원 점수를 입력하세요:10.0
2번째 심사위원 점수를 입력하세요:9.0
3번째 심사위원 점수를 입력하세요:8.3
4번째 심사위원 점수를 입력하세요:7.1
5번째 심사위원 점수를 입력하세요:3.0
6번째 심사위원 점수를 입력하세요:9.0
7번째 심사위원 점수를 입력하세요:6.0
[10.0, 9.0, 8.3, 7.1, 3.0, 9.0, 6.0] 3.0 10.0
제거 완료된 리스트는 [9.0, 8.3, 7.1, 9.0, 6.0]입니다.
평균은 : 7.88입니다.
※ 숫자인지 확인하는 메서드 : isdecimal(), isdigit(), isnumeric()
but, 음수이거나 소수점 있는 경우 False로 반환
따라서, replace(' . ', ' ') 해서 소수점을 없애고 사용
'Back-End > Python' 카테고리의 다른 글
[Python][파이썬] 파이썬 함수 (0) | 2023.11.07 |
---|---|
[Python][파이썬] 고객 정보 관리 시스템 만들기 실습 (4) | 2023.11.06 |
[Python]파이썬 - 불리언, 집합, 제어문 (5) | 2023.11.03 |
[Python]파이썬 변수 - 숫자, 문자열, 리스트, 튜플(2) (0) | 2023.11.03 |
[Python]파이썬 변수 - 숫자, 문자열, 리스트, 튜플(1) (3) | 2023.11.03 |