2장. 변수와 계산

13436 단어 pythonpython

변수(Variable)

  • 변수의 의미
    • 변수(variable)는 값을 저장하는 공간이다. 변수는 값을 저장하는 상자(메모리 영역)로 생각할 수 있다.
    • 변수에 값을 저장했다가 필요할 때 꺼내 쓸 수 있다.
    • 변수에 있는 값은 언제든지 다른 값으로 바뀔 수 있다.
      • 예) 파이썬으로 게임을 제작한다면 사용자의 점수는 게임을 하는 도중에 변경될 것이다. 10점짜리 아이템을 획득 하였다면 점수가 10점 증가되어야 한다. 이것은 이전의 점수가 어딘가에 저장되어 있어야 한다는 것을 의미한다. 이 때 변수를 사용해야 하는 것이다.
  • 변수와 메모리
    • 컴퓨터는 여러가지 값들을 저장하기 위한 메모리(Memory)(RAM, Random Access Memory)를 가지고 있으며 변수는 바로 이 메모리에 생성된다.
      예를 들어 num = 20 이란 코드가 있다면 num이라는 이름에 20이라는 값을 메모리의 어떠한 주소를 가지고 저장된다.
  • 변수 생성 과정

    • 변수의 이름을 정하고 등호(=,대입연산자)을 사용하여 값을 저장(=할당) 한다.
    • 변수에 값을 저장하는 문장을 할당문(assignment statement) 또는 대입문이라고 칭한다.
  • 변수의 사용 예

    • 게임에서 사용자의 기본 점수가 20점이라고 한다면 아래와 같이 코딩을 하면 될 것이다.

      .>>>score = 20

    • 위의 문장은 파이썬에게 변수 score를 생성하고 20이라는 값을 저장하라는 것이다.

    • = 연산자는 같다는 의미가 아니라 변수에 값을 저장한다는 의미이다.

      • 같다는 의미는 ==를 사용한다.
    • 변수의 값을 출력 할려면 아래와 같이 변수 이름만 입력하고 엔터키를 누르거나, print()함수를 이용하면 된다.

    • 생성된 변수에는 얼마든지 다른 값을 저장할 수 있다.(덮어쓰는 것이다)

      .>>>score
      20
      .>>> print(score)
      20
      //참고로 print함수의 score의 자리의 값을 매개변수, 파라메터, 인자값, 아규먼츠 라고 불린다.

    • 변수에는 다른 변수의 값도 저장할 수 있다.

    • 일반적으로는 변수에 어떤 수식의 값도 저장할 수가 있다.

    • 사각형의 가로 길이와 세로 길이를 나타내는 변수를 만들고 사각형의 면적을 계산하는 코드는 아래와 같이 코딩하면 될 것이다.

      .>>> width = 10
      .>>> height = 20
      .>>> area = width * height
      .>>> print(area)
      200

  • 변수에 문자열(string) 저장
    파이썬 변수에는 문자열 저장이 가능하다.

    .>>> str = '안녕하세요.' or "안녕하세요."
    // 문자열은 더블 쿼테이션, 싱글 쿼테이션 안에 작성해야한다.
    . >>> print(str)
    안녕하세요.

  • 변수에 실수 저장
    파이썬 변수에 실수 또한 저장이 가능하다.

    .>>> PI=3.141592
    .>>> print(PI)
    3.141592

  • 주의

    • 파이썬에서 값이 할당되지 않은 변수를 사용한다면 오류가 발생한다.

      .>>>print(str)
      NameError : name ‘str’ is not defined
      .>>>

    • 파이썬에서는 변수의 값만 변경할 수 있다. 변수 x에 1을 대입할 수 있지만, 1에는 x를 대입할 수 없다. 두 번째 줄에서 1은 변수가 아니기에 오류가 발생한다.

      .>>>x=1
      .>>>1=x
      SyntaxError : can’t assign to literal

변수와 상수(constant), 주석(comment)

  • 변수가 저장하는 것

    • 파이썬에서 변수는 어떤 데이터든 저장할 수 있다. 먼저 수를 저장할 수 있다. 2가지의 종류의 수를 저장할 수 있는데 하나는 정수(integer)이며, 소수점이 없는 수를 의미한다.파이썬에서는 이것을 int라고 칭한다.하지만 0.524와 같은 소수점이 있는 수가 필요하면 실수(floating-point)를 사용하면 된다. 이것을 float라고 칭한다. 데이터의 종류를 자료형(data type)이라고 한다. 또 변수는 “Hello”와 같은 문자열을 저장할 수 가 있다. 이 밖에 character, double 등 여러가지 자료형을 저장할 수 있다.

    • 파이썬에서는 변수에 어떤 자료형의 값이든지 저장할 수 있다. 파이썬에서 자료형은 값과 연관되고 변수와는 연관되지 않는다. 즉 동일한 변수에 여러 자료형의 데이터를 저장할 수 있다.

      • 파이썬이 이렇게 어떤 자료형의 데이터 든지 저장할 수 있는 것은 파이썬에서는 모든 것이 객체(object)로 되어 있기 때문이다. 변수에 저장되는 것은 실제로 객체의 주소이다. 따라서 객체이기만 하면 변수로 가리킬 수 있는 것이다.

        a=5, b=3.14, c='HELLO' 일 때
        a는 type: int로 값은 5, b는 type: float로 값은 3.14 c는 type: stirng, 값은 HELLO이다.

    • 엄연히 변수의 이름은 그 값의 주소값을 가지고 있다. C언어의 포인터 개념이다.

      • 예를 들어 num = 10 을 보면, C언어, java의 경우 스택이라는 메모리 공간에 num의 변수명으로 10의 값을 저장한다. 하지만 python에서는 10이라는 값이 객체 타입으로 변경되어 메모리의 힙 영역에 저장된다. 그리고 스택의 num이라는 변수가 힙의 10의 주소값을 저장한다.
    • 변수는 C언어와 같은 다른 언어들과 다르게 data type을 결정하지 않아도 된다. python은 값이 기입되는 순간 그 값에 따라 type이 결정된다.

  • 변수의 이름과 규칙

    • 변수의 이름은 의미있는 편이 좋다. 코드가 길어지면 프로그래머가 어떤 변수인지 알아차리기에 난감하기 때문이다.
    • 소문자와 대문자는 다르게 취급된다.
    • 변수의 이름은 영어와 숫자, 밑줄(_)로 구성된다.
      • 변수의 이름에는 공백이 들어가면 안된다. 숫자로 시작해도 안된다.
    • 보통 변수의 이름을 지을 때 첫 단어를 소문자, 나머지 단어의 첫 글자를 대문자로 적는다. 예를들어 mynewcar은 myNewCar이다. 이를 '낙타체' 라고 한다.
  • 상수(constant)

    • 상수는 한번 값이 결정되면 절대로 변경되지 않는 변수를 말한다.
    • 보통은 상수의 이름을 대문자로 작성하는 것이 관례이다.
    • 상수를 정의하는 이유는 값의 변경이 간단하기 때문이다 . 만일 위의 코드를 상수의 정의 없이 해야한다면 번거롭지만 상수를 정의한다면 상수의 값만 변경하면 된다.
TAX_RATE = 0.35
tax = 1000*TAX_RATE
income = 1000 - tax
print("현재의 세율은 ",TAX_RATE*100,"%입니다.")
  • 주석(comment)
    • 주석은 소스코드에 붙이는 설명글이다. 주석은 단지 프로그래머들이 코드를 쉽게 이해할 수 있게 하는 메모 같은 기능이다. 컴파일러는 주석을 기계어로 변환하지 않고 무시한다.
    • 파아썬에서는 '#'을 이용해 주석을 넣는다.
#사각형의 가로 길이
width = 10
#사각형의 세로 길이
height = 20
#사각형의 넓이 계산
area = width * height

수식과 연산자

  • 수식(expression)
    • 수식이란 피연산자들과 연산자의 조합을 의미한다.
    • 연산자(operator)는 연산을 나타내는 기호를 말하며, 피연산자(operand)는 연산의 대상이 되는 것을 의미한다.
    • 피연산자의 개수에 따라 1항, 2항, 3항 ... 으로 구분될 수 있다.
      • 예를 들어 (5 + 2)에서 5와 2는 피연산자, +는 연산자, 2항 이라고 할수 있다.
  • 산술 연산자
    • 산술 연산자는 기본적인 산술 연산인 덧셈, 뺄셈, 곱셈, 나눗셈, 나머지 연산을 실행하는 연산자 이다.

      연산자기호결과값
      덧셈+7 + 411
      뺄셈-7 - 43
      곱셈*7 * 428
      나눗셈(실수가 출력)/7 / 41.75
      나눗셈(정수가 출력)//7 / 41
      나머지%7 % 43
  • 지수(power) 계산하기
    • 지수를 계산하려면 ** 연산자를 사용한다.
    • 수학에서 처럼 지수 연산자는 다른 연산자들보다 높은 우선순위를 가진다.
  • 나머지 계산하기

    • 나머지 연산자 %는 나머지를 반환하는 연산자이다.
    • 나머지 연산은 모듈러스(modulus)연산이라고 불린다.
    • 연산자로 %를 쓰지만 퍼센트와 관련이 없다.
  • 연산자의 우선순위

    • 여러 연산자들이 하나의 수식에 섞어 있는 경우, 연산자는 우선순위에 따라 연산된다.
    • 산술 연산자의 우선순위는 다음과 같다.
      1. 지수(**)
      2. 곱셉, 나눗셈, 나머지
      3. 덧셈, 뺄셈
        - 일반적으로 왼쪽을 오른쪽을 진행된다.
    • 하지만, 괄호를 치는 것이 좋다. 그 이유는 코드를 보기 수월해지며 우선순위를 생각할 필요가 없기 때문이다.

함수(fuction)호출

  • 함수 호출
    • 함수란 특별한 기능을 담당하는 명령어들의 모임이다.
    • 파이썬이 기본으로 제공하는 내장 함수들이 많다.
    1. abs( )함수: 절대값 계산

    2. round( )함수: 소수 첫째 자리에서 반올림

    3. max( )함수: 매개변수 값들 중 최대값을 반환

    4. min( )함수: 매개변수 값들 중 최소값을 반환

    5. sqrt( )함수: 제곱근을 구함

      >>>form maht import*
      >>>sqrt(4.0)
      2.0
    • sqrt와 같은 수학적인 함수들은 math라고 하는 라이브러리에 저장되어 있다 .파이썬에서는 이 것을 모듈(module)이라고 부른다.
      math라이브러리에는 sin(), cos(), log() 등등의 다양한 함수가 존재하여 수학적 계산이 용이하다.

      from math import *
      라는 문장을 입력해 math 라이브러리의 모든 함수를 사용 할 수 있다.
      즉 sqrt같은 함수를 이용하기 위해서는 위의 문장을 입력해야 한다.

input 함수(), int()함수

  • input( ) 함수

    • 사용자의 '키보드로 부터 입력'을 받는 함수이다.

      변수 = input("프롬프트 문자열")

    • input()이 호출되면 프로그램의 실행은 잠시 중단된다. 사용자가 입력을 마치고 엔터를 누르면 프로그램이 계속해서 실행된다.
    • input()의 프롬프트 문자열은 화면에 출력되며 사용자에게 안내를 하는 용도로 사용되는 것이 바람직하다.
  • 문자열 입력

name = input("이름이 무엇인가요?")
print("만나서 반갑습니다. ",name,"씨!")
age = input("나이는요?")
print("그러면, 당신의 나이는 ",age,"살이시군요, ",name,"씨!")

출력 결과
이름이 무엇인가요? 홍길동
만나서 반갑습니다. 홍길동씨!
나이는요? 99
그러면, 당신의 나이는 99살이시군요, 홍길동씨!

  • 숫자 입력
x = input("정수입력x:")
y = input("정수입력y:")
sum = x + y
print("합은 "sum "입니다.")

출력결과
정수입력x: 10
정수입력y: 20
합은 1020입니다.

input함수는 문자열로 변수에 저장한다. 이에 위의 코드에서 정수가 아닌 문자열로 간주하여 그대로 합쳐버린다. 사용자로 부터 정수를 입력받기 위해서는 int( )함수 즉 문자열을 정수로 바꾸는 함수가 필요하다.

x = int(input("정수입력x:"))
y = int(input("정수입력y:"))
sum = x + y
print("합은 "sum "입니다.")

출력결과
정수입력x: 10
정수입력y: 20
합은 30입니다.

type()함수

	num1 = 10
    print(type(num1))

실행결과
<class 'int'>

type은 매개 변수의 데이터 타입을 나타낸다.
만일 num1 = "10" 이면 <class 'str'>이 나온다.

좋은 웹페이지 즐겨찾기