반응형

안녕하세요

 

스터디에서 같이 공부한 내용을 정리하고자 글을 쓰게 되었습니다~

 

도움되셨으면 좋겠네요!

 

본 글에 나와있는 코드들을 직접 쳐보고 실행시키면서

 

여러가지로 꼬아가며 다양한 실험을 반복하시면 

 

어느새 파이썬이 익숙하고 재밌으실 겁니다~! 화이팅!

 

참고로 중간 중간 걸려있는 링크들은 글을 읽으시면서 모르는 함수, 문법 등이 나왔을 때 들어가셔서

글에 나온 정도만 이해하실 수 있으면 됩니다. (꼼꼼하게 보실 필요 없어요!)

 

1. 파이썬 입출력에 대한 다양한 방법론 (기초)

 (1) input()은 string 이다! (입력에 관하여)

  ① 대표적 오류 예시

 

num1 = input()
num2 = input()
print(num1+num2)

 

 예를 들어 "두개의 정수를 입력받아 더하는 프로그램"을 만든다고 가정 했을 때 위와 같이 코드를 짜는 경우가 있습니다.

 하지만 실제로 실행시켜보면 12를 입력했을 때 3을 출력하는게 아니라 엉뚱하게 12가 출력됩니다.

 

짐작하시겠지만, 그이유는 "input()은 기본적으로 str 자료형이기 때문입니다".

따라서 1과 2를 문자열로 인식하므로 1+2=3 이 아닌 '1'+'2'='12' 가 되는 것입니다.

 

정수의 덧셈 기능을 구현하기 위해서는 아래처럼 자료형을 변환해 주어야 합니다.

 

num1 = int(input()) # 문자열을 int로 변환 하기 위해서는 int('문자열')를 해주면 됩니다.
num2 = int(input()) # 이때 int('리스트') 혹은 int('실수')는 오류가 납니다. (직접 해보세요!)
print(num1+num2)

 

 

  목적에 맞게 입력받는 방법 (리스트를 써야할 때)

   이제 왜 입력받을 때 str과 int를 유의해야하는지와 input()이 기본적으로 str임을 파악하셨습니다!

따라서 단일 데이터의 경우 아래와 같이 두 가지 방식으로 입력을 받을 수 있습니다.

 

num_str = input() # 문자열(str)로 입력 받을 때는 그대로 input() 사용
num_int = int(input()) # 정수형(int)으로 입력 받을 때는 int(input()) 사용

 

자 이번에는 숫자를 100개 정도만 입력 받아 볼까요?

'숫자(정수형)'라고 했으니 int(input()) 을 100번만 쓰면 될 것 같습니다

 

a_1 = int(input())
a_2 = int(input())
a_3 = int(input())
.
.
.
a_100 = int(input())

 

네.. 전혀 프로그래밍 답지 못하다고 생각이 드실 겁니다.

즉,  '많은 양의 데이터를 받을 수 있는 자료형'이 필요하게 된 것입니다.

지금쯤, 자료형의 종류를 보시면 도움이 될 것 같네요.

 

   

   우리는 앞서 상단의 단일 데이터(ex) '1', 1 등) 만을 입력 받았습니다. 이때, str int로 나눠서 생각을 했죠.

그러나, 앞으로 다양한 데이터들을 마주하게 될 때 단일 데이터 보다는 다중 데이터를 다뤄야 할 가능성이 매우 높습니다.

따라서 이러한 많은 데이터들을 저장하기 위해 python은 "list(리스트)"라는 자료형을 제공합니다.

간단하게 리스트란 "단일 데이터의 모임" 이라고 생각하시면 됩니다.

 

   

   일단, 리스트를 어떻게 쓰는지 보다 언제 써야하는지 파악하는 것이 우선입니다.

  위 그림 처럼 123과 같이 숫자 하나만 주어졌다면 변수 하나에 int(input())으로 저장해주면 되지만

  1 ~ 10 까지의 정수가 공백을 기준으로 주어진다면 리스트를 사용해야겠죠

 

 

  리스트에 정수형 데이터를 입력받는 기본적인 방법

   언제 리스트를 써야하는지 알았으니, 어떻게 써야하는지 알아볼 차례입니다. (리스트 기초 : https://wikidocs.net/14)

 

   

   위와 같이 "여러개의 정수를 공백을 기준으로 입력받고 이를 리스트에 저장해야 할 때" 가 있습니다.

  이러한 데이터를 입력받을 때는 두 가지 과정을 거치는데,

 

  1단계. 공백을 기준으로 데이터를 나눈다. 

  2단계. 나누어진 데이터들을 int 자료형으로 변환한다.

 

  일단 1단계 부터 보여드리겠습니다.

 

nums = input().split() # split 함수는 (문자열).split()의 형태로 쓰입니다.
print(nums) # 이 때, (문자열)은 공백을 기준으로 나누어져 리스트에 저장됩니다.

 

 

  split() 함수는 "문자열을 공백을 기준으로 나누어 리스트에 저장"해주는 파이썬 내장함수입니다.

  (내장함수에 관한 내용은 다음에 자세히 다루도록 하겠습니다~)

 

 

  이제 2단계를 for문을 돌려서 해결해보겠습니다. (for문 기초 : https://wikidocs.net/22)

 

nums_int = []
for i in nums :
    nums_int.append(int(i)) # int형으로 바꿔준 후 리스트에 추가합니다. (append 함수 사용)
print(nums_int)

 

 

 빈 리스트를 선언한 뒤, 입력받은 원래 리스트를 for문을 돌려가며 원소 하나하나를 int형으로 바꾸어 append 해줍니다~

1단계와 2단계를 정리하면 아래와 같겠네요.

 

nums = input().split() # split 함수는 (문자열).split()의 형태로 쓰입니다.
print(nums) # 이 때, (문자열)은 공백을 기준으로 나누어져 리스트에 저장됩니다.

nums_int = []
for i in nums :
    nums_int.append(int(i)) # int형으로 바꿔준 후 리스트에 추가합니다. (append 함수 사용)
print(nums_int)

 

그렇지만, 1 ~ 10 까지의 정수를 입력받아 리스트에 저장하는 코드라고 하기에는 비효율적이고 길게 느껴지실 겁니다.

이제 응용하는 방법을 알려드리겠습니다~

 

 

  리스트에 정수형 데이터를 한 줄로 입력받는 방법

 

nums = list(map(int, input().split()))

 

 네 이게 다입니다! 매우 강력한 코드면서 pythonic code 라고 보실 수 있을 것 같습니다.

당장은 map함수가 뭐지? list는 또 왜 씌우는 거지? 라는 의문점이 드시겠으나 궁금증은 잠시 접어두고

활용하는데 초점을 맞추고 공부하시다보면, 언젠가 이해하실 때가 올겁니다. 그 시기는 제가 앞당겨 드릴게요 :)

 

추가적으로, 정수형 데이터를 여러 줄로 입력 받을 때 for문을 사용하는 방법을 알려드리면

입력에 관한 내용은 얼추 끝이 날 것 같습니다~

 

 

 위와 같은 상황인데, 이때는 input()은 'Enter키'를 기준으로 입력된다는 것을 이용하여

for문을 활용하시면 쉽게 해결가능합니다. 아래 처럼요!

 

number = int(input()) # 학생 수를 입력 받는다.
students = []
for i in range(number) : # 학생 수 만큼 for문을 돌린다.
    stduents.append(int(input())) # 각 줄을 정수형으로 입력 받고 리스트에 추가한다.

 

 이렇게 해주시면 왠만한 코딩 테스트 문제의 입력은 마스터 하신 겁니다. 즉, 빵을 만들기 위한 재료인 밀가루를

'만지신 것'까지 성공했다고 볼 수 있겠네요. 다음은 이렇게 힘겹게 받은 밀가루를 '출력하는 법'을 알려 드리겠습니다.

그전에 정리만 하고 넘어가시죠~

 

  입력 받는 방법 최종 정리

 

   

위 코드를 이리저리 돌리시면서 자기 것으로 만드시면 성공입니다! 

 

반응형