Python - 기초 (2)

제갈창민·2021년 10월 11일
0

learningbook

목록 보기
4/32
post-thumbnail
post-custom-banner

문자열

sentence = '나는 소년입니다'

print(sentence)

sentence2 = "asdf"

print(sentence2)

sentence3 = """

나는 소년이고

asdfd

"""

print(sentence3) # 여러줄 입력 가능

슬라이싱

jumin = "123456-1234567" # 컴퓨터는 순번을 매길때 0 부터 시작한다.

print("성별 : " + jumin[7])

print("연 : " + jumin[0:2]) # 0~2 직전까지 - 0, 1

print("월 : " + jumin[2:4]) # 2~4 직전까지

print("일 :" + jumin[4:6])

print("생년월일 : " + jumin[6]) # 처음부터 6 직전까지

print("뒤 7자리 : " + jumin[7:]) # 7 부터 끝까지의 정보를 가져옴

print("뒤 7자리 (뒤에서부터) : " + jumin[-7:] # 뒤에서 부터 읽을 때는 -1 부터 시작한다.

문자열처리함수

python = "Python is Amazing"

print(python.lower()) # 전부 소문자로 변환

print(python.upper()) # 전부 대문자로 변환

print(python[0].isupper()) # 0 -> (첫번째 문자) python 의 첫번째 문자가 is upper?

print(len(python)) # 문자열의 길이(문자의 갯수 산출)

print(python.replace("Python", "Java")) # Python 을 찾아서 Java 로 바꿔준다

index = python.index("n")

print(index) # 문자가 몇번째 위치에 있는지 알려준다

index = python.index("n", index + 1)

print(index) # 해당 문자가 두번째로 나오는 위치를 알려준다

print(python.find("Java"))

★ find 함수는 해당 문자가 없을 시 -1 로 출력

★ index 함수는 문자가 없을 시 오류 발생

print(python.count("n")) # 해당 문자가 총 몇번 등장하는지 산출

문자열 포맷

print("a" + "b")

print("a", "b")

Case 1

print("I'm %d year's old" % 20) # % ~ % (앞쪽 % 에다가 뒤쪽 % 값을 불러온다) d(정수값)

print("I like %s" % "Python") # s (str - 문자열 값)

print("Apple is start by %c" % "A") # c (한 글자)

★ %s ★

print("I'm %s year's old" % 20)

print("I like a %s and %s" % ("blue", "red"))

Case 2

print("I'm {} years old".format(20)) # format() 안의 값을 {} 안에 출력한다.

print("I like {} and {}".format("blue", "red"))

print("I like {0} and {1}".format("blue", "red")) # 숫자는 곧 format() 안 값의 순서를 의미

Case 3

print("I'm {age} years old and like {color} color.".format(age = 20, color="red"))

★ format 안의 순서와 상관없이 선언된 변수의 값을 출력한다

Case 4

age = 20

color = "red"

print(f"I'm {age} years old and like {color} color.")

★ f = .format

탈출 문자

print("백문이 불여일견 \n백견이 불여일타") # \n = 줄 바꿈

print('저는 "나도코딩"입니다.')

★ 큰 따옴표와 작은 따옴표를 섞어서 사용하면 오류없이 문자입력 가능

print("저는 \"나도코딩\" 입니다.")

★ \ 사용 시 같은 종류의 따옴표를 그대로 출력해줌

★ \ : 문장 내에서 하나의 \ 로 바뀐다

★ \r : 커서 뒷 부분을 문자열 맨 앞으로 이동 및 바꿈

print("Red Apple\rPine")

★ \b : 백스페이스 (한 글자 삭제)

print("Redd\bApple")

★ \t : 탭 (공간)

print("Red \tApple")

Quiz. 3

사이트별로 비밀번호를 만들어 주는 프로그램 만들기

http://naver.com

★ 규칙1 : http:// 부분은 제외 => naver.com

★ 규칙2 : 처음 만나는 점(.) 이후 부분은 제외 => naver

★ 규칙3 : 남은 글자 중 처음 세자리 + 글자 갯수 + 글자 내 'e' 갯수 + "!" 로 구성

★ (nav) (5) (1) (!) => 예제

★ 생성된 비밀번호 : nav51! => 예제

<풀이>

url = "http://naver.com"

my_str = url.replace("http://", "") # 규칙1

print(my_str)

my_str = my_str[:my_str.index(".")] # 규칙2

print(my_str)

password = my_str[:3] + str(len(my_str)) + str(my_str.count("e")) + "!"

print("{0} 의 비밀번호는 {1} 입니다." .format(url, password))

리스트 = 순서를 가지는 객체의 집합

★ 지하철 칸별로 10명, 20, 30명

subway1 = 10

subway2 = 20

subway3 = 30

subway = [10, 20, 30] # 리스트 만들기

<선언> subway = ["유재석", "조세호", "박명수"]

★ 조세호가 몇 번째 칸에 타고 있는가?

print(subway.index("조세호"))

★ 다음 정류장에서 하하가 탔다

subway.append("하하") # append 는 '더하다' 라는 의미

★ 정형돈이 유재석과 조세호 사이에 탐

subway.insert(1, "정형돈") # 1 번째에 정형돈이 들어가고 나머지 값들은 뒤로 한칸씩 밀린다

★ 지하철에 있는 사람을 한 명씩 뒤에서 꺼냄

print(subway.pop())

★ 같은 이름의 사람이 몇 명 있는지 확인

subway.append("유재석")

print(subway) # 유재석이 추가되었는지 확인

print(subway.count("유재석"))

정렬도 가능

num_list = [5,2,4,3,1]

num_list.sort()

순서 뒤집기 가능

num_list.reverse()

모두 지우기

num_list.clear()

다양한 자료형 함께 사용

num_list = [5,2,4,3,1]

mix_list = ["조세호", 20, True]

print(mix_list)

리스트 확장(병합, 통합)

num_list.extend(mix_list)

print(num_list)

사전

<선언> cabinet = {3:"유재석", 100:"김태호"}

print(cabinet[3])

★ print(cabinet[100]) # [ ] 를 이용한 데이터 검색

★ print(cabinet.get(3)) # get 을 이용한 검색

★ print(cabinet[5]) # 5가 없기 때문에 에러 발생 후 오류 출력

★ print(cabinet.get(5)) # "None" 값을 출력해준다

★ print(cabinet.get(5, "사용 가능"))​

★ print(3 in cabinet) # in = 값이 변수내에 있는지 없는지 확인 가능 (str 도 가능)

<선언> cabinet = {"A-3":"유재석", "B-100":"김태호"}

print(cabinet["A-3"])

print(cabinet["B-100"])

새 손님 추가

cabinet["A-3"] = "김종국"

cabinet["C-20"] = "조세호"

손님 나감

del cabinet["A-3"]

사용중인 key 들만 출력

print(cabinet.keys())

value 들만 출력

print(cabinet.values())

둘 다 동시 출력

print(cabinet.items())

캐비닛 이용자 초기화

cabinet.clear() # 값 모두 삭제

print(cabinet)

튜플 = 리스트와는 다르게 내용 변경 및 추가를 할 수 없지만, 속도가 리스트 보다 빠름

menu = ("돈까스", "치즈까스")

print(menu[0])

print(menu[1])

★ menu.add("생선까스") # 오류남. 튜플은 add 할 수 없음

일반 배열

name = "김종국"

age = 20

hobby = "코딩"

print(name, age, hobby)

튜플 형 배열

(name, age, hobby) = ("김종국", 20, "코딩")

print(name, age, hobby)

세트 (집합, set)

★ 중복 안됨, 순서 없음

my_set = {1,2,3,3,3}

print(my_set)

교집합 (java 와 python 을 모두 할 수 있는 개발자)

java = {"유재석", "김태호", "양세형"}

python = set(["유재석", "박명수"])

print(java & python)

print(java.intersection(python))

합집합 (java 도 가능하고 python도 가능한 개발자)

print(java|python)

print(java.union(python))

차집합 (java 는 가능하지만, python은 불가능한 개발자)

print(java - python)

print(java.difference(python))

Python 을 할 줄 아는 사람이 늘어남

python.add("김태호")

print(python)

java 를 잊어버린 개발자

java.remove("김태호")

print(java)

자료구조의 변경

menu = {"커피", "우유", "주스"}

print(menu, type(menu))

menu = list(menu)

print(menu, type(menu))

menu = tuple(menu)

print(menu, type(menu))

menu = set(menu)

print(menu, type(menu))

Quiz. 4

★ 이벤트 추첨을 통해 1명은 치킨, 3명은 커피 쿠폰 지급

★ 조건1 : 20명이 참가함. 아이디는 1~20이라고 가정

★ 조건2 : 무작위 추첨하되 중복 불가

★ 조건3 : random 모듈의 shuffle 과 sample 을 활용

★ (출력 예제)

★ -- 당첨자 발표 --

★ 치킨 당첨자 : 1

★ 커피당첨자 : [2, 3, 4]

★ -- 축하합니다 --

(활용 예제)

from random import *

lst = [1,2,3,4,5]

print(lst)

shuffle(lst) # shuffle : 리스트의 값들을 무작위 순서로 변경

print(lst)

print(sample(lst, 1)) # sample(a,b) : a 안에서 b 개만큼 값을 출력함

풀이

from random import *

users = range(1,21) # 1부터 20까지 숫자를 생성 * 타입이 range로 설정됨

users = list(users) # range 타입에서 list 타입으로 전환 : list 모듈을 사용하기 위함

shuffle(users)

winners = sample(users, 4) # 4명 중에서 1명은 치킨, 3명은 커피

print(" -- 당첨자 발표 -- ")

print("치킨 당첨자 : {0}".format(winners[0]))

print("커피당첨자 : {0}".format(winners[1:]))

print(" -- 축하합니다 -- ")

profile
자기계발 중인 신입 개발자
post-custom-banner

0개의 댓글