4장 반복문
1. 리스트와 반복문
1) for 반복문
a = [[1,2,3],[4,5,6],[7,8,9],10]
for i in a:
if type(i) == list:
for j in i:
print(j)
else:
print(i)
이중 포문에 대한 이해 필요
2) append() 함수와 전개 연산자의 차이
append() : 파괴적 처리 (원본 수정 가능)전개 연산자 : 비파괴적 처리 (원본 수정 안 됨)
3) 문제 213p
* 1번부터 2번까지
# 문제 3-1번
numbers = [273, 103, 5, 32, 65, 9, 72, 800, 99]
for number in numbers:
if number % 2 == 1:
print(number, "는 홀수")
else:
print(number, "는 짝수")
* 3번 문제 // 홀수, 짝수, 자릿수 출력
* 4번 문제 // 리스트 함수에서 원하는 번호만 출력
0,1,2를 이해하기
0에 해당 하는 것만 뽑아라
1에 해당 하는 것만 뽑아라
* 5번 문제 // 적절한 j값 입력하기 & 리스트의 특정 부분 제곱하기
# 문제 5번 # format 방법
numbers = [1,2,3,4,5,6,7,8,9]
for i in range(0, len(numbers) // 2):
# // 는 반복 횟수를 의미함
# j가 1,3,5,7이 나오려면
# 어떤 식을 사용해야 할까요?
j = i*2+1
print("i={}, j={}".format(i,j))
# 왼쪽에 i를 넣으면 리스트 전체 제곱
# j만 넣으면 j만 제곱
numbers[j] = numbers[j] **2
print(numbers)
4) 딕서녀리와 반복문
* 생성부터 추가, 제거까지
* 딕셔너리의 문법 차이 (get과 일반적인 표현)
get을 사용하면 None라고 출력됨
5) 딕셔너리 문제 227p
* 1번~ 2번 문제
# 1번 문제 227p
dict_a = {
"name" : "구름"
}
print(dict_a)
# 1-2번 문제 227p
dict_a = {
"name" : "구름"
}
del dict_a["name"]
print(dict_a)
# 2번 문제
pets = [
{"name": "구름", "age": 5},
{"name": "초코", "age": 3},
{"name": "아지", "age": 1},
{"name": "호랑이", "age": 1}
]
print("# 우리 동네 애완 동물들")
for i in pets:
print("{} {}살".format(i["name"],i["age"]))
# 출력 결과 구름 5살, 초코 4살, ...
# 2번 문제 (format 안쓰고)
pets = [
{"name": "구름", "age": 5},
{"name": "초코", "age": 3},
{"name": "아지", "age": 1},
{"name": "호랑이", "age": 1}
]
print("# 우리 동네 애완 동물들")
for i in pets:
print(i["name"], str(i["age"])+"살")
# 출력 결과 구름 5살, 초코 4살, ...
* 3번
* 4번
# 문제 4번 chatgpt
# 조건
# type("문자열") is str
# type([]) is list
# type({}) is dict
character = {
"name" : "기사",
"level" : 12,
"items" : {
"sword" : "불꽃의 검",
"armor" : "풀플레이트"
},
"skill": ["베기", "세게 베기", "아주 세게 베기"]
}
# 사전 "문자"에서 각 키-값 쌍을 반복합니다
for key, value in character.items():
# 키 값이 dict인지 확인합니다
if isinstance(value, dict): # true,false를 반환하는 함수
# 그렇다면 내부 사전의 각 키-값 쌍을 반복합니다
for inner_key, inner_value in value.items():
# 서식을 사용하여 내부 키 및 값 인쇄
print("{} : {}".format(inner_key, inner_value))
# 키 값이 목록인 경우
elif isinstance(value, list):
# 목록의 각 항목을 반복합니다
for item in value:
# 서식을 사용하여 키 및 항목 인쇄
print("{} : {}".format(key, item))
# 키 값이 사전이나 목록이 아닌 경우
else:
# 서식을 사용하여 키 및 값 인쇄
print("{} : {}".format(key, value))
# 출력결과
# name : 기사
# level : 12
# sowrd : 불꽃의 검
# armor : 풀플레이트
# skill : 베기
# skill : 세게 배기
# skill : 아주 세게 배기
character = {
"name" : "기사",
"level" : 12,
"items" : { # 키를 가져 오는 것 (dict 값을 통해서 가져와야 함)
"sword" : "불꽃의 검",
"armor" : "풀플레이트"
},
"skill": ["베기", "세게 베기", "아주 세게 베기"]
}
# 사전의 키를 몇 번이고 반복합니다
for i in character:
# 키와 관련된 값이 사전인 경우 // items - sowrd & items - armor
if type(character[i]) is dict: # (딕셔너리 안의 요소가 딕셔너리인 경우)
# 사전의 키와 값을 반복합니다
for j in character[i]: # j는 dict의 키
# 키와 값을 인쇄합니다
print(j, ":", character[i][j])
# 키와 연결된 값이 목록인 경우 (딕셔너리 안의 요소가 리스트인 경우) // skill
elif type(character[i]) is list:
# 목록의 항목을 반복합니다
for k in character[i]:
print(i,":",k) # k는 리스트 값
# 키와 관련된 값이 사전이나 목록이 아닌 경우 (딕셔너리 안의 요소가 나머지인 경우) // name, level
# 문자열인지 확인
else:
print(i,":",character[i])
# 1. 경우가 몇개 있는지 확인하고 if를 생각한다
# 2. 경우를 설정할 때 마다 하위 카테고리의 이름(key)을 생각한다
# 3. 딕셔너리 - 리스트 - 나머지 순서로 생각
# 4. if에서 카테고리 생각 // for에서 키값 생각
6) 범위 자료형과 while 반복문
* range
range(A,B,C) : A는 시작번호, B는 끝번호, C는 간격
# 3) range(A,B,C) : A 시작번호 B 끝번호 C: 간격
for i in range(1,5,2): # 1,3
print(i)
# 리스트와 범위를 함께 사용
a = [1,23,14,5,7]
for i in range(len(a)):
print("{}번째 값: {}".format(i,a[i]))
for i in range(4,0-1,-2):
print(i)
# 함수 이용
for i in reversed(range(5)):
print(i)
7) 별표 예제
* 정방향 피라미드 1 (반만)
# 피라미드 만들기 1
a = ""
for i in range(1,9+1):
for j in range(0,i):
a += "*"
a += "\n"
print(a)
* 반방향 피라미드 2 (반만)
# 피라미드 만들기 2
a = ""
for i in range(1,15):
for j in range(i, 15):
a += ' '
for k in range(0,i*2-1):
a+= "*"
a+="\n"
print(a)
8) while문
# 상태를 기반으로 반복
# 리스트에 원하는 값이 있는 동안
a = [1,3,5,3,1,5,3]
value = 3
while value in a:
a.remove(value)
print(a)
* 핵심
- for문,if문 이용해서 dict, list 사용법 숙지하기
* 링크 (직접 글 쓴 당사자만 확인 가능 // 계정 이동해서 확인하기)
Google Colaboratory Notebook
Run, share, and edit Python notebooks
colab.research.google.com
'배운 책들 정리 > 혼자 공부하는 파이썬' 카테고리의 다른 글
혼자 공부하는 파이썬 5 - 함수 만들기, 함수의 활용 (1) | 2023.04.17 |
---|---|
혼자 공부하는 파이썬 4 - 문자열, 리스트, 딕셔너리와 관련된 기본 함수(while,range,reversed,enumerate,Counter 등등) (0) | 2023.04.14 |
혼자 공부하는 파이썬 2,3,4 - 숫자와 문자열의 다양한 기능, 조건문, 반복문 (0) | 2023.04.11 |
혼자 공부하는 파이썬 2 - 자료형(변수) (0) | 2023.03.28 |
혼자 공부하는 파이썬 1,2 - 파이썬 시작하기, 자료형 (1) | 2023.03.27 |