인프런 파이썬 무료 강의 (기본편)

릿·2021년 9월 30일

파이썬

목록 보기
1/2

문장 출력 : print()

변수 선언 :
ex)
animal = "강아지"
age = 4
is_adult = age >= 3

print에 변수 쓰기(1) :
print(name + "는 " +str(age)+ "살이며, " + hobby + "을 아주 좋아해요")

print에 변수 쓰기(2) : ','를 쓰면 숫자 앞에 str를 쓰지 않아도 됨.
print(name, "는 ", age, "살이며, ", hobby, "을 아주 좋아해요")

한줄 주석 쓰기 : 앞에 # 붙여주기!

여러줄 주석 쓰기 : 시작과 끝에 '''를 붙여주기!
블록설정 후 ctrl+/를 누르면 편리하게 사용 가능하다.

연산자 :
5%3 => 5에서 3을 나눈 나머지
5//3 => 5에서 3을 나눈 몫
not(1 != 3) => false, 1과 3은 같지 않다의 반대(not).
(3 > 0) and (3 < 5) == (3 > 0) & (3 < 5)
(3 > 0) or (3 > 5) == (3 > 0) | (3 > 5)

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

from math import *
print(floor(4.99)) # 내림. 4
print(ceil(3.14)) # 올림. 4
print(sqrt(16)) # 제곱근. 4

랜덤함수 :
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 이하의 임의값 생성

문자열 다중입력 :
sentence3 = """
나는 소년이고,
파이썬은 쉬워요
"""
print(sentence3)

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

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

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

문자열 처리함수 :
python = "Python is Amazing"
print(python.lower()) # 소문자로 바꾸기
print(python.upper()) # 대문자로 바꾸기
print(python[0].isupper()) #0번째 문자열이 대문자인지? boolean
print(len(python)) # 해당 변수 길이 세기
print(python.replace("Python", "Java")) # Python이라는 단어를 찾아서 Jave로 바꿔준다

index = python.index("n") #n문자 인덱스값을 나타낸다. (제일 먼저 나오는 문자열의 인덱스값)
print(index)
index = python.index("n", index + 1) # n문자 인덱스값의 +1한 부분부터 n을 찾는다.
print(index)

print(python.find("Java")) # 없는 문자열일 경우 -1을 반환한다.
print(python.index("Java")) # find함수값이 false이기 때문에 아래코드를 실행하지 않아서 오류가 뜬다.

print(python.count("n")) # 해당 변수에 n이 몇번 등장하는지 개수를 센다.

문자열 포맷 :
print("a" + "b")
print("a", "b")

-방법 1
print("나는 %d살입니다." % 20) # d => 정수
print("나는 %s를 좋아해요." % "파이썬") # s => string
print("Apple 은 %c로 시작해요." % "A") # c => char

-%s
print("나는 %s살입니다." % 20)
print("나는 %s색과 %s색을 좋아해요" % ("파란", "빨간"))

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

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

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

탈출문자 :

  • \n : 줄바꿈
    print("백문이 불여인견\n백견이 불여일타")

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

  • \ : 문장 내에서 \
    print("C:\Users\Grace.c\Desktop\Python>")

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

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

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

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

예) http://naver.com
규칙 1 : http:// 부분은 제외 => naver.compile
규칙 2 : 처음 만나는 점(.) 이후 부분은 제외 => naver
규칙 3 : 남는 글자 중 처음 세자리 + 글자 갯수 + 글자 내 'e' 갯수 + "!"로 구성
(nav) (5) (1) (!)

url = "http://naver.com"
my_str = url.replace("http://", "") # 규칙1
my_str = my_str[:my_str.index(".")] # 규칙2, my_str[0:5] -> 0 ~ 5 직전까지. (0, 1, 2, 3, 4)
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]
print(subway)

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

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

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

-정형돈씨를 유재석 / 조세호 사이에 태워봄
subway.insert(1, "정형돈")
print(subway)

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

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

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

-순서 뒤집기도 가능
num_list.reverse()
print(num_list) # [5, 4, 3, 2, 1]

-모두 지우기
num_list.clear()
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)

사전 :
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, "사용 가능")) # 없는 키값이므로 "사용 가능"을 실행한다.
print("h1")

print(3 in cabinet) # 3이라는 키가 캐비넷에 있으므로 True 반환
print(3 in cabinet) # 5이라는 키가 캐비넷에 없으므로 False 반환

-새 손님
cabinet = {"A-3":"유재석", "B-100":"김태호"} # 키값은 string도 가능하다.
cabinet["A-3"] = "김종국" # 기존 키값인 A-3에 새로운 값인 김종국을 덮어씌운다.
cabinet["C-20"] = "조세호" # 새로운 키값인 C-20에 새로운 값인 조세호를 넣는다.

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

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

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

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

-목욕탕 폐점
cabinet.clear() # 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) # {1, 2, 3}

-선언 : 둘다 사용해도 같은 결과값이 나온다.
java = {"유재석", "김태호", "양세형"}
python = set(["유재석", "박명수"])

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

menu = list(menu)
print(menu, type(menu)) # class 'list'

menu = tuple(menu)
print(menu, type(menu)) # class 'tuple'

menu = set(menu)
print(menu, type(menu)) # class 'set'

퀴즈2
Quiz) 당신의 학교에서는 파이썬 코딩 대회를 주최합니다.
참석률을 높이기 위해서 댓글 이벤트를 진행하기로 하였습니다.
댓글 작성자들 중에 추첨을 통해 1명은 치킨, 3명은 커피 쿠폰을 받게 됩니다.
추첨 프로그램을 작성하시오.

조건1: 편의상 댓글은 20명이 작성하였고 아이디는 1~20이라고 가정
조건2: 댓글 내용과 상관 없이 무작위로 추첨하되 중복 불가
조건3: random 모듈의 shuffle 과 sample 을 활용

(출력 예제)
-- 당첨자 발표 --
치킨 당첨자 : 1
커피 당첨자 : [2, 3, 4]
-- 축하합니다 --

from random import *
users = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20] # 그냥 써서 선언하기
users = range(1, 21) # 1부터 21까지 숫자를 생성, class 'range'
users = list(users) # 자료 변환
shuffle(users)
winners = sample(users, 4) # 4명 중에서 1명은 치킨, 3명은 커피

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

profile
새로운 도전과 재미를 추구하는 프론트엔드 개발자

0개의 댓글