본문 바로가기

Back-end/Python

파이썬 기초 - 2 ( 노트정리 ) with 나도코딩

3-1. 문자열

  • 3가지 방법
'나는 소년입니다'

"나는 소년입니다"

"""나는

소년입니다"""  

 

3-2. 슬라이싱

jumin = "990120-1234567"

print("성별 : " + jumin[7])
print("연 : " + jumin[0:2]) # 0 부터 2 직전까지
print("월 : " + jumin[2:4])
print("일 : " + jumin[4:6])

print("생년월일 : " + jumin[:6]) # 처음부터 6 직전까지
print("뒤 7자리 : " + jumin[7:]) #7 부터 끝까지
print("뒤 7자리 (뒤에서부터) : " + jumin[-7:])
# 맨 뒤에서 7번째부터 끝까지

 

3-3. 문자열처리함수

  • python = "Python is Amazing"
  • print(python.lower())   # 전부 소문자로 바꿔준다
  • print(python.upper())   # 전부 대문자로 바꿔준다
  • print(python[0].isupper())    # 0번째 문자가 대문자인지,소문자인지 알려준다
  • print(len(python))  # 전체 문자수의 합을 알려준다
  • print(python.replace("Python", "java"))   # 문장을 바꿔준다

 

  • index = python.index("n")   # 해당 알파벳이 몇번째에 있는지 알려주다
  • print(index)
  • index = python.index("n", index + 1)    # 두번째 n이 어디있늕지 알려준다
  • print(index)

 

  • print(python.find("java"))   # index를 쓰면 오류가 났을때 프로그램 종료가 되는데,                                                                             # find를 쓰면 -1로 표시하고 계속 진행
  • print(python.count("n"))    # 문장에서 n이 몇번나오는지 알려준다

 

3-4. 문자열포맷

age = 20
color = "빨간"
print(f"나는 {age}살이며, {color}색을 좋아해요.")

 

3-5.탈출문자

\n : 줄바꿈

\" \' : 문장 내에서 따옴표

\ : 문장 내에서

\r : 커서를 맨 앞으로 이동

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

\t : 탭

 

# 퀴즈

Quiz) 사이트별로 비밀번호를 만들어 주는 프로그램을 작성하시오

 

예) http://naver.com 

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

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

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

예) 생성된 비밀번호 : nav51!

 

 

#해답

url = "http://youtube.com"

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

my_str = my_str[:my_str.index(".")] # 규칙 2 
# my_str[0:5] -> 0 ~ 5 직전까지.

password = my_str[:3] + str(len(my_str)) + str(my_str.count("e")) + "!"
print("{0} 의 비밀번호는 {1} 입니다.".format(url, password))

 


 

4-1. 리스트

  • 하나로 묶는것  [ ]
subway = [10, 20, 30]
print(subway)

subway = ["유재석", "조세호", "박명수"]
prunt(subway)

# 조세호씨가 몇 번째 칸에 타고 있는가?
print(subway.index("조세호")

# 하하씨가 다음 정류장에서 다음 칸에 탐
subway.append("하하")
print(subway)

# 지하철에 있는 사람을 한 명씩 뒤에서 꺼냄
print(subway.pop())
print(subway)

# 같은 이름의 사람이 몇 명 있는지 확인
subway.append("유재석")
print(subway)
prunt(subway.count("유재석"))

# 정렬도 가능
num_list = [5, 2, 4, 3, 1]
num_list.sort()

#순서 뒤집기 가능
num_list.reverse()
print(num_list)

# 다양한 자료형 함께 사용
num_list = [5, 2, 4, 3, 1
mix_list = ["조세호", 20, True]
print(mix_list)

# 리스트 확장
num_list.extend(mix_list)
print(num_list)



 

4-2.사전

사전 = { }

cabinet = {3:"유재석", 100:"김태호"}
print(cabinet[3])
print(cabinet[100])

print(cabinet.get(3))
print(cabinet[5])

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

 

- get 쓰면 잘못된  키를 사용해도 프로그램이 종료되지 않고 None이라는 표시만 해준다

 

print(3 in cabinet ) #True
print(5 in cabinet ) #False

-3이란 키가 있으면 True, 5라는 키가 없으면 False 표시해준다

 

cabinet = {"A-3":"유재석", "B-100":"김태호"}
print(cabinet["A-3"])
print(cabinet["B-100"]

# 새 손님
print(cabinet)
cabinet["A-3"] = "김종국"
cabinet["C-20"] = "조세호"
print(cabinet)

# 간 손님
del cabinet["A-3"]
print(cabinet)

-문자를 넣어도 출력이 가능 // 같은 키에다  다른 입력값을 넣으면 바뀐 입력값을 출력한다

 

# key들만 출력
print(cabinet.keys())

# value 들만 출력
print(cabinet.values())

# key, value 쌍으로 출력
print(cabinet.items())

#목욕탕 폐점
cabinet.clear()

 

4-3. 튜플

  • 많이 사용되지는 않지만 속도가 빠르다. 변경되지 않는 목록을 사용할때 사용 ( )
menu = ("돈까스", "치즈까스")
print(menu[0])
print(menu[1])

#menu.add("생선까스")

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

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

 -튜플은 add기능을 사용할 수 없다

 

4-4. 세트

# 집합 (set)
# 중복 안됨, 순서 없음
my_set = {1,2,3,3,3}
print(my_set)

java = {"유재석", "김태호", "양세형"}
python = set(["유재석", "박명수"])

# 교집합 (java 와 python 을 모두 할 수 있는 개발자)
print(jave & 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)

 

#퀴즈

Quiz) 당신의 학교에서는 파이썬 코딩 대회를 주최합니다.

참석률을 높이기 위해 댓글 이벤트를 진행하기로 하였습니다.

댓글 작성자들 중에 추첨을 통해 1명은 치킨, 3명은 커피 쿠폰을 받게 됩니다.

 

조건1 : 편의상 댓글은 20명이 작성하였고 아이디는 1~20 이라고 가정

조건2 : 댓글 내용과 상관 없이 무작위로 추첨하되 중복 불가

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

 

(출력예제)

--당첨자 발표--

치킨 당첨자 : 1

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

--축하합니다--

 

(활용예제)

from random import *

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

print(1st)

shuffle(1st)

print(1st)

print(sample(1st, 1))

 

 

# 해답

from random import *
users = range(1, 21) # 1부터 20까지 숫자를 생성
users = list(users) # range를 사용하기 위해서는 list로 바꿔줘야 한다

print(users)
shuffle(users)
print(users)

winners = sample(users, 4) 

print("--당첨자 발표--")
print("치킨 당첨자 : {0}".format(winners[0]))
print("커피 당첨자 : {0}".format(winners[1:]))
print("--축하합니다--")

 

출처 : https://www.youtube.com/channel/UC7iAOLiALt2rtMVAWWl4pnw