티스토리 뷰

  • 프로그래밍 언어를 배우고 실습을 해보는 목적. 다음과 같은 기초지식을 실제로 활용해봅니다.
    • 자료형 관련 유용한 라이브러리
    • for/while
    • if/else/삼항연산자
    • class
    • 에러 띄우기
    • 파일입출력
    • 외부 라이브러리 사용
    • annotation
  • 언어를 배우면서도 실제로 어디에 쓰이는지 헷갈리는 사람, 스스로 프로그램을 짜는 논리력이 부족하다고 느끼는 사람, PS 입문을 하고 싶은 사람에게 추천힙니다.
    • 대상: 파이썬 기본 문법을 배운 사람(자료형, 변수선언 및 사용, if, for/while)(파이썬 관련 기본서를 쭉 읽고 오는 것을 추천)
    • PS 입문은 앞부분, 실전은 외부 라이브러리 사용.
  • 기본서에서 배울 수 없는 소소한 팁이나 언어관련 재밌는 이야기도 알려줄 예정입니다.

실습은 각각 다음과 같은 내용을 포함합니다.

  • 목표/관련 개념: 실습의 목표와 관련된 개념을 목차화 합니다.
  • 실습 개요: 실습 내용에 추가적인 설명과 도움될 내용을 적습니다.
  • 실습 내용: 학습자가 진행해야 할 실습의 내용입니다. 이 내용만 보고 실습을 진행해도 무방합니다.

실습1

목표/관련 개념

    • 입출력실습 개요프로그램의 목적은 사용자에게 어떤 입력을 받아 특정 알고리즘을 거쳐 사용자가 원하는 출력을 내놓는 것입니다.

입력 -> 알고리즘 -> 출력!

  •  

거의 모든 코딩 문제 또한 프로그램의 목적을 따릅니다. 특정 입력을 주고, 그에 대한 특정 출력을 내놓으라고 하죠. 예를 들어, 사용자의 입력을 받아 그대로 출력을 하는 파이썬 프로그램을 작성하는 문제는 다음과 같이 분석할 수 있습니다.

  • 입력: 사용자의 한 줄의 문자열 입력
  • 출력: 입력으로 받은 문자열을 그대로 출력
  • 알고리즘: 사용자의 입력을 받고, 변수로 저장해, 그대로 출력.
    # 문제의 답(파이썬 프로그램)
    string = input()    # 입력을 받아 변수(string)에 저장
    print(string)       # 입력받은 값 출력


입력은 다음과 같은 명령어로 받을 수 있습니다
입력 = input("프롬프트") 또는 입력 = input()

  • 프롬프트는 입력을 받기 전에 콘솔에 출력하는 메세지로, 설정하지 않아도 무방합니다.
  • 왼쪽 항의 입력은 input을 받은 값을 저장하는 변수로 써 '입력'이 아닌 다른 문자를 써도 무방합니다. ex) a = input()
  • 결과는 항상 문자열로 들어옵니다. 정수를 입력받기 위해서는 int() 형변환 내장함수를 사용해야 합니다.
    • ex) 정수입력 = int(input())실습 문제
  • 주어진 입력을 받아 더해 출력하는 덧셈 프로그램을 작성하세요.
  • 입력1, 입력2, 입력3 각각 한 프로그램을 통해 통과해야 합니다.
  • 코드를 제출해주세요.

입력1

1
3

출력1

4

입력2

4
10

출력2

14

입력3

9
3

출력3

12

실습2

  • 직접 찾으며 익히는 연습
  • string 관련 내장함수실습 개요공식 api(애플리케이션 사용 설명서)를 보는 연습을 하기 위한 실습입니다. 프로그래밍 언어는 검색만 잘한다면 새로 배우는 언어도 스텐다드하게는 쓸 수 있게 됩니다. 따라서 이 연습은 다른 언어에도 응용할 수 있는 유용한 실습이 될 수 있겠습니다. 실제로 많이 쓰는 파이썬 내장 라이브러리 중 string을 가지고 연습을 해봅시다.
    파이썬 api는 꽤나 악랄해서, 공식 api만 보고 이해하기에는 한계가 있을 수 있습니다. 고로 추가 검색을 허용합니다
  • 참고자료*
  • 파이썬 전체 api: https://docs.python.org/ko/3/c-api/index.html
  • 파이썬 api 중 string: https://docs.python.org/ko/3/library/string.html
  • 관련 유용한 웹사이트: https://www.w3schools.com/python/python_ref_string.asp -> 레퍼런스에서 특정자료형에 관한 메소드를 찾기에 유용합니다. 링크된 페이지는 string에 관한 내용입니다.
  • 팁*
  • ctrl + f로 웹사이트의 내용을 검색할 수 있습니다.
  • 영어가 어렵다면 chatGPT에게 도움을 구해봅시다.실습 내용
  1. string 내장 함수(method) 중 split를 사용한 코드입니다. 서치를 통해 split함수가 어떤 기능을 할지 예상해서 써보고 실제로 실행해보세요.
  2. 이건뭘까 = "테스트 용 문자열 아무거나 들어가도 된다".split() 이건또뭘까 = "테스트 용 문자열 아무거나 들어가도 된다2".split(" ") ILoveCat = "nero/nabi/nyngnyngi/hahaha".split("/") print(이건뭘까) print(이건또뭘까) print(ILoveCat)
  3. string의 내장 함수를 이용해 입력1, 입력2, 입력3의 앞 뒤 공백을 잘라 출력하는 프로그램을 작성하세요. (슬라이싱 이용 불가)
  4. 입력1: " 고양이고양이 " 입력2: "Hello World " 입력3: " 우하하하하"

실습3

  • 파이썬의 자료형을 정리해보기
  • iterable
  • for 문자료형을 구분하는 방법은 여러가지가 있지만, 여기서는 api 문서에 자주 등장하는 iterable(반복가능한 것)를 정립하고 넘어가기 위해 iterable가 아닌것, iterable인 것으로 나누어보겠습니다.
  • 실습 개요
  • 파이썬의 자료형*
  • iterable가 아닌 것: bool, int, float
    • bool: boolean. 참/거짓 표시. ex) True
    • int: integer. 정수 표시. ex) 13
    • float: float. 소수 표시. ex) 3.14
  • iterable 인 것: str, list, tuple, dict, set
    • str: string. 문자열 표시. ex) "cat" 또는 'cat'
    • list: List. 리스트 표시. ex) [1, 2, 3, 4, 4, 5]
    • tuple: 불변형 리스트 표시. ex) (2, 3, 4, 1) 또는 (,)
    • dict: Map. 딕셔너리 표시. ex) { "hello": "world", "happy": "coding" }
    • set: set. 집합 표시. ex) {2.3, 4.0, 1.2}
      iterator인 것은 for문에 range(int) 대신 사용할 수 있습니다. 이 외에도 다양한 내장 함수에 사용이 가능합니다.실습 내용
  • 다음 코드를 보고 두 가지 내용을 작성해 제출해주세요.
    1. 오류가 나는 코드의 번호 작성
    2. 오류가 나지 않는 코드라면, 출력될 내용 예상해서 작성
    #1번
    for j in range(3):
        print(j)
    
    #2번
    for i in true:
        print(i)
    
    #3번
    dic = { "hello": "world", "happy": "coding" }
    for i in dic:
        print(i, dic[i])
    
    #4번
    for char in "this is a str(string)":
        print(char, end=' ')

실습4

  • string 관련 내장함수
  • 반복문(for 문)
  • len() 함수실습 개요컴퓨팅 문제 해결 능력을 기르는데 좋은 학습은 PS(problem solving) 문제를 푸는 것이죠! 이런 문제를 풀 때에 가장 많이 쓰게 될 코드를 연습해봅시다.
    많은 문제들이 2개 이상의 데이터를 입력으로 주고 그걸 문제에 따라 조합한 후 출력을 하라고 합니다. 아무것도 모를 때에는 입력을 받는 것 부터 난관이겠죠? 그걸 연습해보는 문제입니다.실습 내용
  • n개의 문자가 공백(스페이스)로 구분되어 한 줄로 입력됩니다. 리스트로 변환하여 한 줄에 한 문자씩 출력하고, 마지막 줄에 문자의 개수 n을 출력하는 프로그램을 작성하세요.

입력1

1 2 3 4 5 6 7 8 9 10

출력1

1
2
3
4
5
6
7
8
9
10
문자의 개수 n: 10

입력2

h e l l o

출력2

h
e
l
l
o
문자의 개수 n: 5

실습5

  • string 관련 내장 함수
  • 반복문
  • 형변환실습 개요실습4의 연장선입니다. 다만 약간의 변형을 주었고, 이 코드는 정말로 PS문제에 많이 쓸 수 있을 것 입니다. 실습4는 문자를 받아 그대로 출력했지만, 이번에는 여러개의 정수를 한 줄의 입력으로 받아 합산하는 문제입니다.
    힌트를 주자면, 한 줄의 입력을 먼저 리스트로 만들고, for 문제 넣어 하나씩 형변환을 하고 더해 완성할 수 있겠습니다.

추가 팁(발전 버전)
지금 익힐 필요는 없는 하드버전입니다.
string은 어디서나 크기가 가장 큰 자료형입니다. 아래 프로그램을 실행해보면, str과 int의 크기차이를 확인할 수 있습니다.

import sys
print(sys.getsizeof(1))       ## >> 28 출력 (int의 크기가 28bytes라는 뜻)
print(sys.getsizeof("1"))     ## >> 50 출력 (str의 크기가 50btyes라는 뜻)

위에 설명한 내용대로 코드를 짜면 string으로만 이루어진 크기가 큰 리스트가 생기게 됩니다. 메모리 손실이죠.

사실 이부분은 현재 컴퓨터성능상 크게 문제가 안됩니다. 진짜 문제는 코드가 길어지는 것 뿐이죠

. 아무튼 이런 손실을 줄이는 쉽고 간편한 방법인 map 함수를 소개합니다.
map(function f, iterable arr) -> map 객체
이 함수는 함수와 iterable 객체를 인수로 받아 map 객체를 반환합니다. 만들어진 map 객체는 iterable의 한 요소씩 function을 거쳐 만들어진 값을 저장한 객체입니다. map 객체는 list나 tuple로 형변환 될 수 있습니다. 말이 조금 어려운데, 사실상 일대일 대응함수와 비슷합니다. 정의역(arr)를 하나씩 function 인수를 거쳐 만들어진 값과 동일한 치역(map 객체)에 연결해주는 것 같은 거죠.
f에 int(int) -> int 내장함수를, arr에 ["3", "6", "1"]을 주면 [3, 6, 1]의 map 객체가 튀어나온다는 말입니다. 이 map 객체를 list() 함수를 통해 감싸줘 형변환을 시켜주면, 그냥 list 처럼 쓸 수 있습니다.
이를 잘 활용한다면 한 줄의 코드만드로도 입력받기, 리스트로 나누기, 형변환하기 까지 해낼 수 있습니다.

실습 내용

  • n개의 정수가 공백(스페이스)로 구분되어 한 줄로 입력됩니다. 입력된 정수를 모두 더한 값을 출력하는 프로그램을 작성하세요.

입력1

1 2 3 4

출력1

10

입력2

3 10 17 2

출력2

32
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/10   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함