MIT - Introduction to Computer Science and Programming in Python
Computation 기본 사항
- 연산자와 피연산자
- 명령문 어떻게 만드는 지
- 프로그램의 간단한 세트 소개
- 조건문
- 선언문
- 프로그램은 두 가지가 필요하다.
- 기본적인 데이터의 표현
- 데이터를 조작하기 위해 컴퓨터에게 명령을 내리는 방법
- 데이터타입 : 숫자형, 문자형, 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'
교수님이 강조하고 싶은 것
- 파이썬은 연산을 실행하기 전에 피연산자의 타입을 확인하여 에러를 잡는다.
- 좋은 프로그래밍 스타일
- 주석 사용
- 좋은 변수 이름 선택
- 조건문 프로그램 : if문
- 대입문
- if문 + :
- 콜론(:)은 명령문의 블록을 식별한다.
- 명령문 실행
- 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문
- 중요한 변수를 선택한다.
- 실행할 때마다 매번 바뀌어야 하는 것이 무엇인가
- 루프 밖에서 변수를 초기화시킨다.
- 옳은 테스트를 설계하는 것
- 바뀌는 변수를 포함하는 테스트
- 코드의 블록 만들기
- 코드의 블록은 명령문들의 세트. 즉, 루프를 통해 각각 행해지는 명령문들과 같은 세트이다.
- 변수를 바꾸기
- 변수를 바꾸지 않으면 무한루프에 빠진다.
- 언제 끝날지 결정하는 것
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