개발 블로그

[CODELION 강의] [기본] 같이 푸는 PYTHON 본문

Programming Language/Python

[CODELION 강의] [기본] 같이 푸는 PYTHON

draidev 2022. 3. 15. 00:35

Pixabay로부터 입수된 For commercial use, some photos need attention.님의 이미지 입니다. 

코드라이언 AI SCHOOL 첫 번째 주는 Python기본 강의를 듣는 것으로 시작했습니다~~!

Python은 계속 사용했던 언어라서 익숙한 내용들이지만 다시 한번 정리하는 느낌으로 글을 써봅니다!!

목차>

01_01 input(), print(), int()

Python에서 입출력 함수는 input()print()가 담당합니다.

input()을 통해 입력받으면 입력받은 값이 숫자여도 문자열 자료형으로 저장됩니다.

따라서 숫자를 입력하였을때 정수형 자료형으로 활용하길 원한다면 int()함수를 통해 캐스팅해줘야 합니다.

food1 = input("내가 먹은 음식의 가격 : ")   #5000입력
food2 = input("친구가 먹은 음식의 가격 : ") #7000입력

food1 = int(food1)    #int()로 정수형으로 캐스팅
food2 = int(food2)

print(food1 + food2)  #12000출력
  • 논외로 라이브러리 sys를 import하여 sys.stdin.readline()을 통해 입력 받을 수도 있습니다.
    주의해야 할 점은 readline()은 개행 문자 \n까지 같이 받는다는걸 유의해야 합니다.
    이때 strip()을 사용하면 문자열 맨 앞과 맨 뒤의 공백 문자를 제거할 수 있습니다.
import sys
_input1 = sys.stdin.readline()
print("_input1 출력 : ", _input1)
print("_input1 리스트 : ", list(_input1))

_input2 = sys.stdin.readline().strip()
print("_input2 출력 : ", _input2)
print("_input2 리스트 : ", list(_input2))

출력을 보면 다음과 같이 문자열을 리스트로 만들어서 개행 문자의 유무를 눈으로 확인할 수 있습니다.

sys.stdin.readline()과 sys.stdin.readline().strip() 출력 비교

차이점

  • input()
    파라미터로 Prompt Message를 받아서 출력합니다.
    즉, food1 = input("내가 먹은 음식의 가격 : ")같이 Prompt에 띄울 메시지를 전달 인자로 받을 수 있습니다.
    (for문을 사용할시 prompt message를 처리하는 부분에서 느려질 수 있습니다.)
    개행 문자 \n를 삭제해서 return 합니다.
  • sys.stdin.readline()
    sys 모듈은 파이썬 인터페이스를 제공하는 변수와 함수를 직접 제어할 수 있도록 합니다.

가끔 백준 알고리즘 문제를 풀 때 입력이 많을 경우 시간 초과가 발생하여 sys.stdin.readline()를 사용해야 되는 경우가 있어서 소개했습니다.

02_01 리스트 자료형, append(), insert()

리스트 자료형은 [ ]대괄호로 감싸서 표현하며, 리스트에 원소를 삽입할 때 append(), insert() 함수를 사용할 수 있습니다.
list()함수를 이용하여 리스트로 초기화하거나 다른 자료형을 리스트로 변환할 수 있습니다.

orders = ["짜장", "짬뽕", "탕수육"]

""" append()함수는 리스트의 끝에 원소를 삽입한다. """
orders.append("냉면")
print("append() : ", orders)

""" insert()함수는 리스트의 인덱스까지 전달인자로 받아서 인덱스 위치에 원소를 삽입한다. """
orders.insert(1, "깐풍기")
print("insert() : ", orders)

append(), insert() 출력

02_02 del(), remove()

리스트 안의 원소를 삭제할 때는 del(), remove() 함수를 사용합니다.

orders = ["짜장", "짬뽕", "탕수육"]

""" del함수는 리스트의 앞에 쓰며 인덱스값을 통해서 삭제한다. """
del orders[0]
print("del : ", orders)

""" remove()함수는 리스트의 값을 전달인자로 그 값을 삭제한다. """
orders.remove("짬뽕")
print("remove() : ", orders)

del, remove() 출력

02_03 len()

문자열, 리스트, 딕셔너리 등의 길이를 구할 때 len() 함수를 사용합니다.

orders = ["짜장", "짬뽕", "탕수육"]
""" len()함수에 리스트를 전달인자로 하면 리스트의 길이를 반환한다. """
print(len(orders))

""" len()함수에 문자열을 전달인자로 하면 문자열의 길이를 반환한다.
이때 공백문자도 포함한다. """
name = "안녕하세요 코드라이언입니다."
print(len(name))

len() 출력

02_04 sum()

리스트안에 int,float 같은 숫자 자료형이 들어있을 때 sum()함수를 이용하여 합을 구할 수 있습니다.

""" 숫자 리스트 """
num = [20, 40, 50, 10, 30]

""" sum()함수는 리스트의 값들을 더한 값을 반환한다. """
add = sum(num)
print(add)

sum() 출력

02_05 평균, max(), min()

최댓값은 max()
최솟값은 min()
평균은 sum(num) / len(num)를 통해 구하는데, 이때 float자료형이 반환돼어 출력에서 30.0으로 소수점이 표시되는 걸 볼 수 있습니다.
int자료형을 얻고 싶다면 몫을 반환하는 연산자 //을 사용하거나(sum(num) // len(num)) int()함수를 사용하여 얻을 수 있습니다.

num = [20, 40, 50, 10, 30]

""" 평균 = (전체의 합)/전체 개수 """
print("평균 = ", sum(num) / len(num))

""" max()는 최댓값, min()은 최솟값 """
print("최댓값 : ", max(num))
print("최솟값 : ", min(num))

평균, max(), min()

03_01 딕셔너리 자료형

딕셔너리는 {} 중괄호를 사용하여 선업합니다.

""" 딕셔너리는 {}중괄호를 통해 선언한다.
    key : value 형식으로 데이터를 초기화하며
    ,(마침표)로 구분한다. """
menu = {"짜장" : 4000,
        "짬뽕" : 5000,
        "탕수육" : 9000}

print(menu)

딕셔너리 출력

03_02 딕셔너리 데이터 삽입, value출력, value수정

딕셔너리는 key를 이용하여 value에 접근 할 수 있습니다.

menu = {"짜장" : 4000,
        "짬뽕" : 5000,
        "탕수육" : 9000}

""" 딕셔너리 데이터 삽입 """
""" 딕셔너리이름[key] = value """
menu["냉면"] = 6000
print("딕셔너리 데이터 삽입 : ", menu)

""" 딕셔너리 value 출력 """
""" 딕셔너리이름[key] """
print("딕셔너리 value 출력 : ", menu["짜장"], menu["짬뽕"], menu["탕수육"])

""" 딕셔너리 value 수정 """
""" 딕셔너리이름[key] = 수정할value """
menu["탕수육"] = 8500
print("딕셔너리 value 수정 : ", menu)

딕셔너리 삽입, value출력, value수정

03_03 딕셔너리 데이터 삭제

딕셔너리에서 리스트와 마찬가지로 del함수를 이용하여 데이터를 삭제 할 수 있습니다.

menu = {"짜장" : 4000, 
        "짬뽕" : 5000, 
        "탕수육" : 9000}

""" 딕셔너리 데이터 삭제 """
""" del 딕셔너리이름[key] """
del menu["짜장"]
print("딕셔너리 데이터 삭제 : ", menu)

딕셔너리 데이터 삭제 출력

04_01 비교연산자

myGrade = 10
yourGrade = 15

""" == 연산자 : 같으면 True, 다르면 False 반환 """
print("10 == 15 : ", myGrade == yourGrade) 

""" != 연산자 : 같으면 False, 다르면 True 반환 """
print("10 != 15 : ", myGrade != yourGrade) 

""" < 연산자 : 왼쪽 값 보다 오른쪽 값이 크면 True, 작거나 같으면 False 반환 """
print("10 <  15 : ", myGrade < yourGrade)

""" > 연산자 : 왼쪽 값 보다 오른쪽 값이 크거나 같으면 False, 작으면 True 반환 """
print("10 >  15 : ", myGrade > yourGrade)

""" <=연산자 : 왼쪽 값 보다 오른쪽 값이 크거나 같으면 True, 작으면 False 반환 """
print("10 <= 15 : ", myGrade <= yourGrade)

""" >=연산자 : 왼쪽 값 보다 오른쪽 값이 크면 False, 작거나 같으면 True 반환 """
print("10 >= 15 : ", myGrade >= yourGrade)

비교연산자 출력

04_02 if문

myGrade = int(input("학번을 입력하세요 : "))
yourGrade = int(input("학번을 입력하세요 : "))

""" if 조건: """
""" 조건이 True이면 if이하 실행 """
""" else: """
""" if문의 조건이 False인경우 else이하 실행 """
if myGrade == yourGrade:
    print("동기네요!")
else:
    print("앗 동기가 아니네요!")

if문 True 출력
if문 False 출력

04_03 elif문

myGrade = int(input("학번을 입력하세요 : "))
yourGrade = int(input("학번을 입력하세요 : "))

""" if 조건:
    elif 조건:
    elif 조건:
    else: """
""" elif는 if문과 위의 elif문의 조건에서 False이며 자신의 조건이 True이면 실행된다. """
if myGrade == yourGrade:
    print("안녕하세요 동기님!")
elif myGrade > yourGrade:
    print("안녕하세요 선배님!")
elif myGrade < yourGrade:
    print("안녕하세요 후배님!")
else:
    print("누구세요?")

elif출력1
elif출력2

04_03 if와 리스트

orders = ["짜장", "짬뽕", "탕수육"]

food = input("먹고싶은 메뉴를 입력해주세요 : ")

""" food의 값이 orders리스트 안에 있다면 True, 없으면 False """
if food in orders:
    print("주문 할 수 있습니다.")
else:
    print("주문 할 수 없습니다.")

if와 list 출력1
if와 list 출력2

04_04 if와 딕셔너리

menu = {"짜장" : 4000, "짬뽕" : 5000, "탕수육" : 9000}

food = input("먹고싶은 메뉴를 입력해주세요 : ")

""" food의 값이 orders리스트 안에 있다면 True, 없으면 False """
if food in menu:
    print("주문 가능")
else:
    print("주문 불가")


menu = {"짜장" : 4000, "짬뽕" : 5000, "탕수육" : 9000}

food = input("먹고싶은 메뉴를 입력해주세요 : ")

""" food는 menu딕셔너리의 key값을 받으므로 value에 접근하기 위해서
    menu[food]를 사용한다. """
if food in menu:
    print(menu[food], "원 입니다.") 
else:
    print(food, "주문 불가")

if와 dict 출력1
if와 dict 출력2
if와 dict 출력3

05_01 while 반복문

python 반복문 while, for 중에 while 먼저 보겠습니다.

""" while 조건 :
    조건이 참이면 while문 블록을 계속 반복한다. """
""" 아래의 경우 조건이 계속 True이므로 무한 루프 """
while 10 < 90:
    print("True")

""" 멈추고 싶으면 Ctrl + C 로 강제종료를 합니다. """

무한루프 출력

i = 5
""" i가 -1이면 조건이 False이므로 루프를 탈출한다. """
while i>=0:
    print(i)
    i -= 1

while문 출력

05_02 break, continue

반복문 블록내에서 break문을 만나면 반복문을 종료합니다.
그리고 continue를 만나면 반복문의 조건으로 되돌아갑니다.

i = 0
while True :
    print(i)
    i = i + 1

    if i >= 3 :
        print("if문 동작")
        break

print("반복문 종료!")

break 출력

i = 0
while i < 10 : 
    i = i + 1

    """ i가 짝수일 경우 조건으로 되돌아간다. """
    if i % 2 == 0:
        continue
    print(i)  #홀수만 출력

print("반복 종료!")

continue 출력

05_03 for반복문, range()

for 변수 in 시퀀스:
실행될 코드

for i in [10,20,30]:
    print("안녕하세요")

for문 출력

#1
for i in range(4):
    print(i)

#2
for i in range(10, 20):
    print(i)

#3
""" range(시작숫자, 종료숫자, 스텝) """
""" 시작숫자부터 종료숫자까지 반복하는데 스텝의 크기만큼 증가 """
for i in range(10, 20, 2):
    print(i)

각각 #1 #2 #3 출력

""" 1부터 100까지 더하기 """
result = 0
for i in range(1, 101):
    result = result + i

1부터 100까지 더하기 출력

06_01 별이 빛나는밤에

반복문을 사용하여 별모양을 여러가지 형태로 출력할 수 있습니다.

#1
for i in range(5):
    print("*")

#2
""" print()에 두번째 전달인자로 end=""를 사용하면 문장의 끝에 \n이 사라져 줄바꿈이 안된다. """
for i in range(5):
    print("*",end="")

#1 출력
#2 출력

  • 중첩반복문을 사용하여 사각형, 삼각형 모양 출력하기
""" 별 사각형으로 출력하기 """
for i in range(5):
    for i in range(5):
        print("*",end="")
    print()

""" 별 삼각형으로 출력하기 """
for i in range(5):
    for i in range(i+1):
        print("*",end="")
    print()
  • 반복문 하나만 사용하여 사각형, 삼각형 모양 출력하기
""" 별 사각형으로 출력하기 """
for i in range(5):
    print("*"*5)

""" 별 삼각형으로 출력하기 """
for i in range(5):
    print("*"*(i+1))

별 사각형 출력
별 삼각형 출력

06_02 줄 바꿔 출력하기

""" 숫자 거꾸로 출력하기 """  
num = 5  
for i in range(num,0,-1):  
print(i)

숫자 거꾸로 출력

""" 한줄에 10개 출력 후 줄바꿔서 출력하기 """  
num = 30  
for i in range(num):  
print(i+1, end = " ")  
if i % 10 == 9:  # i값의 1의 자리수가 9가 될때마다 print()를 통해 줄바꿈을 합니다
print()

줄 바꿔 출력하기

06_03 오늘의 당첨 번호, random()함수 사용

문제) 로또를 몇 개 살 건지 입력 받고 1부터 45까지 숫자 중 6개를 랜덤으로 뽑아서 화면에 오름차순 정렬하여 입력받은 개수만큼 출력합니다.

import random

buyLotto = int(input("로또를 몇 개 살겁니까? "))

""" random.sample(시퀀스, 반환될 리스트 크기) : 시퀀스 범위중에서 랜덤한 값을 리스트 크기 만큼 반환 """  
""" sorted(리스트) : 정렬하여 새로운 리스트를 반환 """  
for i in range(buyLotto):  
randomNumber = random.sample(range(1, 45), 6)  
print(sorted(randomNumber))

로또 오름차순 출력

Comments