본문 바로가기

파이썬 3장 정리- 숫자와 문자열

#3 파이썬 입문하기 



(윈도우10 바탕으로)


* 파이썬을 실행하는데에 두 가지 방법이 있음.

1. 대화형 (윈도우에서는 cmd(인터프리터)와 대화 하듯이)

- 파이썬 실행하기 : python 입력 / 종료하기 : Ctrl + z (윈도우10 기준, 보통 윈도우는 ctrl+c)

- 입력 : 프롬프트('>>>'와'...')로 시작해서 유저가 명령어를 입력함..

- 출력 : 프롬프트가 없이 시작하는 줄은 인터프리터(cmd)가 출력하는 것.


2. 파일형

- 확장자 .py 파일

- 인터프리터(cmd)에서 파일을 실행


* 주석 (comment)

- '#'로 시작해서 그 줄 끝까지

- 문자열 리터럴 안의 #은 문자로 인식.



1. 계산기


-1. 숫자

>>> 2 + 2
4
>>> 50 - 5*6
20
>>> (50 - 5*6) / 4
5.0
>>> 8 / 5  # division always returns a floating point number
1.6

- 괄호는 묶는데 사용. (丸括弧-グループ化)

- 나눗셈 '/'은 항상 float 형 반환 (浮動小数点数を返し)



>>> 17 / 3  # classic division returns a float
5.666666666666667
>>>
>>> 17 // 3  # floor division discards the fractional part
5
>>> 17 % 3  # the % operator returns the remainder of the division
2
>>> 5 * 3 + 2  # result * divisor + remainder
17


- '//' : 정수 부분만 얻는 나눗셈

- '%' : 나머지


>>> 5 ** 2  # 5 squared
25
>>> 2 ** 7  # 2 to the power of 7
128


- '**' : 거듭제곱

- -5**2 =-25 : **가 -보다 우선순위가 높음


>>> 4 * 3.75 - 1
14.0

- 피연사자에 실수 -> 답도 실수로!



* 변수

>>> width = 20
>>> height = 5 * 9
>>> width * height
900

- 변수명 = 값


>>> n  # try to access an undefined variable
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'n' is not defined

- if) 변수가 정의 되어 있지 않았을 때, 오류발생


>>> tax = 12.5 / 100 >>> price = 100.50 >>> price * tax 12.5625 >>> price + _     # 100.50 + 12.5625

113.0625 >>> round(_, 2)    # 113.0625 -> 반올림해서 소수점 2째 자리수까지 표현 = 113.06

113.06

- '대화모드'에서 마지막으로 출력된 값은 변수 '_'에 저장 됨.

- 직접 대입 x

- round(숫자, 자릿수) : 반올림하여 소수점 자릿수까지 표현

- rount(숫자) : 반올림하여 int형 반환


* 복소수, 허수 지원 ex) 3+5j



2. 문자열 string


- 문자열은 '...', "..." (작은 따옴표, 큰 따옴표)로 표현. ( 파이썬에서는 '=" )


>>> 'spam eggs' # single quotes 'spam eggs' >>> 'doesn\'t' # use \' to escape the single quote... "doesn't" >>> "doesn't" # ...or use double quotes instead "doesn't" >>> '"Yes," they said.' '"Yes," they said.' >>> "\"Yes,\" they said." '"Yes," they said.'

- '\' : 이스케이프

- '...' 안에 있는 "는 이스케이핑 필요x (반대도)

- 작은 따옴표로만 있을 땐, 큰 따옴표로 표현 됨. 

-> 그외는 모두 작은 따옴표로!


>>> '"Isn\'t," they said.' # 잘 출력이 안됨 '"Isn\'t," they said.' >>> print('"Isn\'t," they said.') # 잘 출력됨!

"Isn't," they said. >>> s = 'First line.\nSecond line.' # \n means newline >>> s # without print(), \n is included in the output 'First line.\nSecond line.' >>> print(s) # with print(), \n produces a new line First line. Second line.

- print( ) : 출력 시, 따옴표를 생략하고, 이스케이프 된 특수문자를 잘 출력해서 읽기쉬움.


>>> print('C:\some\name')  # here \n means newline!
C:\some
ame
>>> print(r'C:\some\name')  # note the r before the quote
C:\some\name

- r'...' : 날 문자열(row String) \문자열을 특수 문자로 취급x


print("""\
Usage: thingy [OPTIONS]
     -h                        Display this usage message
     -H hostname               Hostname to connect to
""")

- """ : 삼중따옴표. 문자열 리터럴을 여러 줄로 확장. 

- """+\ : 출력 시, """ 표시 x


결과 :

Usage: thingy [OPTIONS]
     -h                        Display this usage message
     -H hostname               Hostname to connect to



* 문자열 제어


>>> # 3 times 'un', followed by 'ium'
>>> 3 * 'un' + 'ium'
'unununium'

- '+' 문자열 붙임

- '*' 문자열 반복


>>> 'Py' 'thon'
'Python'

- 문자열 리터럴이 연속하면 자동으로 붙여 짐.


>>> text = ('Put several strings within parentheses '
...         'to have them joined together.')
>>> text
'Put several strings within parentheses to have them joined together.'

- 이 기능은 문자열을 쪼개고자 할 때 특별히 쓸모 있음.


>>> prefix = 'Py'
>>> prefix 'thon'  # can't concatenate a variable and a string literal
  File "<stdin>", line 1
    prefix 'thon'
>>> prefix + 'thon'
'Python'

- 문자열 리터럴에만 적용 가능! (변수, 표현식 x)

- 변수를 이어 붙이려면 +를 사용해야 함



* 문자열 인덱스

- 문자열은 자동 인덱스 됨! (서브 스크립트) 

- 배열 처럼! 

- 첫 문자가 인덱스 0에 대응

>>> word = 'Python'
>>> word[0]  # character in position 0
'P'
>>> word[5]  # character in position 5
'n'


- 음수 인덱스. 끝에서 부터 '-1'부터 시작 (0=-0)

>>> word[-1]  # last character
'n'
>>> word[-2]  # second-last character
'o'
>>> word[-6]
'P'


* 인덱스 슬라이싱

- 인덱싱은 개별 문자를 얻는데 반면, 슬라이싱은 부분 문자열을 얻는데 사용.

>>> word[0:2]  # characters from position 0 (included) to 2 (excluded)
'Py'
>>> word[2:5]  # characters from position 2 (included) to 5 (excluded)
'tho'

- word[0:2] : [0] 부터 [2]전까지 (2개)

- word[2:5] : [2] 부터 [5]전까지 (5-2, 즉 3개)

- '시작'은 반드시 포함하지만 '종료위치'는 항상 포함x


>>> word[:2] + word[2:]
'Python'
>>> word[:4] + word[4:]
'Python

- 인덱스를 생략하면 기본값으로 시작 값과 종료 값

- 그러므로 위 같이, s[:n] + s[n:] 은 항상 s와 같음.


>>> word[:2] # character from the beginning to position 2 (excluded)
'Py'
>>> word[4:]   # characters from position 4 (included) to the end
'on'
>>> word[-2:]  # characters from the second-last (included) to the end
'on'

- 음수 인덱스 주의하기!

 +---+---+---+---+---+---+
 | P | y | t | h | o | n |
 +---+---+---+---+---+---+
 0   1   2   3   4   5   6
-6  -5  -4  -3  -2  -1


- 너무 큰 값을 인덱스로 사용하는 것은 x

>>> word[42]  # the word only has 6 characters
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: string index out of range


- 하지만 슬라이싱할 때는 부드럽게 처리 됨.

>>> word[4:42]
'on'
>>> word[42:]
''


- 한 번 정의된 문자열은 변경 x

- 인덱스로 참조 된 위치에 대입하려고 하면 에러

>>> word[0] = 'J'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment
>>> word[2:] = 'py'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment


- 내장 함수 len( ) 은 문자열 길이를 알려줌.

>>> s = 'supercalifragilisticexpialidocious'
>>> len(s)
34


--------------------------------------------------------


print('hello world'.capitalize())   # 첫 글자를 대문자로
print('hello world'.upper())        # 대문자로
print('hello world'.__len__())      # 문자열 길이 출력. 언더바 두번
print(len('hello world'))           # 더 좋은 방법
print('Hello world'.replace('world', 'programming'))
# world를 programming으로 바꾸기


실행결과

1
2
3
4
5
Hello world
HELLO WORLD
11
11
Hello programming

--------------------------------------------------------


1
2
3
4
5
6
print("egoing's \"tutorial\"")
print("\\")
print("Hello\nworld")
print("Hello\t\tworld")
print("\a")
print('Hello\nworld')

실행결과

1
2
3
4
5
6
7
8
egoing's "tutorial"
\
Hello
world
Hello world
Hello
world

--------------------------------------------------------


1
2
print(10+5)
print("10"+"5")

실행결과

1
2
15
105

--------------------------------------------------------


title = "python & ruby"
print("Title is "+title)

실행결과

1
Title is python & ruby


--------------------------------------------------------


1
2
3
4
name = "이상효"
print("안녕하세요. "+name+"님")
print(name+"님을 위한 강의를 준비했습니다.")
print(name+"님 꼭 참석 부탁드립니다.")

실행결과

1
2
3
안녕하세요. 이상효님
이상효님을 위한 강의를 준비했습니다.
이상효님 꼭 참석 부탁드립니다.

--------------------------------------------------------


1
2
3
4
donation = 200
student = 10
sponsor = 100
print((donation*student)/sponsor)

실행결과

20


--------------------------------------------------------