Skip to content
This repository was archived by the owner on Sep 15, 2023. It is now read-only.

코드를 짜기 전에

Kim, Hyeonseo edited this page Oct 2, 2018 · 2 revisions

어떻게 코드를 짜야 할까요?

PS에서 코드를 짜는 이유는 시간 내에 문제를 풀기 위해서입니다. 저희의 생각만으로는 문제를 풀 수 없으니 그걸 컴퓨터에게 시키는 것이죠. 그리고 시키는 과정을 위해 프로그래밍 언어가 존재합니다. 하지만 이 프로그래밍 언어를 컴퓨터가 이해하고 실행하는 방식이 우리가 생각한 방식과 달라 오류가 날 수도 있습니다. 다음 글을 읽으면서 그런 경우를 예방해 봅시다.

  • BOJ 101 : 백준 온라인 저지에서 문제를 풀 경우 자주 생기는 오류 및 주의 사항에 대해 정리 된 글입니다.

파이썬다운 코딩 스타일

파이썬은 언어 자체에서 들여쓰기 같은 코딩 스타일을 강제합니다. 파이썬에는 코드를 짤 때 지켜야할 것들을 정해 놓았는데 그걸 PEP(Python Enhancement Proposals)라고 합니다. 이 중에서 우리가 아마도 가장 자주 볼 것은 코딩스타일을 지정한 PEP8입니다. 중요한 내용 몇개만 여기에 가져오겠습니다.

  • 스페이스 4번으로 들여쓰기를 하세요.
  • 탭이나 스페이스를 섞어서 들여쓰기에 사용하지 마세요. 탭은 기존 코드에 탭을 사용했을 경우만 사용하세요.
  • 클래스 이름은 카멜케이스(CamelCase)를 사용합시다.
  • 변수나 함수 이름은 스네이크 케이스(snake_case)를 이용해서 소문자로 표시합니다.
  • 상수 이름은 전부 다 대문자로, 각 단어는 _를 이용하여 구분합시다. CONST_NAME이런식으로 말이죠.
  • 소스코드는 한줄에 79글자, 주석문이나 docstring 같은 경우는 72글자 까지만 쓰고 줄을 바꿉시다.
  • 여러 줄에 걸쳐서 연산자를 표시 할 때 연산자 앞에서 줄을 바꿔 표시합시다.
# No: operators sit far away from their operands
income = (gross_wages +
          taxable_interest +
          (dividends - qualified_dividends) -
          ira_deduction -
          student_loan_interest)

# Yes: easy to match operators with operands
income = (gross_wages
          + taxable_interest
          + (dividends - qualified_dividends)
          - ira_deduction
          - student_loan_interest)
  • 문자열을 표현하는 데 ""''를 섞어쓰지 마세요
  • import문은 한 줄씩 나눠서 씁니다. 단 from을 사용해서 같은 묘듈에서 여러개를 가져올 때는 예외입니다.
# Yes
import re
import sys

#Yes
from sys import setrecursionlimit, stdin

# No
import re,sys
  • 공백에 관하여
  1. 괄호안의 양쪽 끝, 콤마, 세미콜론, 콜론, 함수 이름과 괄호 사이 바로 앞에서 불필요한 공백을 피합시다.
# Yes
spam(ham[1], {eggs: 2})
foo = (0,)
print()
if x == 4: print x, y; x, y = y, x
dct['key'] = lst[index]

# No
spam( ham[ 1 ], { eggs: 2 } )
bar = (0, )
print ()
if x == 4 : print x , y ; x , y = y , x
dct ['key'] = lst [index]
  1. 대입 연산자 앞 뒤에는 한 칸 이상의 똑같은 공백을 넣읍시다
# Yes
x = 1
y = 2
long_variable = 3

# No
x             = 1
y             = 2
long_variable = 3
  1. 이항 연산자의 앞뒤로는 공백을 넣읍시다.
  2. 우선순위가 다른 연산자를 사용할 때는 낮은 우선순위의 연산자 사이에 한 칸의 공백을 넣읍시다.
#Yes
i = i + 1
submitted += 1
x = x*2 - 1
hypot2 = x*x + y*y
c = (a+b) * (a-b)

#No
i=i+1
submitted +=1
x = x * 2 - 1
hypot2 = x * x + y * y
c = (a + b) * (a - b)
  1. 키워드 인자나 기본 값으로 넘겨주는 경우에는 =앞뒤로 공백을 넣지 않습니다.
#Yes
def complex(real, imag=0.0):
    return magic(r=real, i=imag)

#No
def complex(real, imag = 0.0):
    return magic(r = real, i = imag)
  • 한 줄에 여러줄의 코드를 넣지 않습니다. 다만 짧은 if,for,while 문에서는 가능합니다.

Clone this wiki locally