This repository was archived by the owner on Sep 15, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
코드를 짜기 전에
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- 공백에 관하여
- 괄호안의 양쪽 끝, 콤마, 세미콜론, 콜론, 함수 이름과 괄호 사이 바로 앞에서 불필요한 공백을 피합시다.
# 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]- 대입 연산자 앞 뒤에는 한 칸 이상의 똑같은 공백을 넣읍시다
# Yes
x = 1
y = 2
long_variable = 3
# No
x = 1
y = 2
long_variable = 3- 이항 연산자의 앞뒤로는 공백을 넣읍시다.
- 우선순위가 다른 연산자를 사용할 때는 낮은 우선순위의 연산자 사이에 한 칸의 공백을 넣읍시다.
#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)- 키워드 인자나 기본 값으로 넘겨주는 경우에는
=앞뒤로 공백을 넣지 않습니다.
#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문에서는 가능합니다.
내용에 대한 문의나 잘못된 내용이 있으면 dodok8@gmail.com으로 알려주세요.