Python_입출력과 사칙연산

paul2021_r·2021년 11월 20일
0

study_python

목록 보기
1/2
post-thumbnail

주말마다 하는 파이썬 학습

주말마다 파이썬 학습을 하기로 마음을 먹었다.
바로 다음 포스팅에 그 이유? 정도를 적을 생각이지만, 결론만 먼저 언급하자면 당분간 평일엔 42서울에서 제공하는 본과정의 학습에 집중할 것이고 주말에는 파이썬 학습을 진행해보려고 한다.

해당 학습은, 우선적으로 백준의 코딩 테스트 단계별 학습을 기초로 하고 있으며, 해당 내용 속에서 필요한 부분들 만을 추가로 정리해둘 것이다.


입출력과 사칙연산

  • 본 단계는 입문용 단계로, 입출력과 관련한 기초적인 내장함수를 사용한다.
  • 딱히 어렵진 않으나, 가장 기초가 되는 부분이면서도, 활용해야할 추가적인 옵션들이 주요한 포인트 였다.
  • 더불어 코테를 처음하기에 그런 것인지는 몰라도, 지문을 제대로 읽지 않아(....) 문제를 틀리는 경우는 인간적으로 내가 덜렁거린다는 것을 여실없이 보여주었다.

1. Hello World!

 print('Hello World!')


너무나 다들 잘 아는 내용일 것이다. 자꾸 printf라 적는다...

2. two times print

 for we_love_kriii in range(0, 2)
 print("강한친구 대한육군")

사실 해당 for 문은 좀더 뒤에 써야 맞겠지만... 전에 학습한 걸 써보았다.

3. 고양이 / 개

 print ("\\    /\\\n )  ( ')\n(  /  )\n \\(__)|")
 #고양이 모습이 나온다. 
  
 print("|\\_/|")
 print("|q p|   /}")
 print("( 0 )\"\"\"\\")
 print("|\"^\"`    |")
 print("||_/=\\\\__|")
 #개의 모습이 나온다. 

고양이는 한 줄로 표현하였고, 강아지는 여러줄로 표현했다. 해당의 기능을 사용시 아래와 같은 모양이 출력된다.

\   /\       |\_/|
)  ( ')      |q p|   /}
(  /  )      ( 0 )"""\
\ (__)|      |"^"`    |
             ||_/=\\__| 

해당 내용의 핵심은 코드의 연산자 또는 문법적 요소 사용되는 " \ 를 어떻게 단순 문자로 출력하는지를 아는가? 묻는 문제이다.
해결방법은 간단하다. 사용하려는 문자 앞에 \를 입력하면 되고, 그렇기에 출력하는 모양을 먼저 입력후 \가 필요한 곳에 다 때려 밖으면 된다.

4. 사칙연산
긴 말없이 바로 코드부터 보여주면...

a, b = map(int, input().split())
#설명할 부분
print(a+b)
#덧셈

a, b, c = input().split()
a = int(a) #설명할 부분
b = int(b)
c = int(c)
print(a + b + c)

a, b = map(int, input().split())
print(a / b)

a, b = map(int, input().split())
print(a + b)
print(a - b)
print(a * b)
print(a // b)
print(a % b)

#  multiplication
a = input()
b = input()
# 문제에서 자리수를 맞추지 않고 출력하는 걸 요구했으므로, 최종 연산시에만 자리수에 맞춰서 합을 구한다. 
ans3 = int(a) * int(b[2])
ans4 = int(a) * int(b[1])
ans5 = int(a) * int(b[0])
ans6 = ans3 + (ans4 * 10) + (ans5 * 100)

함수 설명

print(): 출력함수. python에선 c의 printf이상의 능력을 보여준다. 내부에서 계산이 되고, 계산도 단순히 정수나 실수 정도가 아니라 문자들도 + - 계산이 되는 등 여하튼 볼 수록 신기한 놈이다.

map(): 해당 함수는 이해는 했지만, 아마 첫 python 입문시 이해가 쉽지 않을 만한 녀석이다.
prototype: map(func, *iterables) --> map object
용도: list, dict, set, str...과 같은 iterable type의 변수들에 순차적으로 함수를 적용시킨다.
해당 기능이 용의한 이유는 바로, a, b = map(int, func...) 의 형태로 할 경우, 변수에 들어가는 값이 int형으로 자동 형변환을 시켜준다는 데 있다.

input(): C 의 scanf와 동일한 기능을 하는, 키보드 입력을 받는 함수다. 받은 데이터는 문자열로 입력받는다.
( )안에는 값을 입력시 함수 실행 시 디폴트로 뜰 문장을 보여준다.
이러한 특성은 향후에 자기가 입력을 받고 연산하는 함수나 프로그램 작성 시 매우 주의를 해야하는 부분 중 하나이다.

.split(): 함수 input의 옵션이다. 입력시 구분자(기본값은 공백)를 기준으로 값을 쭉 일렬로 입력 시 스스로 구분하여 값으로 변수에 입력시킨다. ( )안에 넣는 값으로 입력값을 구분한다.

int(): 형변환 방법. 정수 변환을 원할 때 ( ) 안에 원하는 변수를 넣으면 된다.

정리하면...

파이썬의 사칙연산이나 변수를 입력 받는 면에서 어려움은 없다. C의 그것과 유사하면서도 훨씬 많이 생략된 것들 덕에 오히려 너무 허전하단 생각이 들정도(...) 그래도 기본적으로 '편의성'의 대폭 강화가 되었다는 느낌이 들긴한다.

한 가지 문제를 풀면서 알게 된 것인데, 실제 구동시 몇초가 걸리는지를 알려주는 백준 코테에서 변수 지정 -> print를 하는 경우와 print 함수 내에서 한 방에 계산하는 것 사이의 큰 차이는 없는 것으로 보여졌다.

물론, 좀더 큰 함수들을 돌려봐야 아는거라지만, 조금이라도 차이가 날 거라 생각했었는데, 나지 않는 걸 보니 print함수 내부에서 동일한 절차가 걸리고 단순 지정 변수 출력시 그 과정이 생략되다보니 +- = 0이 된 것 같단 생각이 들었다.

profile
무한 도전. 무한 실패. 무한 성공.

0개의 댓글