python 자료형과 연산

Posted on

파이썬 강좌는 유타시티를 이용해서 진행 할 겁니다. 참여하시는 분들은 계정을 만들고 ‘introduction to Python Programming’제목의 강좌에서 무료 수강을 누르면 됩니다.

왜 파이썬을 사용하는가?

파이썬은 현재 업계에서 가장 많이 사용하는 프로그래밍 언어중 하나이며 web development 부터 data science까지 폭넓게 이용되고 있습니다.

파이썬에서 주의할 점

  1. 파이썬은 대소문자를 구별한다.
  2. 파이썬에서는 띄어쓰기가 중요하다.
  3. 에러 메시지잘 읽는 것이 중요합니다.

자료형과 연산

Arithmetic Operators

  • +
  • -
  • *
  • /
  • %
  • ** 제곱을 의미합니다. 파이썬에서는 ^를 사용하지 않습니다.
  • // 나눗셈을 하고 나머지가 있으면 내림을 합니다.

Quiz

  1. 지난 석달간 전기료가 23, 32, 64원이었습니다. 그렇다면 석달간 평균 전기료는 얼마인가요?
  2. 두 화장실 바닥에 타일 공사를 합니다. 하나는 가로 9 세로 7장의 타일이 필요하고, 다른 하나는 가로 5 세로 7 장의 타일이 필요합니다. 타일 팩 하나엔 6장의 타일이 들어있습니다. 총 몇장의 타일이 필요합니까? 또 17팩을 사다놨다면 몇장의 타일이 남겠습니까?

다음중 어떤 형식의 코드가 가독성이 좋은가요? 답은 두개입니다.

  1. print(((3+ 32))+ -15//2)
  2. print((17 - 6)%(5 + 2))
  3. print ((1 + 2 + 4) / 13)
  4. print(4/2 - 7*7)

변수와 Assignment

x = 3
y = 4
z = 5

x, y, z = 3, 4, 5

위 두 표현은 같지만 되도록이면 위쪽 표현을 사용합니다.

변수 선언은 문자, 숫자, 언더바만! 사용가능 합니다. 공백이 있으면 안돼고, 글자로 시작하거나 언더바로 시작해야합니다. 숫자로 시작해도 안됍니다.

Quiz

첫째#로 시작하는 주석처리를 따라서 변수를 선언하세요

# 현재 수조에 있는 물의 부피입니다. (in cubic metres)
reservoir_volume = 4.445e8
# 폭풍으로 내린 비의 양입니다. (in cubic metres)
rainfall = 5e6

# rainfall 변수의 강수량을 10%줄여 보세요

# rainfall의 값을 reservior_volume에 더해보세요

# reservoir_volume의 양을 5%늘려 보세요

# reservoir_volume의 양을 5%줄여 보세요

# reservoir_volume의 양에서 2.5e5만큼의 부피를 빼세요

# reservoir_volume의 값을 print해보세요

둘째 다음 코드의 결과는?

carrots = 24
rabbits = 8
crs_per_rab = carrots/rabbits
rabbits = 12
print(crs_per_rab)

정수와 실수

파이썬에서는 정수끼리 나눗셈을 하면 그 결과가 실수가 됩니다. print(3/4)0.75가 됩니다. print(16/4)4.0이 됩니다.

형변환

x = int(4.7)   # x is now an integer 4
y = float(4)   # y is now a float of 4.0

타입 확인하기

>>> print(type(x))
int
>>> print(type(y))
float

실수는 신기하게도 정확한 값을 나타내지 않는다고 합니다. 본래 컴퓨터에서 부동소수점을 표현하는 한계라고 하며 그동안 다른 언어에서 못봤던 것은 기본적으로 출력모드에서 차이를 보이지 않도록 한 거라고 합니다. 예를 들면

>>> print(.1 + .1 + .1 == .3)
False

위 경우 0.1은 파이썬에서 0.1보다 살짝 크다고 합니다.

>>> print(.1 + .1 + .1 == .3)
0.300000000000000004

Boolean, comparison Operators, and Logical Operators

다들 알다시피 boolean에는 true, false가 있고 파이썬에서 1은 true, 0은 false를 의미합니다.

비교 연산자도 다른 언어와 비슷합니다.

  • >
  • <
  • <=
  • >=
  • ==
  • !=

그런데 논리연산은 조금 다릅니다. 기호 대신에 진짜 and, or, not 단어를 이용합니다.

  • and
  • or
  • not

예시

5 < 3 and 5 == 5
5 < 3 or 5 == 5
not 5 < 3

Quiz

다음은 샌프란시스코와 리오의 인구, 지역 크기입니다. 어느 곳이 더 인구밀도가 더 큰가요?

sf_population, sf_area = 864816, 231.89
rio_population, rio_area = 6453682, 486.5

san_francisco_pop_density = sf_population/sf_area
rio_de_janeiro_pop_density = rio_population/rio_area

String

파이썬에서 문자열은 큰따옴표로 만드나 작은따옴표로 만드나 같습니다. 그러면 문자열안에 따옴표를 넣고 싶으면 어떡하나요?

파이썬에서는 이 문제에 두가지 해결책이 있습니다.

  1. 작은따옴표로 문자열을 만들고 그 안에 큰 따옴표를 넣는다.
  2. 그런데 문자열 안에 두가지 따옴표를 모두 넣고 싶을때는 escape문자로 백슬래쉬를 이용합니다.
    salesman = '"I think you\'re an encyclopedia salesman"'
    

문자열을 연결 할 때는 덧셈 연산자를 사용합니다.

first_word = 'Hello'
second_word = 'There'
print(first_word + second_word)

문자열을 반복 할 때는 곱셈 연산자를 사용합니다.

word = "Hello"
print(word * 5)
>>> HelloHelloHelloHelloHello

len()함수

len()함수는 오브젝트의 길이를 반환하는 파이썬 내장 합수입니다.

print(len("ababa") / len("ab"))
2.5

Quiz

첫째 다음 코드는 SyntaxError를 일으킵니다. 올바르게 고치세요

ford_quote = 'Whether you think you can, or you think you can't--you're right.'

둘째 다음 코드의 결과는 무엇이며 integer형인가요? string형인가요?

coconut_count = "34"
mango_count = "15"
tropical_fruit_count = coconut_count + mango_count
print(tropical_fruit_count)

셋째 다음 코드들을 연결해서 예시처럼 보이게 하세요

username = "Kinari"
timestamp = "04:50"
url = "http://petshop.com/pets/mammals/cats"

예시

Yogesh accessed the site http://petshop.com/pets/reptiles/pythons at 16:20.

넷째 len()함수를 이용해서 아래 문자열들의 길이의 합을 구하세요

given_name = "William"
middle_names = "Bradley"
family_name = "Pitt"

name_length = #todo: calculate how long this name is

다섯째 len함수에 숫자를 넣어주면 어떤 결과가 나오나요?

Type and Type conversion

그동안 네가지의 자료형을 다뤘습니다.

  1. int - int()
  2. float - float()
  3. bool - bool()
  4. string - str()

타입 변환은 아래와 같은 방법으로 이루어 집니다.

count = int(4.0)
print(count)
print(type(count))

Quiz

첫째 월~금까지 판매액이 주어져있습니다. 이값을 모두 더하여 이번주 총 판매액 : xxx형태로 출력하세요

mon_sales = "121"
tues_sales = "105"
wed_sales = "110"
thurs_sales = "98"
fri_sales = "95"

String Methods

my_string = "sebastian thrun" 문자열이 있을때

>>> my_string.islower()
True
>>> my_string.count('a')
2
>>> my_string.find('a')
3

위와 같이 사용하며 더많은 메소드들이 내장되어 있습니다.

format()

메소드가 많이 있지만 몇가지만 짚어보겠습니다.

사용법

ex1

print("Mohammed has {} balloons".format(27))

실행결과

Mohammed has 27 balloons

ex2

animal = "dog"
action = "bite"
print("Does your {} {}?".format(animal, action))

실행결과

Does your dog bite?

ex3

maria_string = "Maria loves {} and {}"
print(maria_string.format("math", "statistics"))

실행결과

Maria loves math and statistics

split()

사용법

기본

new_str = "The cow jumped over the moon."
new_str.split()

실행결과

['The', 'cow', 'jumped', 'over', 'the', 'moon.']

separator 지정, split제한 하는법

new_str.split(' ', 3)

실행결과

['The', 'cow', 'jumped', 'over the moon.']

separator로 온점사용

new_str.split('.')

실행결과

['The cow jumped over the moon', '']

separator없고 split을 3개로 제한할때

['The', 'cow', 'jumped', 'over the moon.']

Quiz

verse = "If you can keep your head when all about you\n  Are losing theirs and blaming it on you,\nIf you can trust yourself when all men doubt you,\n  But make allowance for their doubting too;\nIf you can wait and not be tired by waiting,\n  Or being lied about, don’t deal in lies,\nOr being hated, don’t give way to hating,\n  And yet don’t look too good, nor talk too wise:"
  1. verse의 총 길이는 얼마입니까?(len사용)
  2. ‘and’가 처음 등장하는 부분의 인덱스는 몇번입니까?(find사용)
  3. ‘you’가 뒤에서 처음 등장하는 부분의 인덱스는 몇번입니까?(rfind사용)
  4. ‘you’는 총 몇번 등장 합니까?(count사용)

마치며

여기까지 파이썬의 기초를 다뤘습니다. 다음에는 파이썬 데이터구조를 다룰겁니다.

참고 : https://www.udacity.com/course/introduction-to-python–ud1110

작성자 : 이석원