파이썬

5. 기초


5.1. 주석

# Note that print is a statement
print "hello world" 

print "hello world" # Note that print is a statement

# 주석을 한글로 남길 경우, 코드 상단에 아래 인코딩이 필요하다
# coding=utf-8

5.2. 리터럴상수

리터럴 상수는 5,1.23과 같은 숫자나, 'This is a String' 혹은"It's a string!"과 같은 문자열을 말한다

리터럴 상수라고 부르는 이유는, 이 글자들이 프로그램 내에 직접 문자 형태로(literally) 지정되는 값이기 때문이다. 즉, 한번 지정되면 변하지 않는다.

5.3. 숫자형

숫자형에는 Integer(정수형)과 Float(부동 소수점) 숫자형 2종류가 있다.

부동 소수점 숫자는 3.23, 52.E-4와 같다.

5.4. 문자열

문자열은 문자의 나열, 또는 문자들의 집합이다.

문자열은 한번 만들어지만, 내용을 변경할 수 없다(수정불가)

문자열을 지정하는 방법은 아래와 같다.

  • ' ' => 'Very Good'
  • " " => "What's this?"
  • ' ' ' 또는 " " " (따옴표 세개)
    • 여러줄에 걸친 문자열을 표현한다
    • ' ' ' This is the first line. This is the Second line. "What's your name?", I ased. He said "Bond, James Bond." ' ' '
format 함수
  • 문자열을 생성할 때, 다른 정보를 포함해야 하는 경우가 있다 이를 문자열 포맷팅이라 하며, format()을 사용한다
# str_format.py

age = 20;
name = 'Swaroop'

print '{0} was {1} years old when he wrote this book'.format(name,age);
print 'Why is {0} playing with the python'.format(name);

print name + ' is ' + str(age) + ' years old'; # 가능하지만 쓰기/보기에 좋지 않다

실행 결과

$ python str_format.py

Swaroop was 20 years old when he wrote this book
Why is Swaroop playing with the python
Swaroop is 20 years old

중괄호 안에 숫자가 없으면 순서대로 치환한다.

print '{} was {} years old when he wrote this book'.format(name,age);
print 'Why is {} playing with the python'.format(name);

중괄호 안에 상세한 표현을 지정할 수도 있다

# 소수점 이하 셋제자리까지 부동 소수점 숫자 표기 (0.333)
print '{0:.3f}'.format(1.0/3)

# 밑줄(_)로 11칸을 채우고 가운데 정렬(^)하기 (__hello___) => 공백, 문자, 숫자 등도 가능
print '{0:_^11}'.format('hello');

# 사용자 지정 키워드를 이용해 (Waroop wrote A Byte of Python) 표기
print '{name} wrote {book}'.format(name='Swaroop', book='A Byte of Python')

# print 명령은 줄바꿈을 포함한다. 줄바꿈을 안하기 위해서는 print뒤에 comma(,)를 사용한다
print 'a',
print 'b'
이스캐이프(Escape) 문자

(1) 지정 문자인 따옴표('), 쌍따옴표(") 등을 표현하고 싶을 때 쓴다.

print 'What\'s your name?'

(2) 두 줄 이상의 문자열을 정의하고 싶을 때 쓴다

print 'This the first line. \nThis is the second line'

(3) \를 쓰고 싶으면 두번 쓴다

print '\\ is Escape'

(4) 문자열을 정의할 때, 여러 줄에 정의된 문자열을 끊김없이 이어 붙여 문자열을 정의할 수 있다.

myStr = 'This is teh first line. \
This the the second line.'

실행결과

This is teh first line. This the the second line.
순 문자열

문자열 내에 포함된 이스캐이프 문자 등을 처리하지 않고, 그대로 출력하고 싶을 때 사용한다

문자열 앞에 r 또는 R을 붙여 순(Raw) 문자열임을 표기한다

특히, 정규표현식을 사용할 때는 \를 넣으면 상당히 복잡해지는데, 순 문자열로 표기하면 짧게 표기할 수 있다.

print r"Newline are indiated by \n "

실행 결과

Newline are indiated by \n

5.5. 식별자

식별자 규칙

  • 첫 문자는 알파벳 또는 밑줄(_) 이어야 한다
  • 첫 문자를 제외한 나머지 문자들은 문자, 밑줄(_), 숫자가 될 수 있다
  • 대/소문자를 구분한다
  • 올바른 식별자는 예제는 i, name_2__3, 과 같다.
  • 올바르지 않은 식별자는 2Things, this is spaced out, >a1b2 등이 있다.

5.6. 객체

파이썬에서 사용되는 모든 것은 객체이다.

파이썬은 객체 지향 언어로써 숫자, 문자, 함수 등등 모든 것을 객체로 취급한다

6.7. 들여쓰기

파이썬에서 공백(들여쓰기, 탭 포함)은 중요한 역할을 한다. (파이썬에서는 공식적으로 공백 4개 사용 권장한다)

같은 들여쓰기 단계에 있는 명령들은 반드시 같은 들여쓰기를 사용해야 한다. 잘못된 들여쓰기는 오류를 일으킨다.

같은 들여쓰기를 사용하고 있는 명령들의 집합을 블록(block)이라고 부른다.

i = 5
# 다음 행에서 오류가 발생한다! 행 앞에 잘못된 공백이 있다.!

 print 'Value is ' +i
print 'I repeat, the value is ', i

실행 결과

  File "whitespace.py", line 5
    print 'Value is ' +i
    ^
IndentationError: unexpected indent

임의로 새 블록을 시작할 수 없다(흐름 제어 챕터에서 자세히 설명)

6.8. 논리적/물리적 명령행

물리적 명령행은 코드 내에 한 줄짜리 명령을 의미한다.

논리적 명령행은 코드 내에 표기된 줄과 관계없이 하나의 명령을 의미하는데, print 'hello world'와 같은 것이다.

만약, 한 줄에 print 'hello'; print 'world'; 명령이 있다면, 하나의 물리적 명령행에 두 개의 논리적 명령행이 위치한 것이다.

하지만, 한 물리적 명령행에 두 개 이상의 논리적 명령행을 사용하지 않는것을 권한다!! (아주 보기 않좋다!)


6. 연산자와 수식

6.1. 연산자

산술 연산자
  • +
  • *
  • *(곱셈)
    • 두 숫자의 곱, 혹은 지정된 숫자만큼 반복된 문자열을 반환한다
    • 'wo' * 2 = 'wowo'
  • ** (거듭제곱)
    • 3 ** 4 = 81 # =3*3*3*3)
  • /
  • %
비교 연산자
  • <, > : True(참), False(거짓)을 반환하는데 첫글자는 대문자이다
  • 3 < 5 < 7와 같이 여러 숫자에 대해 한꺼번에 비교 연산을 수행할 수 있다
비트 연산자
  • >> (오른쪽 시프트)
  • << (왼쪽 시프트)
  • & (비트 AND 연산)
  • | (비트 OR 연산)
  • ~ (비트 반전 연산)
    • 숫자 x의 비트 반전 연산값 -(x+1)을 반환

6.2. 연산 순서

파이썬의 연산자 우선순위는 아래와 같다.

  1. (expressions...), [expressions...], {key: value...}, {expressions...} (괄호, 튜플, 리스트, 사전, 집합)
  2. x[index], x[index:index], x(arguments...), x.attribute (원소 접근, 슬라이스, 함수 호출, 속성 참조)
  3. ** (거듭제곰)
  4. +x, -x, ~x (양수표현, 음수표현, 비트 NOT연산)
  5. *, /, //, % (곱셈, 나눗셈, 나누셈 후 내림연산, 나머지 연산)
  6. +, - (덧셈 뺄셈)
  7. <<, >> (시프트 연산)
  8. & (비트 AND)
  9. ^ (비트 XOR)
  10. | (비트 OR)
  11. in, not in, is, is not, <., <=, >, >=, !=, == (비교 연산, 요소 연산, 관계 연산)
  12. not x (불리언 NOT)
  13. and (불리언 AND)
  14. or (불리언 OR)
  15. if - else (조건 수식)
  16. lambda (람다 수식)
파이썬은 단어 사이에 자동으로 공백을 넣어준다!
length = 5
breadth = 2

area = length * breadth
print 'Area is', area # 자동으로 단어사이에 공백을 넣어준다
print 'Perimeter is', 2 * (length * breadth)

7. 흐름제어

7.1. if 문

# Sample 1

# 콜론(:)은 그 다음줄부터 새로운 Block이 시작된다는 의미
if True:  
    print 'Yes, it is true'

#Sample 2

number = 23
guess = int(raw_input('Enter an integer: '))    # raw_input() 함수로 사용자로부터 입력받음 
                                                # raw_input('hello') 함수 안에 문자열 넣어주면 화면에 출력
if guess == number: 
    # 새로운 Block 시작
    print 'Conguraturation! you guessed it!'
    # 새로운 Block 종료

elif guess < number:
    # 다른 Block 시작
    print 'No, it is a litter higher than that'

else:
    print 'No, it is a litter lower than that'

print 'Done'

7.2. while문

number = 23
running = True

while running:
    guess = int(raw_input('Enter an integer: '))

    if guess == number:
        print 'Conguraturation! '
        running = False
    elif guess < number:
        print 'No, it is a litter higher than that'
    else:
        print 'No, it is a litter lower than that'

# while에도 else절을 사용할 수 있다
else:
    print 'The while loop is over'

7.3. for문

for...in 문 파이썬의 내장 반복문으로, 객체의 열거형(Sequence)에 따라서 반복하여 실행할 때 사용된다.

# for에도 else 절을 사용할 수 있다!

for i in range(1,5):
    print i
else:
    print "the for loop is over"

실행 결과

C:\Python27\python.exe for.py
1
2
3
4
the for loop is over

7.4. break

break 문은 loop 문을 강제로 빠져나올 때 사용한다

break 문을 써서 for이나 while 루프를 빠져나오는 경우, else 블록은 실행되지 않는다.

while True:
    s = raw_input('Enter something: ')
    if s == 'quit':
        break
    print 'Length of the string is', len(s)
print 'Done'

실행결과

C:\Python27\python.exe break.py

Enter something: hello world
Length of the string is 11
Enter something: my name is Koo
Length of the string is 14
Enter something: quit
Done

7.5. continue

continue는 실행중인 loop 블록을 실행하지 않고, 곧바로 다음 loop로 넘어간다.

while True:
    s = raw_input('Enter something:')
    if s == 'quit':
        break
    if len(s) < 3:
        print 'Too small'
        continue
    print 'Input is of sufficent length'

실행결과


자료구조

실생활 문제 해결

객체 지향 프로그래밍

입출력

예외 처리

표준 라이브러리

심화

튜플 넘기기

특별한 메소드들

한줄짜리 블록

lambda식

리스트축약

함수 인자를 튜플이나 사전 형태로 넘겨받기

assert문

데코레이터


출처 : A Byte By Python

results matching ""

    No results matching ""