#ABC부트캠프 #유클리드소프트 #고용노동부 #대한상공회의소 #미래내일일경험사업 #인공지능 #파이썬 #머신러닝 #딥러닝
벌써 기술배움 2일차이자 부트캠프 4일차의 날이 밝았습니다!
오늘도 비는 왔지만 교육 끝나고 다른 교육을 가야 했기에 아버지 차를 뺏었습니다~~

그래서 자만했죠 여유있을 것이라고..
주차할 곳이 없을줄은 몰랐습니다..
일단 몇바퀴 돌아보다가 없어서 그냥 건물에 돈 낼생각으로 주차하고 달려갔네요..

오늘의 강의 내용
- 파이썬 데이터 타입과 연산자
- 시퀀스 데이터 타입
- 맵핑 데이터 타입
- 제어문
- if 조건문
- match
- 반복
먼저 어제 하다만 파이썬 데이터 타입과 연산자에서 시퀀스 데이터 타입에 대해 설명해 드리겠습니다.
시퀀스 데이터 타입이란?
- 1, '삼성'처럼 하나의 값이 아니라 여러개의 값을 묶으면 수열, 문자열이 생성
- 파이썬에서는 리스트, 튜플 형식으로 다룸
- 리스트 만들기
salary = [5000, 6000, 7000, 6000, 9000]
salary
>>>[5000, 6000, 7000, 6000, 9000]
- 리스트는 대괄호로 이루어져 있어요.
- 나중에 나오겠지만 소괄호와 중괄호는 다른 곳에서 사용되니 헷갈리지 않도록 주의!
- 형식(type) 확인
type(salary)
>>>list
- 위에서 만든 리스트 salary의 데이터 타입을 알아보기 위해서는 type()을 이용하여 확인할 수 있습니다.
- 리스트의 메서드(method) append() 활용
salary.append(10000) salary.extend([1,2,3])
salary
>>>[5000, 6000, 7000, 6000, 9000, 10000, 10000, 1, 2, 3]
- append는 값을 추가하는 함수이고 리스트 또한 값이기에 10000을 적어 넣으면 추가가 가능합니다.
- extend와 append의 차이점은 extend는 리스트의 각 요소를 개별적으로 추가하는 반면, append는 리스트 전체를 하나의 요소로 추가합니다.
- 인덱싱(indexing)
salary[0]
>>>5000
- 리스트의 첫 번째 요소를 가져오려면 인덱스를 사용합니다. 인덱스는 0부터 시작합니다.
- 슬라이싱(slicing)
salary[0:2]
>>>[5000, 6000]
- 리스트의 일부를 가져오려면 슬라이싱을 사용합니다. [시작인덱스:끝인덱스] 형식을 사용합니다. 끝 인덱스는 포함되지 않습니다.
- 값의 수정 (인덱스를 사용하여 리스트의 값을 수정할 수 있습니다.)
salary[2] = 50
salar
>>>[5000, 6000, 50, 6000, 9000, 10000, 10000, 1, 2, 3]
값의 삭제 (del 키워드를 사용하여 리스트의 값을 삭제할 수 있습니다.)
del salary[2]
salary
>>>[5000, 6000, 6000, 9000, 10000, 1, 2, 3]
[연습] 1~45까지 숫자 중에서 마음대로 6개 숫자 선택해서 리스트로 만들어 저장하기
ran_list = [2,14,16,28,42,45]
ran_list
>>>[2, 14, 16, 28, 42, 45]
[연습] 점심/저녁 메뉴 3개를 리스트로 묶어 menu로 저장하기
lunch = ["라멘", "우동", "짜장면"]
dinner = ["닭도리탕", "스테이크", "삼겹살"]
menu = []
menu.append(lunch)
menu.append(dinner)
menu
>>>[['라멘', '우동', '짜장면'], ['닭도리탕', '스테이크', '삼겹살']]
[연습] colors 변수에 저장된 리스트의 두 번째 요소를 "yellow"로 변경하세요.
- colors라는 리스트를 선언하고 값으로 ["red", "green", "blue"]를 할당하세요.
colors = ["red", "green", "blue"]
colors[1] = "yellow"
colors
>>>['red', 'yellow', 'blue']
[연습] animals 리스트에서 "dog"를 삭제하세요.
- animals라는 리스트를 선언하고 값으로 ["cat", "dog", "rabbit"]을 할당하세요.
animals = ["cat", "dog", "rabbit"]
del colors[1]
colors
>>>['red', 'blue']
[연습] letters 리스트의 처음 3개 요소와 마지막 3개 요소를 각각 출력하세요.
- letters라는 리스트를 선언하고 값으로 ['a', 'b', 'c', 'd', 'e', 'f', 'g']를 할당하세요.
letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
letters_list = []
letters_list.append(letters[0:3])
letters_list.append(letters[4:7])
letters_list
>>>[['a', 'b', 'c'], ['e', 'f', 'g']]
[연습] 두 리스트를 합쳐서 새로운 리스트 combined_list를 만들고 출력하세요.
- list1이라는 리스트를 선언하고 값으로 [1, 2, 3]을 할당하세요.
- list2라는 리스트를 선언하고 값으로 [4, 5, 6]을 할당하세요.
list1 = [1,2,3]
list2 = [4,5,6]
combined_list = []
combined_list.extend(list1)
combined_list.extend(list2)
combined_list
>>>[1, 2, 3, 4, 5, 6]
range( )를 활용한 수열 만들기
list = __builtins__.list
list(range(10))
>>>[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
- range를 활용하여 연속적인 수열을 만들 수 있습니다. range(start, stop[, step]) 형식을 사용합니다.
리스트의 다양한 연산자와 기능
연산자 in, not in
4 in [1,2,3,4]
>>>True
4 not in [1,2,3,4]
>>>False
- in 연산자는 값이 리스트에 포함되어 있는지 확인합니다.
- not in 연산자는 값이 리스트에 포함되어 있지 않은지 확인합니다.
메서드 min(), max(), index(), count()
# 예제 리스트
numbers = [1, 2, 3, 4, 4, 5, 6, 4]
# min() 예제
print(min(numbers)) # 출력: 1
# max() 예제
print(max(numbers)) # 출력: 6
# index() 예제
print(numbers.index(4)) # 출력: 3 (4가 처음 나타나는 위치)
# count() 예제
print(numbers.count(4)) # 출력: 3 (4가 리스트에 3번 나타남)
>>>
1
6
3
3
다차원 리스트 이해하기
lists = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
lists[1][2]
>>>
6
튜플
튜플 만들기
salary = (5000, 6000, 7000, 6000, 9000)
salary1 = 5000, 6000, 7000, 6000, 9000
salary[0]
salary[0:2]
>>>
(5000, 6000)
리스트와 유사하지만 수정이 불가하다!!
[연습] range( )와 list( )로 2002년부터 2023년까지 월드컵 개최연도 만들기
list(range(2002,2023,4))
>>>
[2002, 2006, 2010, 2014, 2018, 2022]
[연습] 첫 번째 행의 모든 요소와 세 번째 열의 모든 요소를 각각 출력하세요.
- matrix라는 2차원 리스트를 선언하고 값으로 [[1, 2, 3], [4, 5, 6], [7, 8, 9]]을 할당하세요.
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
matrix[0]
matrix[0][2],matrix[1][2],matrix[2][2]
>>>
(3, 6, 9)
맵핑 데이터 타입 (Mapping Types)
딕셔너리
딕셔너리는 키(key) 와 값(value) 을 연결한 쌍 을 활용해서 여러 값을 구분해서 저장
딕셔너리는 중괄호 { }를 활용하고 아래와 같은 방법으로 생성합니다.
{'key1':'value1', 'key2':'value2', 'key3':'value3', ...}
리스트가 연봉처럼 여러 관측치의 동일한 속성을 저장한다면, 딕셔너리는 하나의 대상에 대해서 키라고 부르는 여러 속성의 값을 저장합니다.
딕셔너리 생성 예
this_lecture = {'과정':'Python 기초', '도구':'Jupyter Notebook', '기간':'4일'}
this_lecture
>>>{'과정': 'Python 기초', '도구': 'Jupyter Notebook', '기간': '4일'}
대괄호와 키를 이용한 선택 (리스트의 인덱스 대신 키를 활용)
this_lecture['과정'] #여기서는 없는 키 값을 넣으면 오류가 남
>>>'Python 기초'
메서드 get()을 활용한 선택
this_lecture.get('과정') #여기서는 없는 키 값을 넣어도 오류가 나지는 않음
>>>'Python 기초'
쌍 추가
this_lecture['수강인원'] = 20
this_lecture
>>>{'과정': 'Python 기초', '도구': 'Jupyter Notebook', '기간': '4일', '수강인원': 20}
쌍제거
del this_lecture['기간']
this_lecture
>>>{'과정': 'Python 기초', '도구': 'Jupyter Notebook', '수강인원': 20}
키 목록 선택
this_lecture.keys()
type(this_lecture.values())
>>>dict_values
리스트 형식으로 변환
list(this_lecture.keys())
>>>['과정', '도구', '수강인원']
값 목록 선택
list(this_lecture.values())
>>>['Python 기초', 'Jupyter Notebook', 20]
연습 문제
- 각자 본인의 아래 정보를 딕셔너리로 저장
my_information = {'이름':'ABC', '나이':'24', '전공':'미래모빌리티학과','취미':'만들기'}
my_information
>>>{'이름': 'ABC', '나이': '24', '전공': '미래모빌리티학과', '취미': '만들기'}
점심식사
대충 중요
오늘은 구내식당에서 점심을 먹었답니다~


6000원의 알찬 구성
6000원에 이렇게 먹을 수 있다는게 가장 큰 메리트 인 것 같아요!
주차장 요금도 리셋할겸 차를 빼서 커피 한잔 하고 왔어요
주변 몇바퀴 돌면 주차할곳 한곳은 있을거라 생각했는데..

결국 기초과학연구원에 주차하고 걸어왔습니다..
이제 오후 수업도 화이팅!

Python 제어문
주요 내용
- Python 제어문의 이해 및 활용
- 예제 문제
목표
- 조건문을 이해하고 활용할 수 있다.
- 반복문을 이해하고 활용할 수 있다.
1. 제어문
1-1. if 조건문
- if 문을 활용하여 특정한 상황에서만 명령어를 실행할 수 있습니다.
- else나 elif를 추가로 활용하여 여러 조건을 처리할 수 있습니다.
if의 활용
score=90
if score >=80:
print('합격')
>>>합격
if와 else의 활용
score=10
if score >=80:
print('합격')
else:
print('탈락')
>>>탈락
if와 elif와 else의 활용
score = 90 # 결측
if score > 0:
print('미응시')
if score >=80:
if score == 100:
print('EX')
else:
print('합격')
else:
print('탈락')
>>>
미응시
합격
[연습] 사용자로부터 입력받은 변수 score의 성적을 출력하세요
- 90 이상: "A"
- 80 이상: "B"
- 70 이상: "C"
- 60 이상: "D"
- 60 미만: "F"
score = int(input("점수를 입력하세요: "))
if score < 60:
print('F')
elif score <= 60 and score < 70:
print('D')
elif score <= 70 and score < 80:
print('C')
elif score <= 80 and score < 90:
print('B')
else:
print('A')
>>>
점수를 입력하세요: 92
A
[연습] 사용자로부터 입력받은 변수 num이 짝수인지 홀수인지 판별하여 결과를 출력하세요.
입력한 수는 14이며, 짝수로 판별되었습니다.
score = int(input("점수를 입력하세요: "))
if score < 60:
print('F')
elif score <= 60 and score < 70:
print('D')
elif score <= 70 and score < 80:
print('C')
elif score <= 80 and score < 90:
print('B')
else:
print('A')
>>>
점수를 입력하세요: 92
A
[연습] 사용자로부터 입력받은 변수 num이 양수, 음수, 0인지 판별하여 결과를 출력하세요.
입력한 수는 14이며, 양수로 판별되었습니다.
num = int(input('input number:'))
print(1 + 1)
if num > 0:
msg = "입력한 수는 {}이며, {}로 판별되었습니다.".format(num, '양수')
print(msg)
elif num < 0:
print("입력한 수는 %d이며, %s로 판별되었습니다." % (num, '음수'))
else:
print("입력한 수는 0이며, 0로 판별되었습니다.")
>>>
input number: 0
입력한 수는 0이며, 0로 판별되었습니다.
[연습] 사용자로부터 입력받은 년도 year이 윤년인지 확인하세요.
윤년 조건: 연도가 4로 나누어떨어지지만, 100으로 나누어떨어지지 않거나 400으로 나누어떨어지는 경우.
input_year = int(input('년도를 입력해주세요'))
if (input_year % 4) == 0 and (input_year % 100 != 0 or input_year % 400 == 0):
print('윤년입니다.')
else:
print('x')
>>>
년도를 입력해주세요2002
x
1-2. match
match는 반복적인 == 연산을 보다 쉽게 수행할 수 있게 해줍니다
num = 1
match num:
case 1:
print('1번 선택')
case 2:
print('2번 선택')
case 3:
print('3번 선택')
case _:
print('잘못된 입력입니다.')
>>> 1번 선택
[연습] 사용자로부터 입력받은 연산을 수행하는 match문을 하고 결과를 출력하시오.
- 입력예시: 3 + 2
- 모든 입력은 공백을 단위로 구분
- 오직 한자리 양수, 사칙연산(+,-,*,/)만 입력가능
input_str = input('연산을 입력해주세요')
# input_str = '3 + 2'
input_list = input_str.split()
operator_str = input_list[1]
operand_left = int(input_list[0])
operand_right = int(input_list[2])
match operator_str:
case '+':
result = operand_left + operand_right
case '-':
result = operand_left - operand_right
case '*':
result = operand_left * operand_right
case '/':
result = operand_left / operand_right
print(result)
>>>
연산을 입력해주세요1 + 6
7
1-3. 반복문
for와 while 문은 반복 대상을 지정하고 특정한 명령을 반복 실행합니다.
원하는 행위를 반복할 수 있습니다.
print(1)
print(2)
print(3)
for i in range(1,4):
print(i)
for i in [1,2,3]:
print(i)
모두 결과는 1 2 3
간단한 for 예제
total = 0
for i in [11,12,13]:
total += i
print(f'합계는 {total}입니다.')
>>> 합계는 36입니다.
for문 안에서 if 문을 활용
m2 = []
input_list = list(range(1,101))
# print(input_list)
for a in [1, 2, 3, 4, ..., 100]:
if a % 7 == 0: # 7로 나눈 나머지가 0이면
m2.append(a)
m2
>>>[7, 14, 21, 28, 35, 42, 49, 56, 63, 70, 77, 84, 91, 98]
result = 0
for i in list(range(1, 101)):
if i % 7 == 0:
result += i
print(result)
>>> 735
for문과 컬렉션
딕셔너리와 같은 컬렉션 타입을 반복문에서 사용할 수 있습니다.
my_info = {'이름': '홍길동', '나이': 30, '지역': '서울'}
# 이름: 홍길동
# 나이: 30
# 지역: 서울
for key in list(my_info.keys()):
print(my_info[key])
user = {'이름': '홍길동', '나이': 30, '지역': '서울'}
for key, value in [('이름', '홍길동'), ('나이', 30), ('지역', '서울')]:
print(f"{key}: {value}")
>>>
홍길동
30
서울
이름: 홍길동
나이: 30
지역: 서울
강제 반복제어 (break, continue)
for x in [1, 2, 3, 4, 5]:
if x % 2 == 0:
break
print(x)
>>> 1
[참고] []와 for, if의 활용
리스트를 만드는 [] 안에서 for와 if를 활용할 수도 있음
리스트 축약
m2 = [x for x in [1, 2, 3, 4, 5] if x % 2 == 0]
m2 = []
for x in [1,2,3,4,5]:
if x % 2 == 0:
m2.append(x * 2)
>>>[2, 4]
while 반복문
num = 1
while num < 5:
print(num)
num += 1
>>>
1
2
3
4
[연습] for문을 사용하여 리스트의 모든 요소를 출력하세요.
- fruits라는 리스트를 선언하고 값으로 ["apple", "banana", "cherry"]를 할당하세요.
fruits = ["apple", "banana", "cherry"]
for i in range(3):
print(fruits[i])
>>>
apple
banana
cherry
[연습] while 문을 사용하여 리스트의 모든 요소를 출력하세요.
- fruits라는 리스트를 선언하고 값으로 ["apple", "banana", "cherry"]를 할당하세요.
fruits = ["apple", "banana", "cherry"]
i = 0
while i<3:
print(fruits[i])
i += 1
>>>
apple
banana
cherry
[연습] for문을 사용하여 아래 조건에 부합하는 출력을 수행하시오.
- 1부터 10까지의 양수 출력
- 1부터 100사이의 3의 배수 출력
list1_to_10 = []
list1_to_100_in_3 = []
for i in range(1,11):
list1_to_10.append(i)
print(list1_to_10)
for a in range(3,101,3):
list1_to_100_in_3.append(a)
print(list1_to_100_in_3)
>>>
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 93, 96, 99]
[연습] 35이상 87이하의 양의정수의 합계를 구하여 출력하시오.
total = 0
for i in range(35,88):
total += i
print(total)
>>>3233
[연습] 주어진 리스트에서 값이 10인 요소를 찾고, 해당 값의 인덱스를 출력하시오. 값이 없다면 "찾을 수 없음"을 출력하시오.
lst = [3, 5, 7, 10, 14, 20]
found = False
for idx, val in enumerate(lst):
if val == 10:
print(f'인덱스: {idx}')
found = True
break
if not found:
print('찾을 수 없음')
# 결과:
# 인덱스: 3
[연습] 주어진 리스트에서 값이 30이상인 값은 '우수'란 텍스트 값으로 변경하시오
- scores는 10, 35, 20, 28, 13, 18, 27, 45 의 리스트로 선언하시오.
scores = [10, 35, 20, 28, 13, 18, 27, 45]
for i in range(len(scores)):
if scores[i] >= 30:
scores[i] = '우수'
print(scores)
>>> [10, '우수', 20, 28, 13, 18, 27, '우수']
[연습]
- 구구단 19단 출력하기
- 19 X 1 = 19
- 19 X 2 = 38 ...
- 구구단 2단부터 9단까지 출력하기
- 아래의 숫자 리스트 x 에서 10 이상인 숫자만 따로 모아 합계 계산하기
- x = [6, 1, 15, 2, 90, 35, 9]
for i in range(1,10):
print("19 X {} = {}".format(i,19*i))
for i in range(1,10):
print("{}단".format(i))
for x in range(1,10):
print("{} X {} = {}".format(i,x,i*x))
x = [6, 1, 15, 2, 90, 35, 9]
resualt = 0
for i in range(1,7):
if x[i] >= 10:
resualt += x[i]
print(resualt)
>>>
19 X 1 = 19
19 X 2 = 38
19 X 3 = 57
19 X 4 = 76
19 X 5 = 95
19 X 6 = 114
19 X 7 = 133
19 X 8 = 152
19 X 9 = 171
1단
1 X 1 = 1
1 X 2 = 2
1 X 3 = 3
1 X 4 = 4
1 X 5 = 5
1 X 6 = 6
1 X 7 = 7
1 X 8 = 8
1 X 9 = 9
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
140
[연습] for문을 사용하여 리스트에서 가장 큰 값을 찾고 출력하세요.
numbers라는 리스트를 선언하고 값으로 [10, 20, 4, 45, 99, 18]을 할당하세요.
# numbers 리스트 선언
numbers = [10, 20, 4, 45, 99, 18]
# 가장 큰 값을 저장할 변수를 초기화
max_value = numbers[0]
# for문을 사용하여 리스트의 모든 요소를 확인
for num in numbers:
# 현재 요소가 max_value보다 크면 max_value를 갱신
if num > max_value:
max_value = num
# 가장 큰 값 출력
print("리스트에서 가장 큰 값은:", max_value)
>>> `리스트에서 가장 큰 값은: 99
[연습] 아래의 별을 출력하는 반복문을 구성하시오.
*
**
***
****
*****
*****
****
***
**
*
*
**
***
****
*****
i = 1
x = 0
z = 0
for i in range(5):
i += 1
print(i*"*")
print("\n")
for i in range(5):
i = 5 - i
print(i*"*")
print("\n")
for x in range(5):
x = 5 - x
z += 1
print(x*" ","*"*z)
>>>
*
**
***
****
*****
*****
****
***
**
*
*
**
***
****
*****
자료형
데이터를 저장할 때 사용하는 자료형은 다양합니다. 주요 자료형과 그 특징을 살펴보겠습니다.
숫자형
x = 10 # 정수
y = 10.5 # 실수
print(type(x), type(y))
# 결과:
# <class 'int'> <class 'float'>
문자열
s = "Hello, World!"
print(s)
# 결과:
# Hello, World!
리스트
lst = [1, 2, 3, 4, 5]
print(lst)
# 결과:
# [1, 2, 3, 4, 5]
튜플
t = (1, 2, 3, 4, 5)
print(t)
# 결과:
# (1, 2, 3, 4, 5)
딕셔너리
d = {'name': 'Alice', 'age': 25}
print(d)
# 결과:
# {'name': 'Alice', 'age': 25}
집합
s = {1, 2, 3, 4, 5}
print(s)
# 결과:
# {1, 2, 3, 4, 5}
오늘은 여기까지 입니다~~ 내일도 파이썬으로 찾아 오겠습니다.

'ABC부트캠프' 카테고리의 다른 글
[6일차] ABC 부트캠프 : 파이썬프로그래밍4 (24.07.11) (1) | 2024.07.12 |
---|---|
[5일차] ABC 부트캠프 : 파이썬프로그래밍3 (24.07.10) (1) | 2024.07.12 |
[3일차] ABC 부트캠프 : 파이썬프로그래밍1 (24.07.08) (0) | 2024.07.09 |
[2일차] ABC 부트캠프 : ESG 포럼&세미나 (24.07.05) (0) | 2024.07.08 |
[1일차] ABC 부트캠프 : 4기 시작 ~ (24.07.04) (1) | 2024.07.07 |