한 줄로 표현하기
print( 이진수변환, end = ' ')
0b1101001100001100 0b1100011101110100 0b1100001101101100
a = "사랑해요, 파이썬! "
a[0:3:1] 0~3까지 1씩 증가
'사랑해'
a[:3] 처음부터(생략)~3까지
'사랑해'
count() 문자 개수 세기
find() 위치를 알려줘
index()
join()
upper() 소문자를 대문자로
lower() 대문자를 소문자로
strit() 공백 지우기
replace()
split()
[퀴즈]
문자열을 입력하세요: 사랑해요 파이썬!
!썬이파 요래랑사
s = input('문자열을 입력하세요:')
print(s[::-1])
[퀴즈]
split() 함수로 파일명과 확장자 분리하기
fname = input('파일을 입력하세요: ')
print(f'입력한 파일: {fname}')
a = fname.split('.')
print(f'파일명: {a[0]}, 확장자: {a[1]}')
[실습 문제]: 지불할 음식 총 가격 계산하기
[풀이]
meal = 4450 # 1.음식가격
tax = 0.0675 # 2.세금
tip = 0.15 # 3.팁
print(f'순수 세금: {meal*tax}')
meal = meal + (meal * tax) # 4. 음식가격
total = meal + (meal * tip) # 5. 팁 적용한 총 금액
print(f'팀 금액: {meal * tip}')
print(f'내가 지불해야 할 총 금액: {round(total,2)}')
주로 조건문이나 반복문에서 사용, 단독으로는 거의 사용하지 않음
원소의 구성 여부를 확인하는 연산자
결과값의 자료형은 bool형 (True 혹은 False)
in
not in
iterables
list, dict, set, str, bytes... 반복되서 꺼내올 수 있는 객체
[실습문제] 동전 교환 프로그램 만들기
몫과 나머지 이용
[풀이]
print('---동전교환기 프로그램을 작동합니다.---')
money = int( input('금액을 입력하세요: '))
print('동전으로 교환하겠습니다.---------')
print(f"500원짜리 ==> {money // 500}개")
money %= 500 # money = money % 500
print(f"100원짜리 ==> {money // 100}개")
money %= 100
print(f"50원짜리 ==> {money // 50}개")
money %= 50
print(f"10원짜리 ==> {money // 10}개")
money %= 10
print(f"잔돈 ==> {money}원")
여러개의 데이터 값을 하나의 변수에 담을 수 잇는 데이터 구조
인덱스가 있고 데이터를 수정, 삭제, 추가 가능하다
[ ] 대괄호로 표현되고 내부 원소는 ,(쉼표)로 구분됨
range() : 정수를 순차적으로 만들어주는 함수
print(list(range(10))) # 정수를 순차적으로 만들어주는 함수
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
기사 = '''오늘 남부지방과 제주도는 대체로 흐린 가운데 비가 내리겠습니다.
예상 강수량은 영남 해안 지역이 30에서 80mm, 많은 곳은 100mm 이상이고, 그 밖의 남부지방과 제주도는 10에서 60mm입니다.
비가 오는 동안 천둥·번개가 치고, 한 시간에 30mm가 넘는 강한 비가 쏟아지는 곳이 있겠습니다.
남부지방과 제주도의 비는 내일 오전까지 계속되는 곳이 있겠습니다.
오늘 중부지방은 가끔 구름이 많이 끼는 가운데 오후에 5에서 30mm의 소나기가 오는 곳이 있겠습니다.
낮 최고기온은 서울 33도 등 전국이 26도에서 34도로 어제와 비슷하거나 조금 더 높겠습니다.
바다의 물결은 남해 먼바다와 제주도 해상에서 최고 2.5m로 비교적 높게 일겠습니다.
동해안과 경남 남해안에는 높은 너울이 밀려오는 곳이 있겠고, 동해상에는 짙은 안개가 끼는 곳이 있겠습니다.
'''
기사 = 기사.replace('남부지방', '중부지방') # 단어 다른 단어로 대체
print(기사)
result = 기사.split(' ') # ' '로 분리해서 리스트로 반환
print(f'리스트의 요소 개수(길이): {len(result)} ')
print(result)
colors = ['pink', 'sky blue', ['white', 'purple'], 'black']
print( colors[1] )
print( colors[2] )
print( colors[2][1] )
# 2차원 배열이다
[출력]
sky blue
['white', 'purple']
purple
colors = ['pink', 'sky blue', ['white', 'purple'], 'black']
print(colors)
colors.append('ivory') # 리스트 맨 끝에 추가
print(colors)
colors.insert(1, 'mint') # 리스트명.insert(인덱스위치, 값)
print(colors)
colors[3].insert(1, 'dark blue')
print(colors)
colors.append(['orange', 'yellow', 'green'])
print(colors)
[출력]'pink', 'sky blue', ['white', 'purple'], 'black']
['pink', 'sky blue', ['white', 'purple'], 'black', 'ivory']
['pink', 'mint', 'sky blue', ['white', 'purple'], 'black', 'ivory']
['pink', 'mint', 'sky blue', ['white', 'dark blue', 'purple'], 'black', 'ivory']
['pink', 'mint', 'sky blue', ['white', 'dark blue', 'purple'], 'black', 'ivory', ['orange', 'yellow', 'green']]
colors = ['red', 'light green', 'green', 'e', 'l', 'l', 'o']
print(colors)
del colors[3] # 특정 위치 요소 제거
print(colors)
colors.remove('l') # 특정 값 제거
print(colors)
colors.pop() # 맨 뒤의 요소 제거
print(colors)
쌍이 하나로 묶인 자료구조
{key : value} 구성
순서(sequence)가 없다
members = {} # 빈 딕셔너리
members = dict() # 빈 딕셔너리
print(type(members),members)
members = {'name':'진', 'age':29, 'email':'jin@gggmail.com'}
print(type(members),members)
print(members['age']) # 키로 값 찾기
print(members.get('age')) # get() 함수 사용
members[7] = ['정국', '뷔', '지민'] # 딕셔너리에 요소 추가: 새로운 키(key): 값(value) 추가
print(members)
[출력]
<class 'dict'> {}
<class 'dict'> {'name': '진', 'age': 29, 'email': 'jin@gggmail.com'}
29
29
{'name': '진', 'age': 29, 'email': 'jin@gggmail.com', 7: ['정국', '뷔', '지민']}
scores = {'국어': 100, '수학': 90, '영어': 80}
print(scores['국어']) # 딕셔너리는 키로 접근한다.
# 방법1
print('---방법1---')
for key in scores:
# print('%s => %s' % (key, scores[key]))
print(f'{key} => {scores[key]}')
print(scores.items()) # (키,값)의 리스트 형태로 반환하는 함수
# 방법2
print('---방법2---')
for (key, value) in scores.items():
# print('%s => %s' % (key, value))
print(f'{key} => {value}')
[출력]
100
---방법1---
국어 => 100
수학 => 90
영어 => 80
dict_items([('국어', 100), ('수학', 90), ('영어', 80)])
---방법2---
국어 => 100
수학 => 90
영어 => 80
scores = {'국어': 100, '수학': 90, '영어': 80}
# 키로 요소 추가하기
scores['music'] = 100
print(scores)
# 요소 값 수정하기
scores['수학'] = 99
print(scores)
# 요소 삭제하기
del (scores['영어'], scores['music'])
print(scores)
[출력]
{'국어': 100, '수학': 90, '영어': 80, 'music': 100}
{'국어': 100, '수학': 99, '영어': 80, 'music': 100}
{'국어': 100, '수학': 99}
JSON 이 다 딕셔너리 형태로 되어 있다
한번 보고 갈까요~?
https://www.data.go.kr/
리스트와 형태 거의 유사
대괄호[ ] 대신 소괄호( )를 사용한다
수정과 추가가 불가하다. 원본을 그대로 유지하고 싶을때 사용
소괄호( ) 생략 가능, 항목이 하나인 튜플은 뒤에 심표 붙임
Q. 이걸 왜 사용할까?
대량의 데이터 사용시
메모리 적게 사용, 속도도 빠름
a = tuple() # 빈 튜플 생성
a = () # 빈 튜플 생성
print(type(a))
a = ('사과',) # 튜플에 요소 1개를 정의할 때느 반드시, 사용
print( type(a), a)
a = (1, 2, 3, 4, 5)
print( type(a), a)
print(a[3])
print(a[:3])
a[3] = 44 # 튜플의 요소를 변경하거나 추가할 수 없다.
[출력]
<class 'tuple'>
<class 'tuple'> ('사과',)
<class 'tuple'> (1, 2, 3, 4, 5)
4
(1, 2, 3)
집합 자료는 키만 모아 놓은 딕셔너리의 특수한 형태
딕셔너리의 키는 중복되면 안 되므로 세트에 들어 있는 값은 항상 유일
세트를 생성하려면 딕셔너리처럼 중괄호{} 사용하지만 : 없이 값을 입력
중복된 키는 자동으로 하나만 남음!!
# 집합에서는 중복된 데이터를 배제시킬 수 있다.
fruits = ['사과', '바나나', '사과', '포도', '귤', '귤']
a = list(set(fruits))
a.sort() # '가나다라~' 순으로 정렬
print(a)
[출력]['귤', '바나나', '사과', '포도']