파이썬 기본 정리(1)

yerim·2023년 1월 19일
0

파이썬 기본 정리

목록 보기
1/11

나도코딩 '파이썬 코딩 무료 강의(기본편) - 6시간 뒤면 여러분도 개발자가 될 수 있어요' 정리

숫자처리함수

##숫자처리함수
print(abs(-5)) #절대값        5
print(pow(4, 2)) #제곱수      -> 4^2=16
print(max(5, 12)) #최대값     12
print(min(5, 12)) #최솟값     5
print(round(3.14)) #반올림    3
print(round(4.99)) #반올림    5

# math 라이브러리 사용
from math import * 
print(floor(4.99)) #내림  4
print(ceil(3.14)) #올림   4
print(sqrt(16)) #제곱근   4


랜덤함수

##랜덤함수
# random 라이브러리 사용
from random import * 
print(random()) #0.0 ~ 1.0 미만의 임의의 값 생성
print(random() * 10) #0.0 ~ 10.0 미만의 임의의 값 생성

print(int(random() * 10)) #0 ~ 10 미만의 임의의 값 생성
print(int(random() * 10) + 1) #1 ~ 10 이하의 임의의 값 생성

print(int(random() * 45) + 1) #1 ~ 45 이하의 임의의 값 생성
print(randrange(1, 46)) #1 ~ 46 미만의 임의의 값 생성
print(randint(1, 45)) #1 ~ 45 이하의 임의의 값 생성


Quiz 2

##Quiz##
# 당신은 최근에 코딩 스터디 모임을 새로 만들었습니다.
# 월 4회 스터디를 하는데 3번은 온라인, 1번은 오프라인
# 조건에 맞는 오프라인 모임 날짜를 정해주는 프로그램 작성.
# 조건 1 : 랜덤으로 날짜를 뽑아야 함
# 조건 2 : 월별 날짜는 다름을 감안하여 최소 일수인 28 이내로 정함
# 조건 3 : 매월 1~3일은 스터디 준비를 해야 하므로 제외


from random import *
date = randint(4,28)
print("오프라인 스터디 모임 날짜는 매월 " + str(date) + " 일로 선정되었습니다.")




문자열

##문자열
# '' "" 둘 다 상관없다
sentence = '나는 소년입니다'
print(sentence)
sentence1 = "파이썬은 쉬워"
print(sentence1)

#여러 줄로 문자열 표현
sentence2 = """
나는 소년이고,
파이썬은 쉬워
"""
print(sentence2)


##슬라이싱
jumin = "990120-1234567"

print("성별 : " + jumin[7]) # 1
print("연 : " + jumin[:2]) # 99
print("월 : " + jumin[2:4]) # 01
print("일 : " + jumin[4:6]) # 20
print("생년월일 : " + jumin[:6]) # 990120
print("뒤 7자리 : " + jumin[7:]) # 1234567
print("뒤 7자리(뒤에서부터) : " + jumin[-7:]) # 1234567
# 맨 뒤부터 index -1 이므로 '1234567'에서 '1'의 index=-7


문자열 처리함수

##문자열 처리함수
sentence = "Python is Amazing"

# lower(소문자로 변환)
print(sentence.lower()) # python is amazing
# upper(대문자로 변환)
print(sentence.upper()) # PYTHON IS AMAZING

print(sentence[0].isupper()) #해당 문자의 대/소문자 여부(true/false)  T
print(len(sentence)) #문자열 길이 17
print(sentence.replace("Python", "Java")) #Python을 찾아서 Java로 교체    Java is Amazing


#문자 위치(인덱스) 찾기
#1. index 함수
index = sentence.index("n")
print(index)  # 5
index = sentence.index("n", index+1) #index+1=6은 시작위치를 의미. 시작위치부터 해당문자의 인덱스를 찾음
print(index)  # 15

#2. find 함수
print(sentence.find("n")) # 5

#원하는 값이 문자열에 없을 경우 
#find -> -1 출력
print(sentence.find("Java"))
#index -> 오류 후 프로그램 종료
# print(sentence.index("Java"))

print(sentence.count("n"))    #문자열 안에서 해당문자의 개수		2


문자열 포맷방법

##문자열 포맷방법
#방법1 - % 
print("나는 %d살입니다." % 20)    #숫자
print("나는 %s을 좋아해요." % "파이썬")   #문자열
print("Apple은 %c로 시작해요." % "A") #문자
print("나는 %s색과 %s색을 좋아해요." % ("파란", "빨간"))
# %s는 정수, 문자 상관없이 모두 가능
print("나는 %s살이고, %s 색을 좋아해요" %(20, "분홍"))

#방법2 - {}
print("나는 {}살입니다." .format(20))
print("나는 {}색과 {}색을 좋아해요." .format("파란", "빨간"))
print("나는 {0}색과 {1}색을 좋아해요." .format("파란", "빨간"))

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

#방법4(v3.6 이상부터 가능)
age = 20
color = "빨간"
print(f"나는 {age}살이며, {color}색을 좋아해요.")


탈출문자

##탈출문자
#\n : 줄바꿈
print("백문이 불여일견\n백견이 불여일타")
# 백문이 불여일견
# 백견이 불여일타

#\" : 문장 내에서 ", \' : 문장 내에서 '
print("저는 \"나도코딩\"입니다.")	# 저는 "나도코딩"입니다.
print("저는 \'나도코딩\'입니다.")	# 저는 '나도코딩'입니다.


#\\ : 문장 내에서 \
print("C:\\Users\\PythonWorkspace\\python")	# C:\Users\PythonWorkspace\python

#\r : 커서를 맨 앞으로 이동
print("Red Apple\rPine") # PineApple

#\b :  백스페이스(한글자 삭제)
print("Redd\bApple")  # RedApple

#\t : 탭
print("Red\tApple") # Red	Apple


Quiz 3

##Quiz##
#사이트별로 비밀번호를 만들어 주는 프로그램을 작성하시오
#규칙1 : http:// 부분은 제외 -> naver.com
#규칙2 : 처음 만나는 점(.) 이후 부분은 제외 -> naver
#규칙3 : 남은 글자 중 처음 세자리 + 글자 갯수 + 글자 내 'e' 갯수 + "!" f로 구성
# ex. http://naver.com -> nav51!


site = input()
my_site = site.replace("http://", "") #http://를 ""(공백)으로 교체
my_site = my_site[:my_site.index(".")] #.이후 부분 제외
password = my_site[:3] + str(len(my_site)) + str(my_site.count("e")) + "!"
print("{0} 의 비밀번호는 {1} 입니다. " .format(site, password))




리스트 [ ]

##리스트(list): []
subway =[10, 20, 30]
print(subway)	# [10, 20, 30]

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

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

#하하씨가 다음 정류장에서 다음 칸에 탐
subway.append("하하")
print(subway)	# ['유재석', '조세호', '박명수', '하하']

#정형돈씨를 유재석/조세호 사이에 태움
subway.insert(1, "정형돈") #1 번째 위치에 '정형돈' 추가
print(subway)	# ['유재석', '정형돈', '조세호', '박명수', '하하']

#지하철에 있는 사람을 한 명씩 뒤에서 꺼냄
print(subway.pop()) #빼낸 사람	하하
print(subway) #빼낸 후 subway	['유재석', '정형돈', '조세호', '박명수']

#같은 이름의 사람이 몇명 있는지 확인
subway.append("유재석")
print(subway)	# ['유재석', '정형돈', '조세호', '박명수', '유재석']
print(subway.count("유재석"))	# 2


#리스트 정렬
num_list=[5,2,4,3,1]
num_list.sort()
print(num_list)     # [1, 2, 3, 4, 5]

#리스트 뒤집기
num_list1=[5,2,4,3,1]
num_list1.reverse()
print(num_list1)     # [1, 3, 4, 2, 5]

#모두 지우기
num_list.clear()
print(num_list)


#하나의 리스트에 다양한 자료형 함께 사용 가능
mix_list=["조세호", 20, True]
print(mix_list)		# ["조세호", 20, True]

#리스트 확장(합칩)
num_list=[5,2,4,3,1]
num_list.extend(mix_list)
print(num_list)     # [5, 2, 4, 3, 1, '조세호', 20, True]


딕셔너리 { }

##사전(dictionary) : {}
# 'key : value' 형태
# key 중복 허용 X
cabinet = {3: "유재석", 100: "김태호"}
print(cabinet)      # {3: "유재석", 100: "김태호"}
print(cabinet[3])   # 유재석
print(cabinet[100])   # 김태호
print(cabinet.get(3))   # 유재석


#딕셔너리에 없는 키일 경우 
print(cabinet[5])     # 오류 발생 후 프로그램 종류
print(cabinet.get(5))   # None 출력
print(cabinet.get(5, "사용 가능"))   # None이 아닌 다른 기본값을 지정할 수 있음


#딕셔너리에 키가 있는지 확인
print(3 in cabinet)     # True
print(5 in cabinet)     # False


#딕셔너리 키는 문자열도 가능
cabinet = {"A-3": "유재석", "B-100": "김태호"}
print(cabinet)
print(cabinet["A-3"])
print(cabinet["B-100"])


#딕셔너리에 추가
print(cabinet)
cabinet["C-20"] = "조세호"
print(cabinet)      # {'A-3': '유재석', 'B-100': '김태호', 'C-20': '조세호'}

#해당 키가 이미 사용중일 경우 value 가 업데이트 됨
cabinet["A-3"] = "김종국"
print(cabinet)      # {'A-3': '김종국', 'B-100': '김태호', 'C-20': '조세호'}


#딕셔너리 삭제
del cabinet["A-3"]
print(cabinet)      # {'B-100': '김태호', 'C-20': '조세호'}


#key 들만 출력
print(cabinet.keys())       # dict_keys(['B-100', 'C-20'])

#value 들만 출력
print(cabinet.values())     # dict_values(['김태호', '조세호'])

#key, value 쌍으로 출력
print(cabinet.items())      # dict_items([('B-100', '김태호'), ('C-20', '조세호')])

#모두 지우기
cabinet.clear()
print(cabinet)


튜플 ( )

##튜플(tuple) : ()
# 내용 변경, 추가 X
# 리스트보다 속도가 빠름
menu = ("돈까스", "치즈까스")
print(menu[0])  # 돈까스
print(menu[1])  # 치즈까스


#튜플로 한번에 값 선언이 가능함
(name, age, hobby) = ("김종국", 20, "코딩")
print(name, age, hobby)


집합 { }

##집합(set)
# 중복 X, 순서 X
my_set ={1, 2, 3, 3, 3}
print(my_set)   # {1, 2, 3}


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("김태호")
print(python)   # {'유재석', '박명수', '김태호'}

#집합에 삭제
java.remove("김태호")
print(java)     # {'유재석', '양세형'}


자료구조 변경

##자료구조 변경
menu = {"커피", "우유", "주스"}
print(menu, type(menu))     # {'주스', '우유', '커피'} <class 'set'>

#set -> list 로 변경
menu = list(menu)
print(menu, type(menu))     # ['주스', '우유', '커피'] <class 'list'>

#set -> tuple 로 변경
menu = tuple(menu)
print(menu, type(menu))     # ('주스', '우유', '커피') <class 'tuple'>


Quiz 4

#Quiz##
# 당신의 학교에서는 파이썬 코딩 대회를 주최합니다.
# 참석률을 높이기 위해 댓글 이벤트를 진행하기로 하였습니다.
# 댓글 작성자들 중에 추첨을 통해 1명은 치킨, 3명은 쿠폰을 받게 됩니다.
# 추첨 프로그램을 작성하시오.
# 조건1 : 편의상 댓글은 20명이 작성하였고 아이디는 1~20이라고 가정
# 조건2 : 댓글 내용과 상관 없이 무작위로 추첨하되 중복 불가
# 조건3 : random 모듈의 shuffle 과 sample을 활용
# (출력예제)
# -- 당첨자 발표 --
# 치킨 당첨자 : 1
# 커피 당첨자 : [2, 3, 4]
# -- 축하합니다 --


##random 모듈의 shuffle 과 sample##
# from random import *
# lst = [1, 2, 3, 4, 5]
# print(lst)
# shuffle(lst)    #shuffle(list): 리스트(list) 안의 값을 무작위로 배치
# print(lst)
# print(sample(lst, 1))   #sample(list, n): 리스트(list)에서 n개만큼 무작위로 뽑음



from random import * 
users = range(1, 21)    #1~20까지의 숫자 생성
users = list(users) #range 타입 -> list로 변경
shuffle(users)
winners = sample(users, 4)  #users에서 한번에 4명 뽑음.
print("-- 당첨자 발표 --")
print("치킨 당첨자 : {0} " .format(winners[0]))
print("커피 당첨자 : {0}" .format(winners[1:]))
print("-- 축하합니다 --")



if문(조건문)

##if
weather = input("오늘 날씨는 어때요? ")
if weather == "비" or weather == "눈":
    print("우산을 챙기세요")
elif weather == "미세먼지":
    print("마스크를 챙기세요")
else:
    print("준비물 필요 없어요")
    

temp = int(input("기온은 어때요? "))    #숫자형을 입력받을 때는 int로 감싸준다
if temp >= 30:
    print("너무 더워요. 나가지 마세요")
elif temp >= 10 and temp < 30:
    print("괜찮은 날씨예요")
elif temp >=0 and temp < 10:
    print("외투를 챙기세요")
else:
    print("너무 추워요. 나가지 마세요")


for문(반복문)

##for문(반복문)
# print("대기번호 : 1")
# print("대기번호 : 2")
# print("대기번호 : 3")
# print("대기번호 : 4")
#을 for문을 사용하여 나타낸다.

for waiting_no in [0, 1, 2, 3, 4]:
    print("대기번호 : {0}" .format(waiting_no))
# 대기번호 : 0
# 대기번호 : 1
# 대기번호 : 2
# 대기번호 : 3
# 대기번호 : 4

for waiting_no in range(5): #[0, 1, 2, 3, 4]
    print("대기번호 : {0}" .format(waiting_no))
# 대기번호 : 0
# 대기번호 : 1
# 대기번호 : 2
# 대기번호 : 3
# 대기번호 : 4
    

starbucks = ["아이언맨", "토르", "아이엠 그루트"]
for customer in starbucks:
    print("{0}, 커피가 준비되었습니다" .format(customer))
# 아이언맨, 커피가 준비되었습니다
# 토르, 커피가 준비되었습니다
# 아이엠 그루트, 커피가 준비되었습니다


while문(반복문)

##while문(반복문)
customer = "토르"
index = 5
while index >= 1:
    print("{0}, 커피가 준비 되었습니다. {1} 번 남았어요" .format(customer, index))
    index -= 1
    if index == 0:
        print("커피가 폐기처분되었습니다")
# 토르, 커피가 준비 되었습니다. 5 번 남았어요
# 토르, 커피가 준비 되었습니다. 4 번 남았어요
# 토르, 커피가 준비 되었습니다. 3 번 남았어요
# 토르, 커피가 준비 되었습니다. 2 번 남았어요
# 토르, 커피가 준비 되었습니다. 1 번 남았어요
# 커피가 폐기처분되었습니다  
    

#무한루프
# index = 0  
# while True:
#     print("{0}, 커피가 준비 되었습니다. {1} 번 남았어요" .format(customer, index))
#     index += 1


#특정 손님일 경우에만 커피를 주도록 한다.
customer = "아이언맨"
person = "Unknown"

while person != customer:
    print("{0}, 커피가 준비 되었습니다." .format(customer))
    person = input("이름이 어떻게 되세요? ")
# 아이언맨, 커피가 준비 되었습니다.
# 이름이 어떻게 되세요? 토르
# 아이언맨, 커피가 준비 되었습니다.
# 이름이 어떻게 되세요? 그루트
# 아이언맨, 커피가 준비 되었습니다.
# 이름이 어떻게 되세요? 아이언맨


continue & break

##continue & break
absent = [2,5]  #결석한 사람들
no_book = [7]   #책을 안가져온 사람

for student in range(1, 11):
    #continue
    if student in absent:   #결석한 경우
        continue
    #break
    if student in no_book:
        print("오늘 수업 여기까지. {0}는 교수실로 따라와" .format(student))
        break
    print("{0}, 책을 읽어봐" .format(student))
# 1, 책을 읽어봐
# 3, 책을 읽어봐
# 4, 책을 읽어봐
# 6, 책을 읽어봐
# 오늘 수업 여기까지. 7는 교수실로 따라와


한줄 for문

#출석번호가 1 2 3 4, 앞에 100을 붙이기로 함 -> 101 102 103 104 ...
students = [1, 2, 3, 4, 5]
print(students)     # [1, 2, 3, 4, 5]
students  = [i+100 for i in students]
# students 리스트에서 i를 하나씩 불러와서 i+100 값을 students 리스트에 넣는다
print(students)     # [101, 102, 103, 104, 105]


#학생 이름을 길이로 변환
students = ["Iron man", "Thor", "I am groot"]
students = [len(i) for i in students]
print(students)     # [8, 4, 10]


#학생 이름을 대문자로 변환
students = ["Iron man", "Thor", "I am groot"]
students = [i.upper() for i in students]
print(students)     # ['IRON MAN', 'THOR', 'I AM GROOT']


Quiz 5

##Quiz##
#당신은 Cocoa 서비스를 이용하는 택시 기사님입니다.
#50명의 승객과 매칭 기회가 있을 때, 총 탑승 승객 수를 구하는 프로그램을 작성하시오.
# 조건1 : 승객별 운행 소요 시간은 5분 ~ 50분 사이의 난수로 정해집니다.
# 조건2 : 당신은 소요 시간 5분 ~ 15분 사이의 승객만 매칭해야 합니다.
# (출력문 예제)
# [O] 1번째 손님 (소요시간 : 15분)
# [ ] 2번째 손님 (소요시간 : 50분)
# [O] 3번째 손님 (소요시간 : 5분)
# ...
# [ ] 50번째 손님 (소요시간 : 16분)

# 총 탑승 승객 : 2분



from random import *

count = 0   #총 탑승 승객 수
for i in range(1, 51):
    customer_time = randint(5, 50)  #5 ~ 50 분 사이의 소요시간
    if customer_time >= 5 and customer_time <=15:   #매칭 성공
        print("[O] {0}번째 손님 (소요시간 : {1}분)" .format(i, customer_time))
        count += 1
    else:   #매칭 실패
        print("[ ] {0}번째 손님 (소요시간 : {1}분)" .format(i, customer_time))
        
print("총 탑승 승객 : {0} 분" .format(count))
profile
hello!

0개의 댓글