SiLaure's Data
[Python] 15-. Python 데이터 입출력(I,O) (1) 본문
Python 프로그래밍의 마지막.
- I/O란?
: input/output의 약자
- 프로그램 입장에서 들어오는 모든 데이터를 input, 나가는 모든 데이터를 output이라고 한다.
- 메인 메모리 입장에서 생각하는 들어오고 나가는 모든 데이터에 대해서 I/O 처리라고 부른다.
(단, CPU와의 소통은 제외) - 통상적으로는 Unix 환경(터미널 환경)에서 부르던 용어임
사용자로 부터 키보드로 입력받는 것 : stdin
사용자에게 다시 모니터로 출력되는 것 : stdout
- 프로그램은 메인 메모리 상에 존재하기 때문에
스토리지로부터 파일을 불러오는 것도 input이고, 프로그램의 결과를 스토리지에 저장하는 것도 output이다.
이러한 작업을 file I/O로 통칭한다.
- 스토리지와 프로그램 사이의 I/O를 file I/O라고 한다.
- 파이썬에서 stdin/out을 사용하는 방법과 file I/O를 사용하는 방법에 대해 간단하게 알아본다.
- STDIN / STDOUT (Standard IN, Standard OUT)
- 파이썬은 input()을 통해서 stdin을 사용자로부터 입력받을 수 있다.
- 파이썬은 print()를 통해서 stdout을 사용자에게 출력할 수 있다.
- 파이썬에서는 stdin은 무조건 문자열 타입으로 들어오므로,
type casting을 통해서 다른 데이터 타입으로 바꾸어 사용해야 한다.
- 키보드로 입력받은 값을 할당하고 출력해보기
a = input()
a, type(a)
안녕하세요
출력 : ('안녕하세요', str)
- 입력받는 값을 숫자라고 가정한 경우
a = input("숫자를 입력하세요 : ")
a, type(a)
숫자를 입력하세요 : 13
출력 : ('13', str)
- 입력받는 값을 숫자라고 가정했는데 문자열이 들어오면 에러가 발생함
=> type casting이 실패한 경우
a + 5
--------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-3-9a6da2884e4e> in <module> ----> 1 a + 5 TypeError: can only concatenate str (not "int") to str
- type casting -- (명시적) 타입 변환
a = int(input("숫자를 입력하세요 : "))
a, type(a)
출력 : (13, int)
- stdin가 string이기 때문에 fancy하게 input을 handle 할 수 있는 방법
(영어 좀 써 봤음ㅋ --원래는 '입력이 문자열이기 때문에 fancy하게 input을 처리할 수 있는 방법')
Q. 만약에 stdin으로 여러 개의 숫자가 들어오는 경우 이를 효과적으로 처리하는 방법은?
(입력의 format을 알고 있다고 가정)
# 이는 숫자를 2개로 가정한 경우
a, b = 1, 2
a, b = b, a
a, b
출력 : (2, 1)
Q. 문자들을 입력 받아 문자열을 잘라서 써보자.
s = input()
a = int(s.split(',')[0])
b = int(s.split(',')[1])
print(a, b, type(a), type(b))
출력 :
1, 2, 3, 4, 5
1 2 <class 'int'> <class 'int'>
만약, 자를 문자가 너무너무너무너무 많다면?
- list comprehension
- list를 생성하는 exprssion
- 원소가 될 원소의 expression --반복문/조건문으로 만든다.
1. 빈 list를 만들어 1 부터 5까지 돌기
L = []
for x in range(1,5) :
L.append(x)
2. 더 간단하게 써보기
L = list(range(1,5))
3. list comprehesion으로 써보기
L = [x for x in range(1, 5)]
: x는 1에서 5까지 하나씩 돈 그 x가 원소인 리스트
Q. 홀수는?
- 원래 사용하던 방법
L = []
L = [x for x in range(1, 10) if x % 2 != 0]
L
- list comprehesion을 사용한 방법
L = []
L = [x for x in range(1, 10) if x % 2 != 0]
L
Q. 리스트로 들어간 문자열인 원소를 숫자로 바꿔보자.
L = input("콤마를 기준으로 숫자를 여러개 입력해주세요. :").split(',')
L
출력 : ['1', ' 2', ' 3', ' 4']
리스트에 들어간 원소는 문자열임
L = [int(x) for x in input("콤마를 기준으로 숫자를 여러개 입력해주세요. :").split(',')]
L
출력 : [1, 2, 3, 4]
위의 코드와 같음. for문의 정석대로 짠 코드
L = []
for x in input("콤마를 기준으로 숫자를 여러개 입력해주세요. :").split(',') :
x = int(x)
L.append(x)
L
'Records of > Learning' 카테고리의 다른 글
[Numpy] 01. Numpy란? (0) | 2021.07.23 |
---|---|
[Python] 15-2. Python 데이터 입출력(I,O) (2) (0) | 2021.07.23 |
[Python] 14-1. Python 기초 문법 - Function 2(Implementation) (1) (0) | 2021.07.22 |
[Python] 13. Python 기초 문법 - Function 1 (Definition) (0) | 2021.07.22 |
12. Python 기초 문법 - Programming Practice(IF, while, for) --문제 풀기 (0) | 2021.07.22 |
Comments