Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 자연어처리 #언어학 #이론언어학 #형태론
- Set
- IF
- Tuple
- 문자열
- while
- 언어학 #이론언어학 #자연어처리 #개론
- Python
- for
- jupyter notebook
- 미니프로젝트 #XYZ세대 #도서제목분석 #워드클라우드 #워드투벡 #대응분석 #word2vec
- list
- Anaconda
- 자연어처리 #언어학 #이론언어학 #통사론
- bool
- 숫자형
Archives
- Today
- Total
미나랑 해보자
220112 python 세번째 수업: 흐름제어(if, while, for) 본문
220112 python기초 세번째 수업: 흐름제어¶
1. if 문¶
In [1]:
passes = True
if passes:
print("합격했습니다.")
else:
print("다음기회에 뵙겠습니다.")
합격했습니다.
In [2]:
passes = False
if passes:
print("합격했습니다.")
else:
print("다음기회에 뵙겠습니다.")
다음기회에 뵙겠습니다.
In [3]:
passes = True
if passes:
print("합격")
print("축하")
print("합니다")
#항상 같은 줄에 들여쓰기해야한다.tab키 치기. 안그러면 에러남
File "C:\Users\MINALA~1.DES\AppData\Local\Temp/ipykernel_8484/3040107752.py", line 5 print("합니다") ^ IndentationError: unexpected indent
1) 비교연산자 사용¶
1) 부등호: x < y, x > y
2) 부등호 확장: x >= y, x <= y
3) 같다: x == y
4) 같지 않다: x != y
In [4]:
passes == True
Out[4]:
False
In [5]:
x = 3
y = 2
x > y
Out[5]:
True
In [6]:
x < y
Out[6]:
False
In [7]:
grade = 95
if grade >= 80:
print("합격했습니다.")
else:
print("재시험대상자입니다.")
합격했습니다.
In [8]:
grade >= 80
Out[8]:
True
In [9]:
grade = 70
if grade >= 80:
print("합격했습니다.")
else:
print("재시험대상자입니다.")
재시험대상자입니다.
2) 여러 조건들을 연결시켜줄 때¶
- and
- or
- not
In [10]:
# 두 조건이 모두 참일 때 : and
kor = 80
eng = 70
if kor >= 80 and eng >= 80: #두 조건이 모두 참
print("합격")
else:
print("불합격")
불합격
In [11]:
# 두 조건이 하나라도 참일 때 : or
kor = 80
eng = 70
if kor >= 80 or eng >= 80: #두 조건 중 하나라도 참
print("합격")
else:
print("불합격")
합격
In [14]:
# 조건문이 해당하지 않을 때: not
if not kor <= 80:
print("합격")
else:
print("불합격")
불합격
In [13]:
not kor <= 80 #조건문이 true면 false, false면 true
Out[13]:
False
In [15]:
# 조건문이 해당하지 않을 때: not
if not kor < 80:
print("합격")
else:
print("불합격")
합격
In [16]:
# in 뒤에 리스트, 문자열, 튜플 올 수 있음
l1 = [1, 2, 3, 4, 5]
1 in l1
Out[16]:
True
In [17]:
0 in l1
Out[17]:
False
In [18]:
# 문자열에 사용하기
'a' in 'apple'
Out[18]:
True
In [19]:
'a' not in 'apple'
#들어있지 않은 경우가 True이므로 false가 출력됨
Out[19]:
False
In [20]:
'b' not in 'apple'
Out[20]:
True
In [21]:
grade_list = [45, 80, 95, 100, 25]
if 100 in grade_list:
print('만점자가 있습니다.')
else:
print('만점자가 없습니다.')
만점자가 있습니다.
3) 다양한 조건을 따로따로 판단해야할 때: elif¶
In [22]:
kor = 90
eng = 80
if kor >= 80:
print("국어시험에 합격했습니다")
if eng >= 80:
print("영어시험에 합격했습니다.")
국어시험에 합격했습니다 영어시험에 합격했습니다.
In [23]:
kor = 75
eng = 80
if kor >= 80:
print("국어시험에 합격했습니다")
elif eng >= 80:
print("국어시험 불합격. 영어시험에 합격.")
else:
print("국어시험 불합격. 영어시험 불합격")
국어시험 불합격. 영어시험에 합격.
In [24]:
eng = 77
if eng >= 90:
print("A")
elif eng >= 80:
print("B")
elif eng >= 70:
print("C")
else:
print("D")
C
In [25]:
eng = 77
if eng >= 90:
grade = "A"
elif eng >= 80:
grade ="B"
elif eng >= 70:
grade ="C"
else:
grade = "D"
print(grade)
C
4) 조건부 표현식¶
In [26]:
eng = 77
if eng >= 90:
grade = "A"
else:
grade = "B"
In [27]:
#조건문이 참인 경우 할당되는 값("A"), 거짓인 경우 할당되는 값("B")
grade = "A" if eng >= 90 else "B"
#syntax: 결과1 if 조건 else 결과2
In [28]:
grade
Out[28]:
'B'
elif 까지 확장하면 조건문을 어디 넣어야할지 난감. 따라서 if~else상황에만 적용
2. While문¶
- 반복문: 조건문이 참인 동안에 무언가를 반복해서 수행할 때
In [30]:
# 구동원리
treeHit = 0
while treeHit < 10:
treeHit += 1
#treeHit = treeHit+1 자기자신에 1이 더해지는 것
print("나무를 %d번 찍었습니다." % treeHit)
if treeHit == 10:
print("완성!")
나무를 1번 찍었습니다. 나무를 2번 찍었습니다. 나무를 3번 찍었습니다. 나무를 4번 찍었습니다. 나무를 5번 찍었습니다. 나무를 6번 찍었습니다. 나무를 7번 찍었습니다. 나무를 8번 찍었습니다. 나무를 9번 찍었습니다. 나무를 10번 찍었습니다. 완성!
1) 무한루프: 그냥은 멈출 수 없으므로 강제종료시켜야함¶
In [ ]:
# 다른 예: 커피자판기
coffee = 10
money = 1000 #내가 가진 돈
while money:
print('커피가 나옵니다')
coffee -= 1
print("남아있는 커피는 %d잔 입니다." % coffee)
if coffee == 0:
print("커피가 품절되었습니다.판매를 종료합니다.")
#무한루프에 빠져버렸다!
- 왜 무한루프가 되었나: 언제 멈추어야하는지 알려주지 않아서
- 숫자형이 거짓일 때: 0일때와 비어있을 때
- 따라서 멈추어주는 break 사용하면 됨
In [32]:
# 해결된 버전
coffee = 10
money = 1000 #내가 가진 돈
while money:
print('커피가 나옵니다')
coffee -= 1
print("남아있는 커피는 %d잔 입니다." % coffee)
if coffee == 0:
print("커피가 품절되었습니다.판매를 종료합니다.")
break
커피가 나옵니다 남아있는 커피는 9잔 입니다. 커피가 나옵니다 남아있는 커피는 8잔 입니다. 커피가 나옵니다 남아있는 커피는 7잔 입니다. 커피가 나옵니다 남아있는 커피는 6잔 입니다. 커피가 나옵니다 남아있는 커피는 5잔 입니다. 커피가 나옵니다 남아있는 커피는 4잔 입니다. 커피가 나옵니다 남아있는 커피는 3잔 입니다. 커피가 나옵니다 남아있는 커피는 2잔 입니다. 커피가 나옵니다 남아있는 커피는 1잔 입니다. 커피가 나옵니다 남아있는 커피는 0잔 입니다. 커피가 품절되었습니다.판매를 종료합니다.
In [33]:
grade = "A" if eng >= 90 else 'B' if eng >= 80 else 'C' if eng >= 70 else 'D'
print(grade)
#결과->if문 조건 결과-> if문 조건 결과->if문 조건
C
2) continue¶
In [34]:
a = 0
while a < 10:
a += 1
if a % 2 == 0: #짝수조건
continue
print(a) # 짝수일 땐 건너뛰고 홀수일 때 출력한다
1 3 5 7 9
3. for문¶
- 반복문
- while문과의 차이
In [35]:
# 기본구조
# 임의의 변수 i
# in 뒤의 요소 하나하나 입력됨
for i in grade_list:
print(i)
#grade_list = [45, 80, 95, 100, 25]
45 80 95 100 25
In [36]:
a = [(1, 2), (3, 4), (5, 6)]
for (first, last) in a: #튜플형식으로 받기
print(first, '+', last, '=', first + last)
1 + 2 = 3 3 + 4 = 7 5 + 6 = 11
In [38]:
"""5명의 학생의 시험 성적 95, 25, 67, 45, 80점
시험 점수가 60점이 넘으면 합격 그렇지 않으면 불합격이 출력되도록 해보세요"""
mark_list = [95, 25, 67, 45, 80]
for mark in mark_list:
if mark >= 60:
print("합격")
else:
print('불합격')
합격 불합격 합격 불합격 합격
In [39]:
mark_list = [95, 25, 67, 45, 80]
num = 0
for mark in mark_list:
num += 1
if mark >= 60:
print("%d번 학생 합격" % num)
else:
print('%d번 학생 불합격' % num)
1번 학생 합격 2번 학생 불합격 3번 학생 합격 4번 학생 불합격 5번 학생 합격
2) continue 복습하기¶
In [1]:
### 복습하기 ###
mark_list = [95, 25, 67, 45, 80]
num = 0
for mark in mark_list:
num += 1
if mark < 60:
continue
# continue가 실행되면 뒤에 부분으로 넘어가지 않는다.
# 즉, 합격한 학생들만 출력된다.
print("%d번 학생 합격" % num)
1번 학생 합격 3번 학생 합격 5번 학생 합격
3) range¶
- 범위를 나타냄
- 1부터 n까지의 수를 입력하고 싶을 때: range(1, n+1)
In [40]:
range(10) #10부터 9까지
Out[40]:
range(0, 10)
In [41]:
range(1, 11)
Out[41]:
range(1, 11)
In [42]:
add = 0
for i in range(1, 11): #슬라이싱과 마찬가지로 숫자 하나가 더 커야한다.
add += i
print(add) #1부터 10까지의 합
55
In [43]:
mark_list = [95, 25, 67, 45, 80]
for i in range(len(mark_list)): # range(5)=0, 1, 2, 3, 4
# 0, 1, 2, 3, 4 = 인덱스번호와 같음
if mark_list[i] < 60:
continue
# continue가 실행되면 뒤에 부분으로 넘어가지 않는다.
# 즉, 합격한 학생들만 출력된다.
print("%d번 학생 합격" % (i + 1)) #인덱스번호+1이 원래 번호이므로 1을 더해줌
#인덱스번호가 필요하다면 range와 len이용가능
1번 학생 합격 3번 학생 합격 5번 학생 합격
In [44]:
## 구구단 출력하기
for i in range(2, 10): #2단부터 9단까지
for j in range(1, 10):
print(i * j, end = ' ')
#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
4) list comprehension¶
리스트 내포문
In [45]:
a = [1, 2, 3, 4]
result = []
for num in a:
result.append(num * 3)
print(result)
[3, 6, 9, 12]
In [46]:
# 간편하게 리스트 내포 사용하기. 조건문 표현식과 유사
a = [1, 2, 3, 4]
result = [num * 3 for num in a]
print(result)
[3, 6, 9, 12]
리스트 안에 결과값을 넣어주고 싶을 때 +for 문이 많이 구동되어야할 때 사용하면 더 빠르다
In [48]:
# 이중 for문에 리스트 내포 사용하기
result = [x * y for x in range(2, 10) for y in range(1, 10)]
print(result)
[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]
In [2]:
#블로그에 올리려고 추가하는 코드
from IPython.core.display import display, HTML
display(HTML("<style> .container{width:90% !important;}</style>"))
'미나랑의 고군분투 공부일지 > 기초 python 연습' 카테고리의 다른 글
220117 python 다섯번째 수업: Numpy (0) | 2022.01.18 |
---|---|
220113 python 네번째 수업: 함수 입출력(사용자정의함수, 입출력, 파일 읽고 쓰기) (0) | 2022.01.13 |
220112 실습문제 (0) | 2022.01.12 |
220111 python 두번째 수업: 자료형2(리스트, 튜플, 집합, 불자료형) (0) | 2022.01.11 |
220110 python 첫 수업: 설치 및 자료형1(숫자형, 문자열) (0) | 2022.01.11 |