TEAMLAB

Human knowledge belongs to the world . -AntiTrust

(2,3)연산자와 피연산자, 반복문, 조건문, 분기문, 그리고 공통적인 코드 패턴과 반복적인 프로그램

MIT - Introduction to Computer Science and Programming in Python

Computation 기본 사항

  1. 연산자와 피연산자
  2. 명령문 어떻게 만드는 지
  3. 프로그램의 간단한 세트 소개
  4. 조건문
  5. 선언문

- 프로그램은 두 가지가 필요하다.

  • 기본적인 데이터의 표현
  • 데이터를 조작하기 위해 컴퓨터에게 명령을 내리는 방법

- 데이터타입 : 숫자형, 문자형, Boolean

e.g.1) 데이터의 형 변환

>>> 3*4 #
12

>>> 'ab'+'ab'
'abab'

>>> 3*'ab'
'ababab'

>>> 3+'ab'    #정적 의미의 에러가 난다.
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'int' and 'str'

>>> str(3) +'ab'
'3ab'

교수님이 강조하고 싶은 것

  • 파이썬은 연산을 실행하기 전에 피연산자의 타입을 확인하여 에러를 잡는다.

- 좋은 프로그래밍 스타일

  1. 주석 사용
  2. 좋은 변수 이름 선택

- 조건문 프로그램 : if문

  1. 대입문
  2. if문 + :
    • 콜론(:)은 명령문의 블록을 식별한다.
    • 명령문 실행
  3. else:
    • 명령문 실행

e.g.1)

>>> x=15                #1
>>> if (x%2)*2 == x:    #2
...     print('Even')
... else:               #3
...     print('odd')
...
odd
  • Boolean(True/False)는 AND/OR/NOT 을 사용

- 반복문 프로그램 : for문

  1. 중요한 변수를 선택한다.
    • 실행할 때마다 매번 바뀌어야 하는 것이 무엇인가
  2. 루프 밖에서 변수를 초기화시킨다.
  3. 옳은 테스트를 설계하는 것
    • 바뀌는 변수를 포함하는 테스트
  4. 코드의 블록 만들기
    • 코드의 블록은 명령문들의 세트. 즉, 루프를 통해 각각 행해지는 명령문들과 같은 세트이다.
    • 변수를 바꾸기
    • 변수를 바꾸지 않으면 무한루프에 빠진다.
  5. 언제 끝날지 결정하는 것

e.g.1)

>>> x = 141405
>>> ans = 0
>>> if x>=0:
...     while ans*ans < x:
...             ans=ans+1
...     if ans*ans != x:
...             print(x, "is not a perfect square")
...     else:
...             print(ans)
... else:
...     print(x, 'is a negative number')
...
141405 is not a perfect square

e.g.2)

>>> x = 10
>>> i = 1
>>> while i<x:
...     if x%i == 0:
...             print('divisor', i)
...     i =i+1
...
divisor 1
divisor 2
divisor 5

교수님이 강조하고 싶은 것

  • 테스트는 변하고 있는 어떤 루프 변수를 포함해야한다는 것

- Flow Chart

flow chart를 그려보면서 코드를 짜면 if문이나 for문 등을 포함한 전체적인 코드의 알고리즘을 정리하는데 도움을 준다.
e.g)

- 튜플(Tuple) : 요소의 순서대로 정렬, 이 때 순서는 불변.

e.g.1)

>>> test
(1, 2, 3, 4, 5)
>>> test[0] # selection
1
>>> test[2]
3
>>> test[10]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: tuple index out of range
>>> test[-1]
5
>>> test[1:3] #slicing
(2, 3)

- 문자열(string) selection, slicing하기

e.g.1)

>>> s1 ='abcde'
>>> s2 ='fghijkl'
>>> s1 +s2
'abcdefghijkl'
>>> s1[0]    #selection
'a'
>>> s1[2]
'c'
>>> s1[2:4]    #slicing
'cd'
>>> s1[:5]
'abcde'

- 연습 : 반복문 시행 및 데이터 타입 바꿔보기

>>> sumDigits = 0
>>> for x in str(1952):
...     sumDigits += int(x)
...
>>> print(sumDigits)
17