[파이썬 기초문법] 변수, 자료형, 입출력, 연산자, 조건문 등 230704

서대철·2023년 7월 4일
1

<학습내용 요약>
개요
PyCharm
변수
자료형
데이터 입출력
format()과 형식문자
연산자
조건식, 조건문

워낙 예전부터 파이썬을 건드려 봤다가 한눈 판 시간이 많아서 파이썬 강의 초반부는 큰 무리없이 복습하는 개념으로 공부를 진행했다. 아래는 개념적인, 또는 실용적인 부분에서 기록 해놓으면 유용할 것 같아 적어둔 내용들이다.

인터프리터 언어
파이썬은 인터프리터 언어다. 컴파일 과정을 거칠 필요 없이 각각의 코드가 실시간으로 변환되는 만큼 유연하게 사용이 가능하다.

키워드
많은 프로그래밍 언어들이 그렇듯, 이미 언어에서 할당된 키워드들을 변수명으로 사용할 수 없다. 키워드를 확인하고 싶다면 아래 코드를 이용하면 된다.

import keyword
print(keyword.kwlist)

자료형 type

  • 정수형 int: 메모리가 허용하는 한 무한대로 사용 가능.
  • 실수형 float: 16-17번째에서 소실.
  • 문자/열형 str: ascii로 인코딩됨.
  • 논리형 bool: True=1 (데이터 없음: ' '); False=0 (데이터 있음: '')

데이터 입출력 input()
모든 입력 데이터는 str으로 입력된다.
특정 자료형의 데이터가 필요할 경우 형변환 해야 한다.

inputData = float(input('prompt here'))

format 문자열을 이용한 데이터 출력

print(f’string, {variable_here}’))

format() 함수를 이용한 데이터 출력

print('여기다 쭉 쓰고, {}, 이런 식으로..' .format(variable_here))

형식 문자를 이용한 데이터 출력

  • %f, %d, %s 로 표현
  • %f는 소수점 자리 표현 가능: e.g., %.3f
print('텍스트 중간에 이런 식으로 %.2f 하면 됨' % variable_here)

연산자

(사진출처: 제로베이스 데이터 취업 스쿨 강의 자료)

코딩의 가장 기본이 되는 친구들. 몇 개는 전에 쓰던 MATLAB과 차이가 있어 조금 더 익숙해질 필요가 있겠다.

추가적인 노트

  • 나눗셈의 결과는 항상 float로 출력된다.
  • 몫(//)과 나머지(%) 연산자를 따로따로 쓰는 대신, divmod(,) 함수를 통해 두 값을 tuple 자료구조로 출력 할 수 있다. 이때 두 값을 indexing으로 찾을 수 있다 (0=몫, 1=나머지).
  • 제곱근: x ** (1/n)
  • math 모듈의 제곱근과 거듭제곱 함수를 사용해 구할 수도 있다 (아래 예제).
import math
square_root = sqrt(x)
power_of = pow(x, n)

아래 연습 문제를 다른 계산법으로 접근해 보았다.
문제: 아들이 엄마한테 용돈을 받는데, 첫 달에는 200원을 받고 매월 이전 달의 2배씩 인상하기로 했다. 12개월째 되는 달에는 얼마를 받을 수 있는지 계산해 보자.

(사진출처: 제로베이스 데이터 취업 스쿨 강의 자료)

# 내 코드
t1_money = 200
month = 12
t12_money = t1_money * (2**(month-1))
print(t12_money)

복합 연산자를 사용해서 코드를 더 간단하게 사용 가능하다 (아래)

(사진출처: 제로베이스 데이터 취업 스쿨 강의 자료)

  • 문자도 ascii 기준으로 비교가 가능하다. 또한, ord() 함수를 통해 문자를 숫자로, chr() 함수를 통해 숫자를 ascii 대응 문자로 변환 가능하다.

논리연산자는 비교적 간단하지만 굉장히 핵심적인 개념.

  • and: 두 명제가 모두 참일 때 True.
  • or: 두 명제 중 하나 이상이 참일 때 True.
  • not: 특정 상태의 부정(예: not False = True)

Operator 모듈을 사용해서 연산자를 똑같이 활용할 수 있다. 그 외에도, 수학 연산과 난수 관련된 함수들이 있다. 이번 강의에서는 연산자 관련 함수들만 소개되었는데, 아직까지는 기본 연산자들에 비해 코드가 길어지는 느낌만 있고, operator 모듈을 쓰면 어떤 이점이 있는지 잘 모르겠다.


(사진출처: 제로베이스 데이터 취업 스쿨 강의 자료)

(실습하면서 발견한 작은 디테일) 아래 예제에서 1의 자리 숫자가 3의 배수인지 확인하는 라인에서(맨 마지막 줄), 만약 1의 자리 숫자가 0이라면 이 코드는 이것을 True (3의 배수)로 출력하는 오류가 있을 것 같다. 따라서 이 코드에 추가 논리 연산을 통해 0이 3의 배수로 판단되는 경우를 제외시켜야 한다.

(사진출처: 제로베이스 데이터 취업 스쿨 강의 자료)

# 내 코드
print('1st number 3: {}' .format(operator.and_(operator.mod(num1, 3) == 0, operator.gt(num1, 0))))

조건문
여기도 MATLAB과 소소한 차이점들이 존재한다. 파이썬이 더 편한 것 같다. 예를 들어, 변수 할당 라인에 ';' 안 넣어도 되고, 특히 중첩 조건문의 코드블럭 끝에 'end' 안 넣어도 되는 거!! 이거 디버깅할 때 은근히 성질 긁는다. 반면 파이썬은 알아서 코드블럭의 끝을 인식해주는 게 고맙다.

  • 조건문 작성 시, 실행문을 넣지 않고 'pass'를 넣어두면 코드가 문제 없이 돌아간다.
  • 모든 조건식은 if/else문으로 표현할 수 있다 (반대의 경우는 안되는 경우가 있다)
# 조건문
result = 'yes' if x > 0 else 'no'

# 같은 조건문을 if/else로 표현
if x > 0:
	result = 'yes'
else:
	result = 'no'

개인적으로는 후자가 더 읽기 편하다. 또한, 반대로 if/else문을 조건문으로 표현하는 것이 불가능한 경우다 있다(예를 들어, 코드블럭 안에서 변수 할당이 이루어질 경우). 이런 이유로 if/else문을 주로 사용하는 것이 더 용이할 듯 하다.

  • 다자택일 조건문 사용 시 조건식의 순서가 매우 중요하다. 따라서 혼란의 여지를 줄이기 위해 조건의 범위를 명확히 정의하는 것이 필요(예: 범위의 상한/하한을 모두 정의하기)
  • 중첩 조건문은 3개 넘어가면 피곤해진다. 코드가 못 생겨지고, 디버깅 할때 골치 아프다.

0개의 댓글