logo태영이의 공부방

[파이썬 기초 100제] 2강 입출력 - 1

2022년 01월 18일

문제 10

정수형(int)으로 변수를 선언하고, 변수에 정수값을 저장한 후 변수에 저장되어 있는 값을 그대로 출력해보자.

풀이

# 답
x = int(input())
print(x)
# 나의 답
var x = 2
print(x)

아.. 스위프트랑 파이썬이랑 섞어버린 답을 적어버렸다.

파이썬에서는 var이나 let이 필요없다는걸 기억하자.

문제 11

문자형(char)으로 변수를 하나 선언하고, 변수에 문자를 저장한 후 변수에 저장되어 있는 문자를 그대로 출력해보자.

TIP

input()의 반환값은 기본으로 문자열로 정의된다.

풀이

x = input() # 기본으로 문자열로 반환되므로 str()을 안써주어도 된다.
print(x)

문제 12

실수형(float)로 변수를 선언하고 그 변수에 실수값을 저장한 후 저장되어 있는 실수값을 출력해보자.

풀이

x = float(input())

실수형으로 변환할 때는 float()을 사용한다.

문제 13

정수(int) 2개를 입력받아 그대로 출력해보자.

(단, 띄어쓰기를 기준으로 입력한다.)

입력 : 1 5

출력 : 1 5

TIP

문자열의 메소드(함수)인 split()을 이용하면 문자열을 공백 기준으로 배열(iterable)로 만들어준다.

매핑함수인 map()을 이용하면 배열(iterable)의 모든 원소를 첫 번째 매개변수(parameter)로 변환할 수 있다. 정확히는 감싸준다는 표현이 맞다.

ex) map(int, ['1', '2', '3']) >> [1,2,3]

매핑함수 map()의 반환값은 map객체이다. 따라서 육안으로 확인하기 위해서는 list()로 변환시켜줘야한다.

풀이

# 답
var = list(map(int, input().split()))
print(var[0], var[1])
# 또는 print(*var)로 하는 방법도 있다.
# 나의 답
x, y = map(int, input().split())
print(x, y)

내가 적은 답도 틀린건 아니지만, 배열을 이용해 저장하고 출력할 수도 있다고 한다.

문제 14

2개의 문자(ASCII CODE)를 입력받아서 순서를 바꿔 출력해보자.

아스키 코드란

컴퓨터가 문자를 읽을 수 있도록 문자에 대응하는 숫자들이 존재한다.

ex) A => 1100001

이때의 문자가 '아스키 문자'이며, 숫자가 '아스키 코드'이다.

풀이

# 답
x = input().split()
print(x[1], x[0])
# 나의 답
x = list(input().split())
print(x[1], x[0])

13번에서 알게 된 배열을 적용해보았다.

map()을 이용하지 않으므로 list()를 사용할 필요는 없다.

문제 15

실수(float) 1개를 입력받아 저장한 후, 저장되어 있는 값을 소수점 셋 째 자리에서 반올림하여 소수점 이하 둘 째 자리까지 출력하시오.

TIP

반올림 함수 round()를 이용하면 된다.

풀이

# 방법 1
x = float(input())
print(round(x), 2)
# 방법 2
x = round(float(input()), 2)
print(x)

round([실수], [자릿수])형이라는 것을 기억하자.

문제 16

int형 정수 1개를 입력받아 공백을 사이에 두고 3번 출력해보자.

풀이

x = int(input())
print(x, x, x)

문제 17

어떤 형식에 맞추어 시간이 입력될 때, 그대로 출력하는 연습을 해보자.

콜론(:) 기호를 기준으로 두 수가 각 변수에 저장된다.

입력 : 3:15

출력 : 3:15

TIP

split()의 매개변수로 문자열을 분할하기 위한 기준을 정의할 수 있다. 문자열의 메소드(함수)인 format()을 이용하면 문자열 내부에 변수값을 대입할 수 있다.

풀이

# 답
h, m = input().split(':')
print('{}:{}'.format(h, m))
# 나의 답
h, m = input().split(':')
print(h + ':' + m)

중괄호에 각각 h와 m이 대입이 되어 출력이 된다.

C언어에서 %d와 비슷한 역할을 하는 것 같다.

알아보니 파이썬에서도 print('%s:%s' % (h, m))로 출력이 가능하다고 한다.

문제 18

년, 월, 일을 입력받아 지정된 형식으로 출력하는 연습을 해보자.

  • 입력

    • 연, 월, 일이 ".(닷)"으로 구분되어 입력된다.
  • 출력

    • 입력받은 연, 월, 일을 yyyy.mm.dd 형식으로 출력한다.

입력 : 2020.2.9

출력 : 2020.02.09

(단, m 혹은 d가 한 자리 수인 경우 앞에 0을 붙여 출력한다.)

풀이

y, m, d = input().split('.')
if len(m) == 1:
    m = '0' + m
if len(d) == 1:
    d = '0' + d
print('{}.{}.{}'.format(y, m, d))

len()으로 문자열의 길이를 확인한 후 문자열에 '0'을 추가해야한다.

문제 19

주민번호는 다음과 같이 구성된다.

XXXXXX-XXXXXXX

앞의 6자리는 생년월일(yymmdd)이고 뒤 7자리는 성별, 지역, 오류검출코드이다.

주민번호를 입력받아 형태를 바꿔 출력해보자.

  • 입력
    • 주민번호 앞 6자리와 뒷 7자리가 '-'로 구분되어 입력된다.
    • (입력값은 가상의 주민번호이다.)
    • ex)110011-0000000
  • 출력
    • '-'를 제외한 주민번호 13자리를 모두 붙여 출력한다.

입력 : 000907-1121112

출력 : 0009071121112

풀이

x, y = input().split('-')
print(x+y)

print('{}{}'.format(a,b)) 처럼 format()을 사용하는 방법도 있다.

이 게시물은 우리밋_woorimIT님의 유튜브를 참고하였습니다.