반응형
학습목표
- if 조건문의 이해하고 활용할 수 있다.
조건문
- 조건에 따라서 다르게 수행해야할 경우에 사용한다.
- 조건문의 결과는 boolean(참, 거짓)으로 표현 된다.
- if, elif, else 키워드를 사용한다.
- if, elif, else 블록에 종속된 코드는 들여쓰기로 표현한다.
- 들여쓰기 된 코드를 블록(block), 또는 코드블록이라고 한다.
- if 조건 : 문법으로 사용한다.
if 조건문:
수행할 문장1
수행할 문장2
...
else:
수행할 문장A
수행할 문장B
...
In [2]:
# 들여쓰기에 주의!!!
옷색깔 = input()
if 옷색깔 == "하얀색":
print("빨간립스틱을 바른다.")
핑크색
In [3]:
# 들여쓰기에 주의!!!
옷색깔 = input()
if 옷색깔 == "하얀색":
print("빨간립스틱을 바른다.")
else:
print("핑크색립스틱을 바른다.")
파란색
핑크색립스틱을 바른다.
- #### 비교연산자
- <, >, ==, !=, >=, <=
In [4]:
a = 10
b = 20
a > b
Out[4]:
False
- bool 자료형
- True -참
- False - 거짓
- AND, OR, NOT
- 조건문에 사용되는 조건의 경우, boolean이기 때문에, 논리식 AND, OR, NOT 이 사용가능하다.
- AND : 모든 조건이 참일 때만 참.
- OR : 둘 중 하나만 참이어도 참.
- NOT : 거짓이면 참. 참이면 거짓.
- 논리표
T | T | T | T | F |
T | F | F | T | F |
F | T | F | T | T |
F | F | F | F | T |
- 우선순위
- NOT > AND > OR
In [6]:
a = 10
b = 20
c = 30
if a == 10 and b == 15 :
print('hahaha')
In [9]:
if (a == 10 or b == 15) and c == 25 :
print('수행해주세요')
In [12]:
if not a == 41 :
print('hahaha')
hahaha
- #### in, not in
In [13]:
if 1 in [1,2,3]:
print('있어요^^')
있어요^^
In [14]:
1in [ 1,2,3]
Out[14]:
True
- #### pass
- 조건문에서 아무일도 하지 않는다.
In [19]:
a = int(input())
if a == 20 :
pass
else :
print(a)
if a == 5 :
--------------------------------------------
ValueError Traceback (most recent call last)
Input In [19], in <cell line: 1>()
----> 1 a = int(input())
2 if a == 20 :
3 pass
ValueError: invalid literal for int() with base 10: 'if a == 5 :'
In [20]:
a = int(input())
if a == 10 :
print(a)
print('bbb')
print('hello')
print('end')
1
end
if의 조건이 bool이 아닌 경우
- 일반적으로는 조건문에는 bool이 주로 위치 한다.
- 하지만, 정수, 실수, 문자열 리스트 등 기본 타입도 조건에 사용 가능하다
- False로 간주되는 값 (각 타입의 기본값)
- None
- 0
- 0.0
- ''
- [] -> 빈 리스트
- () -> 빈 튜플
- {} -> 빈 딕셔너리
- set() -> 빈 집합
- 그밖에는 모두 True로 간주
In [22]:
a = 10
if a :
print(a)
10
In [26]:
list_a = []
if list_a:
print('true')
else :
print('false')
false
if, else
- if가 아닌 경우, 나머지 조건을 표현하고 싶다면 바로 아래 else 문을 사용한다.
- if조건이 True인 경우에는 if 블록의 코드가 수행되고, 거짓인 경우 else 블록의 코드가 수행된다.
In [28]:
# 짝수인 경우에는 2로 나눈 값을 출력하고
# 홀수인 경우에는 1을 더한 값을 출력해라
num = int(input())
if num % 2 == 0:
print(num/2)
else :
print(num+1)
6
3.0
if, elif, else
- 조건이 여러개인 경우, 다음 조건을 elif 블록에 명시 가능하다.
- 이런 경우, 각 조건을 확인 후 True인 조건의 코드 블록을 실행 한다.
- elif는 개수에 제한없이 사용 가능하다.
If 조건문:
수행할 문장1
수행할 문장2
...
elif 조건문:
수행할 문장1
수행할 문장2>
...
elif 조건문:
수행할 문장1
수행할 문장2
...
...
else:
수행할 문장1
수행할 문장2
...
In [30]:
score = int(input())
if score == 3:
print("good")
elif score == 2:
print("soso")
elif score == 1:
print("bad")
else:
print("다시 입력")
3
good
In [31]:
enter=int(input())
if enter%2==0 and enter%3==0:
print('2의 3의 공배수입니다.')
elif enter%2==0 :
print('2의 배수입니다.')
elif enter%3==0:
print('3의 배수입니다.')
else:
print('Error!')
30
2의 3의 공배수입니다.
In [32]:
phone=input()
if phone[:3]=='011':
print('SKT')
elif phone[:3]=='016':
print('KT')
elif phone[:3]=='019':
print('LGU')
else:
print('알수없음')
011-222-3333
SKT
In [38]:
phoneNumber = input()
firstNumber = phoneNumber.split('-')[0]
telecom = {'011':'SKT','016':'KT','019':'LGU'}.get(firstNumber,'알수 없는')
print(f'당신은 {telecom} 사용자 입니다.')
016-222-3333
016
당신은 KT 사용자 입니다.
중첩 조건문(nested condition)
- 조건문의 경우 중첩하여 작성 가능하다.
- 중첩 개수에 제한이 없다.
In [39]:
a = 11
b = 9
c = 8
if a == 10:
if b == 9:
if c == 8:
print('ok')
else:
print('ㅠㅠ')
bb
In [2]:
# 한줄로쓰기
a = 10
if a < 4 : print('a')
else : print(3)
조건부 표현식 (conditional expression)
- 조건부 표현식의 정의 방법
조건문이 참인 경우 if 조건문 else 조건문이 거짓인 경우
- 예를 들면
if score >= 60:
message = "pass"
else:
message = "fail"
- 위와 같은 코드를 파이썬의 조건부 표현식을 이용해서 표기하면 아래와 같다.
message = "pass" if score >= 60 else "fail"
- 이런 조건부 표현식은 가독성이 좋고, 한줄로 작성가능해서 자주 사용 된다.
In [45]:
score = int(input())
if score >= 60:
message = "pass"
else:
message = "fail"
print(f'학생은 {score}점 이므로 {message} 입니다.')
20
학생은 20점 이므로 fail 입니다.
In [46]:
message = "pass" if score >= 60 else "fail"
print(f'학생은 {score}점 이므로 {message} 입니다.')
학생은 20점 이므로 fail 입니다.
-------------------------------------------------------------------------
While 문
학습목표
- 반복문의 이해하고 활용할 수 있다.
- while 문을 사용할 수 있다.
loop (반복문)
- 반복적인 작업을 가능하게 해주는 도구이다.
- 특정 조건을 만족하는 경우 수행할 수 있다.
- 리스트, 문자열, 튜플 등 컬렉션 타입의 아이템을 하나씩 순회하면서 사용 가능하다.
- 코드 작업에서, 가장 많이 사용하는 구문 중 하나이다.
- while을 사용할 경우, 반복문을 멈추게 할 문장이 필요하다.
- 그렇지 않으면 셀이 무한히 수행되며 이를 무한루프라고 한다.
- jupyter notebook의 재부팅이 필요
while 문
- while 조건이 True일 경우, while 코드 블록을 계속 수행한다.
- while 코드 블록
- if와 마찬가지로 while문 아래의 들여쓰기로 작성 된 부분을 의미한다.
- 조건이 False가 되면 블록 수행을 멈추고 이후 코드를 실행한다.
- while문의 기본구조
- while 조건문 : 수행할 문장1 수행할 문장2 ....
while 문을 이용한 리스트 출력하기
In [2]:
a = [1,2,3,4]
print(len(a))
print(a[0])
4
1
In [4]:
a = [1,2,3,4,55,333,66,33,32,6756]
index = 0
while index < len(a):
print('value : ', a[index])
index += 1 #index = index = 1
print('end')
value : 1
value : 2
value : 3
value : 4
value : 55
value : 333
value : 66
value : 33
value : 32
value : 6756
end
while 실습
- [1, 10, 9, 24, 25, 26] 리스트에서 20보다 큰 값만 출력하세요.
- 위의 리스트에서 짝수인 경우만 출력하세요.
In [7]:
list_a = [1, 10, 9, 24, 25, 26]
index = 0
while index < len(list_a):
if list_a[index] > 20:
print("value: ", list_a[index])
index += 1
value: 24
value: 25
value: 26
In [ ]:
list_a = [1, 10, 9, 24, 25, 26]
index = 0
while index < len(list_a):
if list_a[index] % 2 == 0:
print("value: ", list_a[index])
index += 1
무한루프
- while의 경우 종료가 되지 않도록 코드를 작성하면 블록에서 빠져나올 수 없다.
- Ctrl + c 를 눌러서 종료시킨다.
- jupyter notebook 에서는 'Interrupt the kernel' (정지버튼)을 눌러서 멈춘다.
In [ ]:
break
- loop를 중단할 때 사용한다.
- 보통 조건문 안에서 수행되며, 조건을 만족하는 경우 loop를 빠져나온다.
In [11]:
while True:
score = int(input('점수를 입력하세요.'))
if score == 1:
break
print(score)
점수를 입력하세요.50
50
점수를 입력하세요.30
30
점수를 입력하세요.60
60
점수를 입력하세요.452
452
점수를 입력하세요.852
852
점수를 입력하세요.52
52
점수를 입력하세요.522
522
점수를 입력하세요.41
41
점수를 입력하세요.1
In [ ]:
continue
- 특정한 경우에는 코드를 수행하지 않고 반복문을 계속 실행한다.
In [12]:
a = 0
while a < 10:
a += 1
if a == 5:
continue
print(a)
1
2
3
4
6
7
8
9
10
1 - 100까지 더하기
In [13]:
sum = 0
i = 0
while i<100:
i += 1
sum += i
print(sum)
5050
---------------------------------------------------------------
FOR
학습목표
- for 반복문의 이해하고 활용 할 수 있다.
- range 함수를 이해하고 활용 할 수 있다.
for 반복문
- 리스트, 문자열 등등 순회 가능한 객체를 순회하면서 값을 처리할 때 사용한다.
- 모든 아이템이 순회되면 for 블록 종료된다.
- for문의 기본구조
for 변수 in 리스트(또는 튜플, 문자열): 수행할 문장1 수행할 문장2 ...
for문 사용해보기
In [1]:
s = 'hello world!!'
for c in s:
print(c)
h
e
l
l
o
w
o
r
l
d
!
!
In [2]:
a = [1,2,3,4,5]
for num in a :
print(num)
1
2
3
4
5
- [1, 10, 9, 24, 25, 26] 리스트에서 20보다 큰 값만 출력하세요.
- 위의 리스트에서 짝수인 경우만 출력하세요.
In [3]:
list_a = [1, 10, 9, 24, 25, 26]
for num in list_a:
if num > 20:
print(num)
24
25
26
In [4]:
list_b = [(1,2),(3,4),(5,6)]
for t in list_b:
print(t)
(1, 2)
(3, 4)
(5, 6)
In [5]:
list_b = [(1,2),(3,4),(5,6)]
for t1,t2 in list_b:
print(t1,t2)
1 2
3 4
5 6
In [7]:
a,b = (1,2)
print(a,b)
1 2
In [12]:
#scores 리스트의 점수가 60점 이상이면 pass 60미만이면 fail 을 출력하세요. 이때... 리스트에 들어있는 값 순서대로
# ex 1번 학생 pass 2번학생 fail. 과 같이 출력되도록 for 문을 작성해 주세요.
scores = [33,21,43,56,78,63,91,84,59,81]
for i in range(len(scores)):
result = 'fail' if scores[i] < 60 else 'pass'
print(f'{i+1}번 학생 {result}')
1번 학생 fail
2번 학생 fail
3번 학생 fail
4번 학생 fail
5번 학생 pass
6번 학생 pass
7번 학생 pass
8번 학생 pass
9번 학생 fail
10번 학생 pass
In [11]:
list_c = [34,3,33,32,54,66]
for i in range(len(list_c)):
print(f'{i+1} 번 점수 {list_c[i]}')
1 번 점수 34
2 번 점수 3
3 번 점수 33
4 번 점수 32
5 번 점수 54
6 번 점수 66
문자열의 아이템 출력하기
- 문자열의 경우 순회 가능, 리스트의 유사하게 순회 가능하다.
In [13]:
s = 'test tes hahha'
for c in s:
print(c)
t
e
s
t
t
e
s
h
a
h
h
a
In [ ]:
리스트 아이템 출력하기
In [14]:
for num in [1,2,3,4,4]:
print(num)
1
2
3
4
4
dict의 아이템 출력하기
- dictionary의 경우 기본적으로 순회 하게 되면 key값을 참조한다.
- keys()함수를 이용하여 key 값만 순회 가능하다.
- values()함수를 이용하여 value 값만 순회 가능하다.
- items()함수를 이용하여 tuple형태로 key, value 순회 가능하다.
In [16]:
person = {'name':'kang','phone':'010-222-3333','address':'경기도 고양시'}
In [18]:
list(person.keys())
Out[18]:
['name', 'phone', 'address']
In [19]:
person.keys()
Out[19]:
dict_keys(['name', 'phone', 'address'])
In [21]:
for key in person.keys():
print(key, person[key])
name kang
phone 010-222-3333
address 경기도 고양시
In [23]:
for item in person.items():
print(item)
('name', 'kang')
('phone', '010-222-3333')
('address', '경기도 고양시')
In [24]:
for key,value in person.items():
print(key,value)
name kang
phone 010-222-3333
address 경기도 고양시
In [25]:
for value in person.values():
print(value)
kang
010-222-3333
경기도 고양시
for에서 index 사용하기
- 기본적으로 for에 리스트를 순회하는 경우, 값만 추출 한다.
- 아래와 같은 코드로 인덱스와 값 모두 사용 가능(enumerate 함수 이용)하다.
In [27]:
a = [22,43,66,44,77]
for index, value in enumerate(a):
print(f'{index}에 해당하는 값은 {value}')
0에 해당하는 값은 22
1에 해당하는 값은 43
2에 해당하는 값은 66
3에 해당하는 값은 44
4에 해당하는 값은 77
break
- 반복문을 수행하는 도중 break를 만나면 loop 종료가 가능하다.
In [28]:
a = [22,43,66,44,77]
# index 0: 22
#index 1 : 43
a = [22, 43, 66, 44, 77]
for i, v in enumerate(a):
if i > 3:
break
print(f'Index {i}: {v}')
Index 0: 22
Index 1: 43
Index 2: 66
Index 3: 44
continue
- 반복문을 수행하는 도중 continue를 만나면 해당 아이템을 건너 뛴다.
In [29]:
for index, value in enumerate(a):
if 20 <= value <= 30:
continue
print(f'{index}번째 항목은 {value}입니다.')
1번째 항목은 43입니다.
2번째 항목은 66입니다.
3번째 항목은 44입니다.
4번째 항목은 77입니다.
In [30]:
for index, value in enumerate(a):
if value >=20 and value <= 30:
continue
print(f'{index}번째 항목은 {value}입니다.')
1번째 항목은 43입니다.
2번째 항목은 66입니다.
3번째 항목은 44입니다.
4번째 항목은 77입니다.
In [32]:
for index, value in enumerate(a):
if value in range(20,31):
continue
print(f'{index}번째 항목은 {value}입니다.')
1번째 항목은 43입니다.
2번째 항목은 66입니다.
3번째 항목은 44입니다.
4번째 항목은 77입니다.
loop 중첩
- 반복문의 경우에도 중첩하여 사용 가능하다.
- 중첩이라는 것은 반복문 블록의 코드안에 또 반복문의 코드가 작성되는 것을 의미한다.
- 이런 경우, 내부 루프는 외부 루프가 수행되는 만큼 반복 수행 된다.
- 또한 중첩의 경우 무한히 가능하다.
for 변수 in 리스트(또는 튜플, 문자열):
for 변수 in 리스트(또는 튜플, 문자열):
수행할 문장1
수행할 문장2
...
...
In [35]:
for i in [1,2,3,4]:
for j in [4,5,6,7]:
print(f'{i}+{j}={i+j}')
print('========')
1+4=5
1+5=6
1+6=7
1+7=8
========
2+4=6
2+5=7
2+6=8
2+7=9
========
3+4=7
3+5=8
3+6=9
3+7=10
========
4+4=8
4+5=9
4+6=10
4+7=11
========
구구단 출력하기
2 1 = 2 2 2 = 4 2 3 = 6 ... 2 9 = 18 3 1 = 3 .. 3 9 = 27 ... 9 1 = 9 ... 9 9 = 81
In [36]:
for i in range(1, 10):
for j in range(2, 10):
print(j, '*', i, '=', i*j, end = '\t')
print()
2 * 1 = 2 3 * 1 = 3 4 * 1 = 4 5 * 1 = 5 6 * 1 = 6 7 * 1 = 7 8 * 1 = 8 9 * 1 = 9
2 * 2 = 4 3 * 2 = 6 4 * 2 = 8 5 * 2 = 10 6 * 2 = 12 7 * 2 = 14 8 * 2 = 16 9 * 2 = 18
2 * 3 = 6 3 * 3 = 9 4 * 3 = 12 5 * 3 = 15 6 * 3 = 18 7 * 3 = 21 8 * 3 = 24 9 * 3 = 27
2 * 4 = 8 3 * 4 = 12 4 * 4 = 16 5 * 4 = 20 6 * 4 = 24 7 * 4 = 28 8 * 4 = 32 9 * 4 = 36
2 * 5 = 10 3 * 5 = 15 4 * 5 = 20 5 * 5 = 25 6 * 5 = 30 7 * 5 = 35 8 * 5 = 40 9 * 5 = 45
2 * 6 = 12 3 * 6 = 18 4 * 6 = 24 5 * 6 = 30 6 * 6 = 36 7 * 6 = 42 8 * 6 = 48 9 * 6 = 54
2 * 7 = 14 3 * 7 = 21 4 * 7 = 28 5 * 7 = 35 6 * 7 = 42 7 * 7 = 49 8 * 7 = 56 9 * 7 = 63
2 * 8 = 16 3 * 8 = 24 4 * 8 = 32 5 * 8 = 40 6 * 8 = 48 7 * 8 = 56 8 * 8 = 64 9 * 8 = 72
2 * 9 = 18 3 * 9 = 27 4 * 9 = 36 5 * 9 = 45 6 * 9 = 54 7 * 9 = 63 8 * 9 = 72 9 * 9 = 81
In [37]:
for i in range(2,9):
for j in range(1,9):
print(f'{i}x{j}={i*j}')
print("------------")
2x1=2
2x2=4
2x3=6
2x4=8
2x5=10
2x6=12
2x7=14
2x8=16
------------
3x1=3
3x2=6
3x3=9
3x4=12
3x5=15
3x6=18
3x7=21
3x8=24
------------
4x1=4
4x2=8
4x3=12
4x4=16
4x5=20
4x6=24
4x7=28
4x8=32
------------
5x1=5
5x2=10
5x3=15
5x4=20
5x5=25
5x6=30
5x7=35
5x8=40
------------
6x1=6
6x2=12
6x3=18
6x4=24
6x5=30
6x6=36
6x7=42
6x8=48
------------
7x1=7
7x2=14
7x3=21
7x4=28
7x5=35
7x6=42
7x7=49
7x8=56
------------
8x1=8
8x2=16
8x3=24
8x4=32
8x5=40
8x6=48
8x7=56
8x8=64
------------
collection의 길이
- len() 내장함수로 계산 가능하다.
- 내장함수란 파이썬 내부에 구현되어 있어서, import하지 않고도 사용 가능한 함수를 의미한다.
- abs, len, type, range 등이 있다.
In [40]:
len(a)
len('hello')
len(range(3,100))
Out[40]:
97
range 함수
- 리스트를 쉽게 만들 수 있는 내장함수이다.
- 주어진 값에 따라 다양한 결과를 반환한다.
- 숫자리스트를 자동으로 만들어 주는 range함수와 for문은 함께 자주 사용된다.
range(10) -> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
range(2, 10) -> [2, 3, 4, 5, 6, 7, 8, 9]
range(2, 10, 3) -> [2, 5, 8]
- 1 - 100까지의 리스트 생성하기
In [41]:
list(range(1,101))
Out[41]:
[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,
31,
32,
33,
34,
35,
36,
37,
38,
39,
40,
41,
42,
43,
44,
45,
46,
47,
48,
49,
50,
51,
52,
53,
54,
55,
56,
57,
58,
59,
60,
61,
62,
63,
64,
65,
66,
67,
68,
69,
70,
71,
72,
73,
74,
75,
76,
77,
78,
79,
80,
81,
82,
83,
84,
85,
86,
87,
88,
89,
90,
91,
92,
93,
94,
95,
96,
97,
98,
99,
100]
In [ ]:
In [ ]:
In [2]:
# for와 range()를 이용하여 1-100까지 더하는 코드를 작성하시오.
In [3]:
#for와 range를 이용하여 구구단을 출력해보시오.
1부터 100사이의 5의 배수만을 갖는 리스트를 생성하시오
In [ ]:
연습문제
- 1 - 100까지 정수 중 2의 배수 또는 11의 배수를 모두 출력하시오.
- a = [22, 1, 3, 4, 7, 98, 21, 55, 87, 99, 19, 20, 45] 에서 최대값과 최소값을 찾으시오. (sorted, sort 사용 금지)
- a = [22, 1, 3, 4, 7, 98, 21, 55, 87, 99, 19, 20, 45] 에서 평균을 구하세요.
- 위의 리스트중에서 짝수에는 2를 홀수에는 3을곱해서 각각 짝수, 홀수 리스트를 새로 작성하시오.
In [42]:
inte = range(1, 101)
for i in inte:
if (i % 2 == 0):
if((i / 2)% 11== 0):
print("2와 11의 배수 :",i)
else:
print(i)
elif (i % 11 == 0):
print(i)
2
4
6
8
10
11
12
14
16
18
20
2와 11의 배수 : 22
24
26
28
30
32
33
34
36
38
40
42
2와 11의 배수 : 44
46
48
50
52
54
55
56
58
60
62
64
2와 11의 배수 : 66
68
70
72
74
76
77
78
80
82
84
86
2와 11의 배수 : 88
90
92
94
96
98
99
100
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
List comprehension
- [표현식 for 항목 in 반복가능객체]
- [표현식 for 항목 in 반복가능객체 if 조건문]
In [44]:
#리스트에 3을 곱한 결과를 새로운 리스트에 담는예제.
a = [1,2,3,4]
result = []
for value in a :
result.append(value*3 )
print(result)
[3, 6, 9, 12]
In [45]:
result = [value*3 for value in a]
print(result)
[3, 6, 9, 12]
In [48]:
result = []
for value in a :
if value % 2 == 0:
result.append(value*3 )
print(result)
[6, 12]
In [47]:
#짝수에만 곱하게 하고 싶다면??
even_list = [value * 3 for value in a if value%2==0]
print(even_list)
[6, 12]
In [49]:
[value*3 if value%2 == 0 else value*2 for value in a ]
Out[49]:
[2, 6, 6, 12]
In [52]:
print(a)
['1' if value % 2== 0 else '2' if value %3 == 0 else '3' for value in a]
[1, 2, 3, 4]
Out[52]:
['3', '1', '2', '1']
'경기도 인공지능 개발 과정 > Python' 카테고리의 다른 글
Python 파일 입출력 (0) | 2022.05.28 |
---|---|
Python 함수, lambda 함수 (0) | 2022.05.28 |
Python 컬렉션 타입 (0) | 2022.05.28 |
Python 변수의 이해 및 기본 데이터 타입, 문자열 타입 이해 (0) | 2022.05.28 |
Python 주피터 노트북 사용법 (0) | 2022.05.28 |