Post

Python study 2 - 숫자, 변수, 자료형 변환, f-문자열, 연산

Python 숫자, 변수, 자료형 변환, f-문자열, 연산에 대해 학습합니다.


Python에서 사용되는 개념의 일부 혹은 전체를 정리하여 반복학습에 사용합니다.

  • 숫자와 연산자에 대해 학습합니다.
  • 변수와 복합대입연산자에 대해 학습합니다.
  • 자료형 변환과 input()함수에 대해 학습합니다.
  • format 함수와 split 함수, 그리고 f-문자열에 대해 학습합니다.
  • 파괴적 연산과 비파괴적 연산에 대해 학습합니다.

숫자


  • 정수(interger) : 소수점이 없는 숫자 (10, 222, 64)
  • 부동소수점(floating point) : 소수점이 있는 숫자 (10.1, 52.56, 64.0)
  • 숫자 연산자
    • 덧셈 : +
    • 뺄셈 : -
    • 곱셈 : *
    • 나눗셈 : /

      나눗셈은 정수 / 정수를 하더라도 부동소수점으로 결과가 출력됩니다.

    • 정수 나눗셈 : //
    • 나머지 : %

      정수나눗셈(몫)과 나머지 연산자는 알고리즘에 자주 활용되니 기억해주세요.

    • 제곱 : **
  • 연산자 조합
    • 정수 + 정수 : 나눗셈을 제외하고 정수로 출력
    • 부동소수점 + 부동소수점 : 부동소수점으로 출력
    • 정수 + 부동소수점 : 부동소수점으로 출력
    • 문자열 + 정수 : 문자열 * 정수 외 에러 발생
    • 문자열 + 부동소수점 : 불가
  • 연산자 우선순위 : 수학과 동일하되, 가독성을 위해 우선순위 상관없이 (괄호)로 구분하는것을 권장합니다.
    ex) 2 + 2 * 2 보다는 2 + (2 * 2) 권장
  • 부동소수점 연산의 주의점
    • 0.1 + 0.2 를 출력시 0.300000000004가 출력됩니다. 따라서, 0.1 + 0.2 == 0.3 이 프로그래밍 상 성립되지않습니다.
      이는 프로그래밍 개발의 한계로인해 부동소수점 연산은 정확한 결과값을 구하기 어렵습니다.
      정확도있는 부동소수점 연산을 하기위해서는 별도의 도구나 라이브러리를 이용해야 합니다.
      따라서 가급적 부동소수점으로 정확성있는 코드를 구축하지 않도록 합니다.


변수


  • 변수를 만드는 방법 식별자 = 값
    pi = 3.141592

  • 변수를 사용하는 방법 print(pi)

  • 변수와 관련된 용어
    • 정의(define) or 선언 : 변수를 만드는 행위
    • 할당(assign) : 변수에 값을 넣는 행위
    • 참조(reference) : 변수 안에 있는 값을 사용하는 행위
  • 복합 대입 연산자 : 변수에 값을 연산자해서 다시 변수에 적용 a += 1 == a = a + 1
    [변수] [연산자]= [값] 의 형태


input()함수와 자료형 변환


  • input()함수 : 사용자로부터 입력을 받아 문자열(str)로 반환
    1. 프롬프트(입력을 요청하는 문자열)를 출력
    2. 사용자로부터 입력을 받을 수 있게 일시정지
    3. 입력을 받으면 계속 진행
  • 문자열 → 숫자 변환 : 정수int() 또는 부동소수점float() 함수 사용
    int(“52”) → 52
    float(“52”) → 52.0
    int(“hello”) → 변환 불가시 ValueError 발생
    int(“52.55”) → ValueError
  • 숫자 → 문자열 변환 : 문자열str() 함수 사용
    str(52) → 52 (type : str)


format() 함수, split()함수, f-문자열


format() 함수

print(“{}”.format(10)) → 10이라는 값이 {}안에 들어가서 문자열 출력
print(“{}년 {}월 {}일”.format(2024, 7, 14)) → 2024710일 출력

split() 함수

split 함수는 문자열 일부를 잘라서 문자열 여러개로 만드는 함수입니다.
예시1) print(“10 20 30 40”.split(“ “)) → 문자열을 " "공백 단위로 잘라서 리스트 생성
예시2) print(“10-20-30-40”.split(“-“)) → 문자열을 -단위로 잘라서 리스트 생성
예시3) print(“10 20\t30\n40”.split()) → 문자열을 공백단위로 잘라서 리스트 생성
예시1, 2, 3 출력값 = [‘10’, ‘20’, ‘30’, ‘40’]

split()함수에서 ()안에 내용을 생략하면 공백(띄어쓰기, 줄바꿈, 탭 문자 등)으로 자릅니다.

strip() 함수

strip 함수는 문자 앞과 뒤에있는 공백을 없애줍니다.

1
2
a = "   Hello World!           "
print(a.strip())

출력값 : Hello World!

오른쪽/왼쪽 한쪽만 공백을 제거할 수도 있습니다.
lstrip() : 왼쪽 공백 제거
rstrip() : 오른쪽 공백 제거

f-문자열

f-문자열은 {}안에 값[표현식]을 입력하여 활용합니다.
예시1) "{} + {} = {}".format(a, b, a + b)f"{a} + {b} = {a + b}"로 표현


파괴적 연산과 비파괴적 연산


  • 파괴적 연산 : 피연산자를 바꾸는 연산
    a = a + 10
    a = 20
    a = 40

  • 비파괴적 연산 : 피연산자를 바꾸지 않는 연산. 할당을 안하면 적용이 되지 않습니다.
    a + 10
    a * 20
    a - 40
    a + a
    a.format()
    a.split()
    a.upper()
    a.lower()
    a.strip()
    a.isㅇㅇ()

할당 연산자 =를 제외하면 기초 연산은 비파괴적 연산입니다.

  • upper()와 lower()함수
    • upper() : 소문자를 대문자로 변경
    • lower() : 대문자를 소문자로 변경

      print(a.upper())사용시, upper()함수는 비파괴적 연산이지만 함수를 정상적으로 실행합니다.
      이는 print(a + 10)에서 +연산자가 비파괴적 연산이여도 정상적으로 실행되는 원리와 동일합니다.

  • isㅇㅇ() 함수 a.isalpha() : a라는 문자열이 알파벳으로 구성되어있는지 확인하여 True/False 반환하는 함수

  • find()와 rfind()함수 : 문자열 내에서 찾는문자열이 몇번째 위치했는지 찾는 함수
    • find() : 왼쪽부터 탐색
    • rfind() : 오른쪽부터 탐색
    • 없는 문자열 탐색시 -1 출력
  • 문자열의 in 연산자 : 문자열 내부에 어떤 문자열이 있는지 확인
    print(“안녕” in “안녕하세요”) → True
    print(“잘가” in “안녕하세요”) → False
This post is licensed under CC BY 4.0 by the author.