1. continue 문
'''
continue
- 제어문(반복문, 조건문) 과 함께 사용
- 제어문을 탈출하지는 않는다.
- 하단 명령이 실행되지 않고 다음 단계로 이동된다.
예제)
# continue 이용
# 1~10 사이 숫자 중에서 5를 제외하고 나머지 출력하기
cnt = 0
while cnt < 10 :
cnt += 1
if cnt == 5 :
continue
else : #else 는 생략해도 괜찮다.
print(cnt, end= ' / ') # 한줄에 찍을때 사용
print( '\n continue 테스트 종료')
결과)
1 / 2 / 3 / 4 / 6 / 7 / 8 / 9 / 10 /
continue 테스트 종료
2. pass 문
pass
- 문법상 명령어를 사용해야되는 경우가 있을때 임시적으로 사용한다.
(함수 정의, 클래스 정의, 제어문 안에서 명령어가 필요한 경우)
if 조건식 :
pass
- 하단 명령은 실행된다. -> 밑에 else 꼭 써야함
예제)
# pass 이용
# 1~10 사이 숫자 중에서 5를 제외하고 나머지 출력하기
cnt = 0
while cnt < 10 :
cnt += 1
if cnt == 5 :
pass
else :
print(cnt, end= ' / ') # 한줄에 찍을때 사용
print( '\n pass 테스트 종료')
결과)
1 / 2 / 3 / 4 / 6 / 7 / 8 / 9 / 10 /
pass 테스트 종료
3. Range
'''
- range(start, end, step) : 숫자 생성기
- start ~ end-1 까지 step 만큼 증가/감소하면서 자동 숫자 생성
- start 는 생략시 0, step 은 생략시 1
- list(), set(), tuple() 로 데이터형 변환
- for 인덱스변수 in range (start, end, step)
'''
print(range(1, 10, 1)) #range(1, 10)
print(list(range(1, 10, 1))) #[1, 2, 3, 4, 5, 6, 7, 8, 9]
print(tuple(range(1, 10, 1))) #(1, 2, 3, 4, 5, 6, 7, 8, 9)
print(set(range(1, 10, 1))) #{1, 2, 3, 4, 5, 6, 7, 8, 9}
즉, range(1,10)은 enumerate처럼 압축되어 있는 상태로 보면 된다.
print(list(range(10))) # start, step 생략된 형태
#[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(list(range(2, 21, 2))) #[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
print(list(range(10, 0, -1))) #[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
'''
- for 인덱스변수 in range (start, end, step)
- 인덱스변수는 range()의 데이터가 순차적으로 저장된다.
- 인덱스변수는 i, j, k 로 보통 지정됨
- 1~12 까지 출력
for i in range (1, 13) :
print( f' i= {i}')
print(' for 반복문 테스트 종료 ')
결과)
i= 1
i= 2
i= 3
i= 4
i= 5
i= 6
i= 7
i= 8
i= 9
i= 10
i= 11
i= 12
for 반복문 테스트 종료
'''
'''
Quiz1
-빈 리스트를 생성하고 데이타를 입력받아 리스트에 추가한다. (list, append())
-리스트에 삽입되는 데이타는 숫자이어야 한다. (isnumeric(), isdecimal())
-음수의 숫자도 입력 대상이다.( 음수는 ? 첫글자는 -(마이너스) 나머지는 숫자 )
-데이타 총 입력 횟수는 10번이며 리스트의 길이가 5이면 입력을 중단한다.
- ( for .. in range(), len(), if ~, break)
1) 빈 리스트를 생성
2) 반복 횟수 설정
3) 데이터를 입력 -> 좌우 공백이 있다면 삭제 .strip()
4) 데어터가 숫자인지 판단. => 숫자라면 리스트에 추가
5) 음수 데이터라면 리스트에 추가 ->
6) 리스트의 길이가 5라면 반복문 종료
'''
num_list = []
for i in range( 5 ) :
data = input('데이터를 입력하세요...?').strip()
if data.isnumeric() :
num_list.append(data)
elif data[0] == '-' and data[1:].isnumeric() :
num_list.append(data)
else :
continue
print('데이터가 추가되었음')
print(f' num_list = {num_list}')
결과)
데이터를 입력하세요...?1231
데이터가 추가되었음
데이터를 입력하세요...?-287328
데이터가 추가되었음
데이터를 입력하세요...?pdsfjpsadfap
데이터를 입력하세요...?23232
데이터가 추가되었음
데이터를 입력하세요...?145141
데이터가 추가되었음
num_list = ['1231', '-287328', '23232', '145141']
위의 풀이는 길이가 5일때 중단 제외된 경우이고
이번엔 길이가 5인 경우 중단시키는 풀이를 해보자.
num_list = []
for i in range( 10 ) :
data = input('\n 데이터를 입력하세요...?').strip()
if data.isnumeric() :
num_list.append(data)
elif data[0] == '-' and data[1:].isnumeric() :
num_list.append(data)
else :
continue
print('데이터가 추가되었음')
if len(num_list) == 5:
break
print(f' num_list = {num_list}')
결과)
데이터를 입력하세요...?2312312
데이터가 추가되었음
데이터를 입력하세요...?-12321321
데이터가 추가되었음
데이터를 입력하세요...?232312
데이터가 추가되었음
데이터를 입력하세요...?-2442
데이터가 추가되었음
데이터를 입력하세요...?131131
데이터가 추가되었음
num_list = ['2312312', '-12321321', '232312', '-2442', '131131']
4. 중첩 for 문
'''
중첩 for 문 (들여쓰기에 주의)
for i in range (start, end, step ) :
~
for j in range(start, end, step):
~
~
ex)
print('중첩 for 문 테스트 시작')
for i in range(5) :
print(i)
for j in range(3) :
print(f'\t {j} : Hello world!!!')
print('='*10)
print('중첩 for 문 테스트 종료')
결과)
중첩 for 문 테스트 시작
0
0 : Hello world!!!
1 : Hello world!!!
2 : Hello world!!!
==========
1
0 : Hello world!!!
1 : Hello world!!!
2 : Hello world!!!
==========
2
0 : Hello world!!!
1 : Hello world!!!
2 : Hello world!!!
==========
3
0 : Hello world!!!
1 : Hello world!!!
2 : Hello world!!!
==========
4
0 : Hello world!!!
1 : Hello world!!!
2 : Hello world!!!
==========
중첩 for 문 테스트 종료
'''
'''
Quiz2) 구구단 전체 출력
for i in range (2, 10) : # 단에 해당
print(f' {i}단 ')
for j in range(1, 10):
print(f' {i} X {j} = {(i*j):>2}')
print()
'''
결과)
2단
2 X 1 = 2
2 X 2 = 4
2 X 3 = 6
2 X 4 = 8
2 X 5 = 10
2 X 6 = 12
2 X 7 = 14
2 X 8 = 16
2 X 9 = 18
3단
3 X 1 = 3
3 X 2 = 6
3 X 3 = 9
3 X 4 = 12
3 X 5 = 15
3 X 6 = 18
3 X 7 = 21
3 X 8 = 24
3 X 9 = 27
4단
4 X 1 = 4
4 X 2 = 8
4 X 3 = 12
4 X 4 = 16
4 X 5 = 20
4 X 6 = 24
4 X 7 = 28
4 X 8 = 32
4 X 9 = 36
5단
5 X 1 = 5
5 X 2 = 10
5 X 3 = 15
5 X 4 = 20
5 X 5 = 25
5 X 6 = 30
5 X 7 = 35
5 X 8 = 40
5 X 9 = 45
6단
6 X 1 = 6
6 X 2 = 12
6 X 3 = 18
6 X 4 = 24
6 X 5 = 30
6 X 6 = 36
6 X 7 = 42
6 X 8 = 48
6 X 9 = 54
7단
7 X 1 = 7
7 X 2 = 14
7 X 3 = 21
7 X 4 = 28
7 X 5 = 35
7 X 6 = 42
7 X 7 = 49
7 X 8 = 56
7 X 9 = 63
8단
8 X 1 = 8
8 X 2 = 16
8 X 3 = 24
8 X 4 = 32
8 X 5 = 40
8 X 6 = 48
8 X 7 = 56
8 X 8 = 64
8 X 9 = 72
9단
9 X 1 = 9
9 X 2 = 18
9 X 3 = 27
9 X 4 = 36
9 X 5 = 45
9 X 6 = 54
9 X 7 = 63
9 X 8 = 72
9 X 9 = 81
Quiz3)
'''
for i in range (1, 10, 3) : # 단에 해당
for j in range(1, 10):
print(f' {i} X {j} = {(i*j):>2} {i+1} X {j} = {((i+1)*j):>2} {i+2} X {j} = {((i+2)*j):>2}')
print()
1 X 1 = 1 2 X 1 = 2 3 X 1 = 3
1 X 2 = 2 2 X 2 = 4 3 X 2 = 6
1 X 3 = 3 2 X 3 = 6 3 X 3 = 9
1 X 4 = 4 2 X 4 = 8 3 X 4 = 12
1 X 5 = 5 2 X 5 = 10 3 X 5 = 15
1 X 6 = 6 2 X 6 = 12 3 X 6 = 18
1 X 7 = 7 2 X 7 = 14 3 X 7 = 21
1 X 8 = 8 2 X 8 = 16 3 X 8 = 24
1 X 9 = 9 2 X 9 = 18 3 X 9 = 27
4 X 1 = 4 5 X 1 = 5 6 X 1 = 6
4 X 2 = 8 5 X 2 = 10 6 X 2 = 12
4 X 3 = 12 5 X 3 = 15 6 X 3 = 18
4 X 4 = 16 5 X 4 = 20 6 X 4 = 24
4 X 5 = 20 5 X 5 = 25 6 X 5 = 30
4 X 6 = 24 5 X 6 = 30 6 X 6 = 36
4 X 7 = 28 5 X 7 = 35 6 X 7 = 42
4 X 8 = 32 5 X 8 = 40 6 X 8 = 48
4 X 9 = 36 5 X 9 = 45 6 X 9 = 54
7 X 1 = 7 8 X 1 = 8 9 X 1 = 9
7 X 2 = 14 8 X 2 = 16 9 X 2 = 18
7 X 3 = 21 8 X 3 = 24 9 X 3 = 27
7 X 4 = 28 8 X 4 = 32 9 X 4 = 36
7 X 5 = 35 8 X 5 = 40 9 X 5 = 45
7 X 6 = 42 8 X 6 = 48 9 X 6 = 54
7 X 7 = 49 8 X 7 = 56 9 X 7 = 63
7 X 8 = 56 8 X 8 = 64 9 X 8 = 72
7 X 9 = 63 8 X 9 = 72 9 X 9 = 81
'''
5. for 아이템변수 in 문자열|리스트|튜플
'''
아이템 변수는 문자열|리스트|튜플 에서 각각의 데이터가 저장된다.
아이템 변수명은 item으로 보통 지정
for 아이템변수 in 문자열|리스트|튜플:
명령문
'''
# 문자열 순회
txt = '도레미파솔라시'
for item in txt:
print(item)
결과)
도
레
미
파
솔
라
시
txt = '도레미파솔라시'
# 문자열변수.find(문자) => 문자의 인덱스 반환
for item in txt:
print(txt.find(item), item)
결과)
0 도
1 레
2 미
3 파
4 솔
5 라
6 시
#튜플 순회
num_tuple = (10, -90, 100, 600, -300, -99, 50)
for item in num_tuple:
if item >0:
print(item, end=' ')
결과)
10 100 600 50
#리스트 순회
'''
점수에 따라서 합격, 불합격 출력
'''
marks = [90, 25, 67, 45, 80]
count = 1
msg = ''
for item in marks:
if item >= 60 : msg = '합격'
else: msg = '불합격'
print(f' {count} 번 학생 {item} => {msg}')
count += 1
결과)
1 번 학생 90 => 합격
2 번 학생 25 => 불합격
3 번 학생 67 => 합격
4 번 학생 45 => 불합격
5 번 학생 80 => 합격
# for 문을 이용한 딕셔너리 순회
'''
for 키변수 in 딕셔너리:
명령문
for 키변수, 값변수 in 딕셔너리.items():
명령문
'''
myDict = {1:'일', 100:'백', 50:'오십', 1000:'천'}
# 값은 딕셔너리명[키]
for key in myDict:
print(f' key : {key} , value : {myDict[key]}')
for k, v in myDict.items():
print(f' key : {k} , value : {v}')
결과)
key : 1 , value : 일
key : 100 , value : 백
key : 50 , value : 오십
key : 1000 , value : 천
key : 1 , value : 일
key : 100 , value : 백
key : 50 , value : 오십
key : 1000 , value : 천
'''
중첩 리스트, 중첩 튜플 구조에서 데이터 순회
- 중첩 for문
- 단일 for문의 인덱스 변수를 여러개 사용
'''
# 중첩 for문을 이용한 데이터 순회 -> 인덱스로 접근
list_2d = [[1, 2],
['a', 'b'],
['홍길동', '춘향이']]
# for i in range(3) :
for i in range(len(list_2d)) :
print(i, list_2d[i])
결과)
0 [1, 2]
1 ['a', 'b']
2 ['홍길동', '춘향이']
행렬찾기
for i in range(len(list_2d)):
for j in range(len(list_2d[0])):
print(f'{i} 행 {j} 열 => {list_2d[i][j]}')
결과)
0 행 0 열 => 1
0 행 1 열 => 2
1 행 0 열 => a
1 행 1 열 => b
2 행 0 열 => 홍길동
2 행 1 열 => 춘향이
# 단일 for문의 인덱스 변수를 여러개 사용
# 뎅터 변수는 중첩 리스트안의 리스트안의 각각의 데이터가 저장된다.
for i, j in list_2d :
print(f' {i} , {j}')
print('='*10)
결과)
1 , 2
a , b
홍길동 , 춘향이
'''
Quiz 5
학생이름, 국어, 영어, 수학 으로 구성된 2차원 리스트를 생성하고
for 문을 이용하여 아래와 같이 출력하여라
stGradeList = [['김태희', 30, 50, 55],
['신민아', 50, 90, 80],
['박지민', 50, 90, 40],
['김소희', 60, 50, 56],
['윤준희', 90, 88, 66]]
'''
#1)성적 리스트 정의
stGradeList = [['김태희', 30, 50, 55],
['신민아', 50, 90, 80],
['박지민', 50, 90, 40],
['김소희', 60, 50, 56],
['윤준희', 90, 88, 66]]
#2) 제목 출력
print('='*50)
print(' 학생이름 국어 영어 수학 총점 평균 ')
print('='*50)
# 3) for 문으로 데이터 순회
for (st_name, kor, eng, math) in stGradeList :
print(f' {st_name} {kor} {eng} {math} {kor+eng+math} {((kor+eng+math)/3):.2f} ' )
print('\n\n')
결과)
==================================================
학생이름 국어 영어 수학 총점 평균
==================================================
김태희 30 50 55 135 45.00
신민아 50 90 80 220 73.33
박지민 50 90 40 180 60.00
김소희 60 50 56 166 55.33
윤준희 90 88 66 244 81.33
'''
Quiz 6
1) 학생 이름이 김으로 시작하는 데이터 만 출력하여라
2) 학생 이름이 희로 끝나는 데이타만 출력하여라
stGradeList = [['김태희', 30, 50, 55],
['신민아', 50, 90, 80],
['박지민', 50, 90, 40],
['김소희', 60, 50, 56],
['윤준희', 90, 88, 66]]
'''
print('='*40)
print(' 학생이름 국어 영어 수학 ')
print('='*40)
for (st_name, kor, eng, math) in stGradeList :
if '김' in st_name :
print(f' {st_name} {kor} {eng} {math} ' )
print('\n\n')
print('='*40)
print(' 학생이름 국어 영어 수학 ')
print('='*40)
for (st_name, kor, eng, math) in stGradeList :
if '희' in st_name :
print(f' {st_name} {kor} {eng} {math} ' )
print('\n\n')
결과)
========================================
학생이름 국어 영어 수학
========================================
김태희 30 50 55
김소희 60 50 56
========================================
학생이름 국어 영어 수학
========================================
김태희 30 50 55
김소희 60 50 56
윤준희 90 88 66
6. 리스트내포
'''
리스트 내포 (List comprehension)
[데이터 for ~ ]
[데이터 for ~ for ~ ]
[데이터 if ~ for ~ ], [데이터 for ~ if ~ ]
예제)
3단의 결과에서 -1 한 값으로 리스트 만들기
방식1) for 문 이용
num_list = []
for i in range(1, 10):
num_list.append((i*3)-1)
print(num_list)
결과)
[2, 5, 8, 11, 14, 17, 20, 23, 26]
방식2) 리스트 내포 이용
num_list2 = [ (i*3)-1 for i in range(1, 10) ]
print(num_list2)
'''
num_list = []
for i in range(1, 10):
num_list.append((i*3)-1)
print(num_list)
num_list2 = [ (i*3)-1 for i in range(1, 10) ]
print(num_list2)
결과)
[2, 5, 8, 11, 14, 17, 20, 23, 26]
cf) 아스키 코드 관련
# 아스키 코드 관련 내용
'''
알파벳 글자 => 아스키 코드 변환
chr(아스키 코드 숫자) => 글자
ord(글자) => 아스키 코드 숫자
ex1)
print(ord('A'), ord('a'))
결과) #65 97
print(chr(65), chr(97))
결과) # A a
print(ord('Z'), ord('z'))
결과) # 90 122
ex2)
A~Z 로 구성된 리스트 생성
alpha_list = []
for i in range(ord('A'), ord('Z')+1) :
alpha_list.append(chr(i))
print(alpha_list)
결과) ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J',
'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V',
'W', 'X', 'Y', 'Z']
'''
'''
중첩 for문이 삽입된 리스트 내포
구구단의 결과로 리스트 만들기
예제) 일반 풀이법
guguList1 = []
for i in range(2, 4):
for j in range(1,10):
guguList1.append(f' {i}X{j} = {i*j}')
print(guguList1)
결과)
[' 2X1 = 2', ' 2X2 = 4', ' 2X3 = 6', ' 2X4 = 8', ' 2X5 = 10', ' 2X6 = 12', ' 2X7 = 14', ' 2X8 = 16', ' 2X9 = 18', ' 3X1 = 3', ' 3X2 = 6', ' 3X3 = 9', ' 3X4 = 12', ' 3X5 = 15',
' 3X6 = 18', ' 3X7 = 21', ' 3X8 = 24', ' 3X9 = 27']
'''
'''
Quiz7
다음과 같은 형태로 리스트를 리스트내포 방식을 이용하여 생성하여라
['row1-col1', 'row1-col2', 'row1-col3', 'row1-col4’,
'row2-col1', 'row2-col2', 'row2-col3', 'row2-col4']
풀이1) 일반풀이
result_list1 = []
for i in range(1,3):
for j in range(1,5):
result_list1.append(f'row{i}-col{j}')
print(result_list1)
풀이2) 리스트내포 방식
result_list2 = []
result_list2 = [f'row{i}-col{j}' for i in range(1,3) for j in range(1,5)]
print(result_list2)
'''
'Python' 카테고리의 다른 글
12. 함수( 반환값, 매개변수, 람다함수, filter(), map()) (3) | 2024.10.08 |
---|---|
11. 함수 (정의, 매개변수, for문에서의 이용) (1) | 2024.10.08 |
9. 반복문(while문, 중첩 while문, 무한루프 while문) (0) | 2024.10.04 |
8. 제어문 (중첩 if문, 유효성 검사, in 과 not in 연산자) (13) | 2024.10.04 |
7. 제어문 ( if, elif, else) (1) | 2024.10.02 |