Linux, ML/DL, DevOps, 클라우드

[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