[Python] 나도코딩 기본편 - (2)
Updated:
유튜브 나도코딩 무료 강의를 통해 학습한 내용을 정리해서 올리고 있습니다.
실습과정에서 필요에 따라 일부 강의 내용의 누락 및 추가, 수정사항이 있습니다.
퀴즈의 경우, 유튜브 풀이와 상이할 수 있습니다.
문자열
sentence3 = """
나는 소년이고,
파이썬은 쉬워요.
"""
print(sentence3)
나는 소년이고,
파이썬은 쉬워요.
""" """
사이에 문자열을 쓰면 줄 띄어쓰기가 가능하다.
슬라이싱
jumin = "901010-1210210"
print("성별: " + jumin[7])
print("출생년도: " + jumin[0:2]) # 0~1
print("출생년도: " + jumin[:2]) # 0~1
print("뒷자리: " + jumin[7:]) # 7index부터 끝까지
print("뒷자리: " + jumin[-7:])
성별: 1
출생년도: 90
출생년도: 90
뒷자리: 1210210
뒷자리: 1210210
-
파이썬 슬라이싱에서 시작은 0부터 시작하며, 끝은 -1부터 시작한다.
-
슬라이싱시 마지막 인덱스는 포함하지 않는다.
문자열 처리 함수
b = "kkdkD"
print("소문자: " + b.lower())
print("대문자: " + b.upper())
print("길이: " + str(len(b)))
print("글자 대체: " + b.replace("D", "ID"))
print("첫 번째 k 위치:", b.index("k"))
print("시작 위치 지정 후 k 위치:", b.index("k",2))
# find는 없으면 -1, index는 없으면 error
print(b.find("f",2))
# print(b.index("f",2))
print("글자 수:", b.count("k"))
소문자: kkdkd
대문자: KKDKD
길이: 5
글자 대체: kkdkID
첫 번째 k 위치: 0
시작 위치 지정 후 k 위치: 3
-1
글자 수: 3
find()
는 찾는 문자가 없으면 -1을 반환하고index()
는 에러가 발생한다.
문자열 포맷
# 방법 1
print("나는 %d살입니다." % 20) # 정수
print("나는 %s를 좋아해요." % "파이썬") # 문자
print("나는 %c를 좋아해요." % "A")
print("나는 %s색과 %s색을 좋아해요." % ("파란","초록"))
# 방법 2
print("나는 {}살입니다." .format(20))
print("나는 {}색과 {}색을 좋아해요." .format("파란","초록"))
print("나는 {1}색과 {0}색을 좋아해요." .format("파란","초록"))
# 방법 3
print("나는 {age}살이고 {color}색을 좋아해요." .format(age = 20, color = "파란"))
# 방법 4
age = 20
color = "파란"
print(f"나는 {age}살이고 {color}색을 좋아해요.")
나는 20살입니다.
나는 파이썬를 좋아해요.
나는 A를 좋아해요.
나는 파란색과 초록색을 좋아해요.
나는 20살입니다.
나는 파란색과 초록색을 좋아해요.
나는 초록색과 파란색을 좋아해요.
나는 20살이고 파란색을 좋아해요.
나는 20살이고 파란색을 좋아해요.
- 문자열 포맷 방법은 여러가지가 있지만 f 스트링 방식이 보다 직관적이어서 편하다.
탈출 문자
# \ 뒤를 문자로 인식
print("저는 \"파이썬 사용자\"입니다.")
print("C:\\Users\\Name")
# \n : 줄 바꿈
print("백문이 불여일견 \n백견이 불여일타")
# \r : 커서를 맨 앞으로 이동
print("Red Apple\rPine")
print("Red a b\rPine")
# \b : 백 스페이스 (한 글자 삭제)
print("Redd\bApple")
# \t : 탭
print("Red\tApple")
저는 "파이썬 사용자"입니다.
C:\Users\Name
백문이 불여일견
백견이 불여일타
Pine
Pine
ReddApple
Red Apple
Quiz 3
사이트별로 비밀번호를 만들어 주는 프로그램을 작성하시오
예) http://naver.com
- 규칙 1: http:// 부분은 제외 => naver.com
- 규칙 2: 처음 만나는 점(.) 이후 부분은 제외 => naver
- 규칙 3: 남은 글자 중 처음 세자리 + 글자 갯수 + 글자 내 ‘e’ 갯수 + “!”로 구성
답: nav51!
url = "http://naver.com"
url_2 = url.replace("http://", "")
url_3 = url_2[0:url_2.find(".")]
password = url_3[0:3] + str(len(url_3)) + str(url_3.count("e")) + "!"
print(f"{url}의 비밀번호는 {password} 입니다.")
http://naver.com의 비밀번호는 nav51! 입니다.
리스트 [ ] 튜플 () 집합{ } 사전{ }
-
리스트 [ ]: append, insert, pop, sort, reverse, clear, extend
-
튜플 ( ): 수정이 안되지만 리스트보다 빠름 / 여러 튜플 동시 설정 가능
-
집합 { }: 중복x, 순서x / 교집합 & interaction / 합집합 union / 차집합 - difference / add remove - 사전 {key,value}: key, value, items, get(key, “출력문”), del, clear
리스트 [ ]
subway = ["유재석", "조세호", "박명수"]
# 인덱스 위치
print(subway.index("조세호"))
# 데이터 추가
subway.append("하하")
print(subway)
# 데이터 중간 삽입
subway.insert(1, "정형돈")
print(subway)
# 데이터 제거
subway.pop(3)
print(subway)
# 데이터 수 확인
subway.append("유재석")
print(subway.count("유재석"))
# 정렬
subway.sort()
print(subway)
# 내림차순
subway.reverse()
print(subway)
# 다양한 자료형 함께 사용
n_list= [1,2,3]
m_list= ["김","나",3]
# 리스트 합치기
n_list.extend(m_list)
print(n_list)
# 모두 지우기
subway.clear()
print(subway)
1
['유재석', '조세호', '박명수', '하하']
['유재석', '정형돈', '조세호', '박명수', '하하']
['유재석', '정형돈', '조세호', '하하']
2
['유재석', '유재석', '정형돈', '조세호', '하하']
['하하', '조세호', '정형돈', '유재석', '유재석']
[1, 2, 3, '김', '나', 3]
[]
사전 { }
cabinet = {3:"유재석", 100:"김태호"}
print(cabinet[3]) # 값이 없는 경우 에러
print(cabinet.get(3)) # 값이 없는 경우 None 이라고 나옴
print(cabinet.get(5,"값이 없습니다.")) # 값이 없는 경우 나오는 값 설정
print( 3 in cabinet) # true false
# 사전 데이터 갱신
cabinet[3] = "김종국" # 갱신
cabinet[5] = "조세호" # 추가
del cabinet[3] # 삭제
# 출력
print(cabinet.keys()) # 키 출력
print(cabinet.values()) # 값 출력
print(cabinet.items()) # 함께 출력
# 데이터 제거
cabinet.clear()
print(cabinet)
유재석
유재석
값이 없습니다.
True
dict_keys([100, 5])
dict_values(['김태호', '조세호'])
dict_items([(100, '김태호'), (5, '조세호')])
{}
튜플 ( )
menu = ("돈까스", "치즈까스")
# name = "김종국"
# age =20
# hobby = "코딩"
# 한번에 데이터 입력
(name, age, hobby) = ("김종국", 20, "코딩")
집합 { }
# 중복 안됨, 순서 없음
my_set = {1,2,3,3,3}
print(my_set)
java = {"유재석", "김태호", "양세형"}
python = set(["유재석", "박명수"])
# 교집합
print(java & python)
print(java.intersection(python))
# 합집합
print( java | python)
print( java.union(python))
# 차집합
print( java - python)
print( java.difference(python))
# 데이터 추가 삭제
python.add("김태호")
python.remove("김태호")
{1, 2, 3}
{'유재석'}
{'유재석'}
{'박명수', '김태호', '유재석', '양세형'}
{'박명수', '김태호', '유재석', '양세형'}
{'김태호', '양세형'}
{'김태호', '양세형'}
자료구조의 변경
menu = {"커피", "우유", "주스"}
print(menu, type(menu))
menu = list(menu)
print(menu, type(menu))
menu = tuple(menu)
print(menu, type(menu))
{'커피', '우유', '주스'} <class 'set'>
['커피', '우유', '주스'] <class 'list'>
('커피', '우유', '주스') <class 'tuple'>
Quiz 4
추첨통해서 1명은 치킨, 3명은 커피
- 조건1: 20명 참가, 아이디는 1-20
- 조건2: 무작위로 추첨하되 중복 불가
- 조건3: random 모듈의 suffle과 sample 사용
(출력예제)
– 당첨자 발표 –
치킨 당첨자 : 1
커피 당첨자 : [2,3,4]
– 축하합니다 –
from random import *
# 리스트 생성 및 셔플
lst = list(range(1,21))
shuffle(lst)
# 치킨 당첨자
chicken = sample(lst,1)
# 커피 당첨자
lst_2 = set(lst) - set(chicken)
coffee = sample(lst_2,3)
print(f"-- 당첨자 발표 -- \n치킨당첨자: {chicken} \n커피당첨자: {coffee} \n-- 축하합니다 --")
-- 당첨자 발표 --
치킨당첨자: [15]
커피당첨자: [6, 3, 5]
-- 축하합니다 --
Leave a comment