no image
[Python] 변수와 입력
변수 변수의 개념 변수 : 값을 저장할 때 사용하는 식별자 파이썬에서는 숫자형/문자형을 비롯한 모든 데이터 타입에 대해 그것을 지칭할 수 있는 이름을 자유롭게 만들 수 있고 (키워드는 변수이름으로 사용 못함), 컴퓨터 하드웨어 중 메모리에 변수에 대한 공간을 만들고, 값을 할당함 컴퓨터의 메모리 공간에 이름을 붙이는 것으로 우리는 여기에 값을 저장할 수 있다. C언어에서는 직접 메모리 상의 공간에 접근할 수 있는‘포인터’를 제공하고 있으나, 파이썬에서는 포인터가 없고, 단지 객체의 참조값만 확인할 수 있음 불변 객체와 가변 객체 불변 객체 불변 객체(immutable object)은 한번 만들어지면 변경할 수 없는 객체 우리가 변수에 저장된 값을 변경하면 값을 저장하는 새로운 객체가 생성되어서 새로운 객..
2023.08.26
no image
[Python] 문자형
문자열 문자와 단어 등으로 구성된 문자들의 집합을 의미 Python의 문자열은 유니 코드 문자를 나타내는 바이트 배열 단일 문자는 길이가 1 인 문자열 숫자도 따옴표 안에 있으면 문자열 파이썬의 문자열 리터럴은 작은 따옴표 또는 큰 따옴표로 묶음 -> 작은 따옴표 또는 큰 따옴표 세 개를 연달아 입력하는 방법도 가능 간단한 문자열 만들어 보기 • “Hello” • ‘안녕하세요’ • '''문자열을 공부하고 있습니다.''' • """문자열을 공부하고 있습니다.""" 문자열 내부에 따옴표를 넣으려면? 큰따옴표(작은따옴표) 안에 작은따옴표(큰따옴표)로 문자를 표기해야 함 ""안에 ""을 넣는다면, 단순 문자열이 두 번 반복되는 걸로 파이썬 인터프리터는 이해함 예 : ""안녕"하세요" → “”, “하세요” 가 독..
2023.08.25
no image
[Python] 파이썬 자료형
자료형 파이썬에서의 자료형 프로그래밍을 할 때 쓰이는 숫자, 문자열 등 자료 형태로 사용하는 모든 것을 뜻함 프로그램의 기본이자 핵심 단위임 C언어나 Java 같은 프로그래밍 언어와 달리, 파이썬에서는 코드를 작성할 때 프로그래머가 자료형을 지정하지 않아도 됨 프로그래밍 시 자료형을 지정하지 않아도 되긴 하지만, 파이썬 내부에서는 자동으로 자료형을 정해줌 • 런타임(실행 시간) 시에 자료형이 결정됨 • 자동으로 지정된 자료형은 어떻게 확인할 수 있나? -> type( )이라는 함수를 통해서 확인할 수 있음 • 실행시켜 보기 전에는 오류를 검출하기 어렵지만, 유연하고 빠르게 코딩이 가능 숫자형(수치 자료형) 숫자형(number)이란 숫자 형태로 이루어진 자료형으로, 123 같은 정수, 12.3 같은 실수,..
2023.08.24
no image
[Python] 파이썬 기본적인 용어
키워드(keyword) 파이썬이라는 프로그래밍 언어가 만들어질 때, 이런 단어들은 파이썬 자체적으로 사용하겠다고 예약해 놓은 단어들 (총 35개) 키워드로 지정된 단어들은 변수명 같이 나중에 사용자가 마음대로 정할 수 있는 이름들로는 사용될 수 없기 때문에 알고 있어야 함 식별자(identifier) 키워드 외에 프로그램에서 사용자가 필요에 따라 이름을 만들어 사용하는 단어 즉, 변수, 상수, 함수, 클래스 등의 구분을 위해 사용하는 이름 식별자를 작성하는데 정답은 없지만 대부분의 경우 많은 프로그래머들이 관례적으로 사용하는 카멜 기법과 파스칼 표기법을 적절하게 조합 • 변수명이나 함수명은 카멜 표기법 • 클래스명은 파스칼 표기법 식별자 작성 규칙 식별자로 쓸 수 있는 문자 • 영문 대/소문자(A~Z, ..
2023.08.23
no image
[Python] 내장 함수
파이썬에는 많은 내장 함수가 있다. 모든 내장 함수를 다루고 싶지만, 모든 내장 함수를 정리하는 것은 시간도 많이 필요하고 비 효율적이다. 그래서 사용 빈도가 높은 함수들만 정리하겠다. 숫자 관련 내장 함수 int() 함수 문자열 형태의 숫자나 소수점이 있는 숫자 등을 int 형태로 리턴함 int(1.23) #1 int(123) #123 int("123") #문자열도 숫자로 바꿀 수 있음 int(True) #1 0은 False, 1은 True(0 이외의 숫자는 모두 True임) float() 함수 문자열 형태의 숫자나 소수점이 없는 숫자 등을 float형태로 리턴함 float("123") #123.0 float(10) #10.0 float(True) #1.0 float(1.123) #1.123 문자열 관..
2022.12.09
no image
[Python] 예외 처리
오류의 종류 프로그램 실행 전에 발생하는 오류 : 문법 오류 프로그램 실행 중에 발생하는 오류 : 런타임 오류(예외) 예외 처리는 런타임 오류를 최대한 줄이는 것이다. try-except try-except의 기본 형태 try: #예외가 일어날 것 같은 코드 입력 except: #예외가 일어나면 할 작업 입력 try블록에는 예외가 일어날 것 같은 코드를 입력한다. try블록에서 오류가 일어난다면 except블록에 입력된 명령이 실행된다. try블록에서 오류가 일어나지 않는다면 except블록의 명령이 실행되지 않는다. intnum = input("정수를 입력하세요 : ") try: print(f"당신이 입력한 값은 {int(intnum)}입니다") except: print("잘못된 값을 입력했습니다.")..
2022.12.09
no image
[Python] 파일 입출력
파일 입출력을 알기 전에 파일 입출력을 알기 전에 알아야 하는 개념이 있다. 파일의 논리적 구조 파일 안에는 byte들이 순차적으로 저장되어 있다. 파일의 맨 끝에는 EOF(end-of-file)마커가 있다. 파일 포인터 파일의 입출력 동작이 발생하는 위치를 파일 포인터라고 한다. 파일을 처음 열면, 파일 포인터는 파일의 첫 번째 바이트를 가리킨다. 파일의 내용을 읽거나 쓰면 파일 포인터는 자동으로 업데이트(다음 바이트를 가리킴)된다. 파일 열고 닫기 파일 열기 open()함수를 이용하여 파일을 열 수 있다. close()함수를 이용하여 파일을 닫을 수 있다. open() : 파일의 이름을 받아서 파일 객체를 생성한 후 이를 반환 close() : 파일 객체가 가지고 있는 close()메소드 호출 시 파..
2022.12.08
no image
[Python] 모듈
모듈이란? 여러 개의 변수와 함수를 지니고 있는 집합체를 모듈이라고 한다. -자바의 라이브러리와 유사한 개념 모듈은 표준 모듈과 외부 모듈로 나뉜다 표준 모듈 : 파이썬이 기본적으로 내장하고 있는 모듈 외부 모듈 : 개발자가 만들어서 공개한 모듈 여러 개의 변수와 함수를 지닌 집합체를 모듈이라고 하고 이러한 모듈이 합쳐진 것을 패키지라고 한다. -모듈을 디렉토리 형식으로 구조화한 것이 패키지 모듈을 사용하는 이유 코드 재사용에 유리 코드를 기능별로 구분하고 관리에 편리 복잡하고 어려운 기능을 포함하는 프로그램을 간단한 코드로 제작 가능 모듈 사용하기 import문으로 모듈을 가져올 수 있다. import random #랜덤 모듈 가져오기 print(random.randint(0,10)) from문으로 특..
2022.12.08

변수

변수의 개념

변수 : 값을 저장할 때 사용하는 식별자

파이썬에서는 숫자형/문자형을 비롯한 모든 데이터 타입에 대해 그것을 지칭할 수 있는 이름을 자유롭게 만들 수 있고 (키워드는 변수이름으로 사용 못함), 컴퓨터 하드웨어 중 메모리에 변수에 대한 공간을 만들고, 값을 할당함

 

컴퓨터의 메모리 공간에 이름을 붙이는 것으로 우리는 여기에 값을 저장할 수 있다.

 

C언어에서는 직접 메모리 상의 공간에 접근할 수 있는‘포인터’를 제공하고 있으나, 파이썬에서는 포인터가 없고, 단지 객체의 참조값만 확인할 수 있음

 

불변 객체와 가변 객체

불변 객체

  • 불변 객체(immutable object)은 한번 만들어지면 변경할 수 없는 객체
  • 우리가 변수에 저장된 값을 변경하면 값을 저장하는 새로운 객체가 생성되어서 새로운 객체의 참조값이 변수에 저장됨
  • 정수, 실수, 문자열, 튜플 등

 

가변 객체

  • 가변 객체(mutable object)는 변경할 수 있는 객체
  • 리스트, 세트, 딕셔너리 등

 

 


 

 

입력

  • 프로그램을 만들다 보면, 사용자로부터 입력을 받아서 활용하는 경우가 많음
  • 파이썬의 경우 사용자 입력을 받을 때 input() 함수를 사용하여 받을 수 있음
  • input() 함수를 통해 입력 받은 값은 변수에 할당할 수 있음

 

  • input() 함수를 통해 입력 받은 값의 데이터 타입은
    무조건 문자열(str) 형태
  • 따라서 숫자를 넣어줬으면, 
    문자열 → 숫자형으로 변형시켜줘야 함
  • 문자형 → 정수형/실수형으로 변형할 수 있는
    int(), float() 함수를 사용해야 함

'Python Category > Python' 카테고리의 다른 글

[Python] 문자형  (0) 2023.08.25
[Python] 파이썬 자료형  (0) 2023.08.24
[Python] 파이썬 기본적인 용어  (0) 2023.08.23
[Python] 내장 함수  (0) 2022.12.09
[Python] 예외 처리  (2) 2022.12.09

문자열

  • 문자와 단어 등으로 구성된 문자들의 집합을 의미
  • Python의 문자열은 유니 코드 문자를 나타내는 바이트 배열
  • 단일 문자는 길이가 1 인 문자열
  • 숫자도 따옴표 안에 있으면 문자열
  • 파이썬의 문자열 리터럴은 작은 따옴표 또는 큰 따옴표로 묶음
    -> 작은 따옴표 또는 큰 따옴표 세 개를 연달아 입력하는 방법도 가능
간단한 문자열 만들어 보기
• “Hello” • ‘안녕하세요’
• '''문자열을 공부하고 있습니다.'''
• """문자열을 공부하고 있습니다."""

 

문자열 내부에 따옴표를 넣으려면?

  • 큰따옴표(작은따옴표) 안에 작은따옴표(큰따옴표)로 문자를 표기해야 함
  • ""안에 ""을 넣는다면, 단순 문자열이 두 번 반복되는 걸로 파이썬 인터프리터는 이해함
    예 : ""안녕"하세요" → “”, “하세요” 가 독립된 문자열로 인식됨. 안녕은 문자열로 인식도 안됨
  • 혹은 이스케이프 문자 (역슬래쉬 \ 기호와 함께 사용, 한국어 키보드에서는 원화표시 ₩)를 함께 사용
    예 : \', \''

 

 

문자열 연산

  • 문자열 연산에도 숫자형과 비슷하게 +, * 연산을 적용할 수 있음
  • + : 주어진 여러 문자열 연결 (합치기)
    문자열 + 문자열 + ,,, + 문자열 (O) 
    문자열 + 숫자형 (X)
  •  * : 주어진 문자열 반복
    문자열 * 반복 횟수(숫자)
    반복 횟수(숫자) * 문자열

 

문자열 연산에도 아래 복합대입연산을 적용할 수 있음

 

문자열 in 연산
문자열 내부에 어떤 문자열이 있는지 확인하려면 in 연산자를 사용할 수 있고, true/false를 반환해줌

 

 

문자열 인덱싱

  • 문자열 내부적으로 보면 하나의 단어는 각각 하나의 인덱스(index)에 맵핑 될 수 있음

  • 기본적인 인덱스는 0부터 시작되며, 해당 문자열의 길이-1까지 인덱스가 존재함
    “안녕하세요”는 길이가 5이므로, 인덱스는 0~4까지 가능
  • 문자열을 받은 변수 혹은 문자열 자체에 대해서 인덱스를 대괄호[]와 함께 사용해서 접근할 수 있음
  • 인덱스는 양수뿐만 아니라 음수도 가능함

 

 

문자열 슬라이싱

  • 주어진 문자열에 대해서 특정 문자 1개에만 접근할 수 도 있지만, 문자열의 범위를 선택해야 하는 경우도 있음
    예 : 문자열의 두 번째 문자부터 다섯 번째 문자까지 선택하기
  • 이렇게 부분 문자열을 추출하는 방법을 슬라이싱이라고 하며, 대괄호와 :을 통해서 표시할 수 있음
  • 작성 방법: [ : ]  -> [부분 시작 문자의 인덱스 : 부분 끝 문자의 인덱스 + 1]
    예 : a[1:4] → 문자열 a의 부분 시작 문자의 인덱스 1부터
    부분 끝 문자의 인덱스 3 → “녕하세” 선택

 

생략 슬라이싱
• 대괄호 안에 넣는 숫자 둘 중 하나를 생략하여 사용할 수 있음
예 : [1:] [: 3]
• 뒤의 값 생략 시 가장 최대 위치 (마지막 글자)까지 지정
[1:] → [1:가장 마지막 글자 인덱스 + 1]
• 앞의 값 생략 시 가장 최소 위치 (첫번째 글자)부터 지정 [:3] → [0:가장 마지막 글자의 인덱스인 2 + 1]

 

 

  • 슬라이싱에서도 인덱싱과 같이 음수도 가능
    • a[1:-2] → “녕하”
  • 여기서도 뒷 인덱스는 원하는 끝 문자의 index보다 하나 커야 함
    부분 끝 문자의 인덱스 -3 + 1 = -2
    A[-5: -2] → “안녕하”

음수를 사용하는 슬라이싱에서도 앞/뒤 숫자 중 하나를 생략할 수 있음

뒤의 값 생략 시 가장 최대 위치 (마지막 글자)까지 지정 → a[-4:]
앞의 값 생략 시 가장 최소 위치 (첫번째 글자)부터 지정 → a[:-1]

슬라이싱시 아무런 숫자를 주지 않으면?
전체 문자열을 슬라이싱 함

 

 

문자열 관련 함수

문자열 길이 구하기

  • len() 함수
  • ()안에 문자열을 넣으면 주어진 문자열의 문자 개수(=문자열의 길이)를 계산해서 돌려줌
    예 : len(“안녕하세요”) → 5라는 숫자를 돌려줌
  • 문자열에 공백이나 이스케이프 문자가 있을 경우 그것도 count하여 돌려줌

 

 

문자열 찾기

  • find()라는 함수는 입력으로 주는 argument 문자가 처음 나타나는 위치(index 값)를 반환해주는 작업을 함

 

format() 함수

  • “”로 묶인 문자열 안에 있는 중괄호{} 안의 문자가 format() 함수의 argument 로 주는 값으로 대치됨
    예 : “제 나이는 {} 살 입니다.”.format(20) → {} 대신 20으로 대치가 됨

 

 

대소문자 바꾸기

  •  upper(), lower() 함수
  • upper() 함수는 모든 알파벳을 대문자로 변환
  • lower() 함수는 모든 알파벳을 소문자로 변환

 

 

문자열의 양 옆의 공백 제거하기

  •  strip() 함수

 

 

문자열의 구성 파악하기

  • isOO() → is가 붙어있기 때문에 True 혹은 False 반환
  • isalnum(): 문자열이 알파벳 또는 숫자로만 구성되어 있는지 확인
  • isalpha(): 문자열이 알파벳으로만 구성되어 있는지 확인
  • islower(): 문자열이 모두 소문자로만 구성되어 있는지 확인
  • isupper(): 문자열이 모두 대문자로만 구성되어 있는지 확인

 

 

문자열 자르기

  • 문자열을 특정한 문자로 자르고 싶을 때 split() 함수를 사용
  • default는 white space(공백)

'Python Category > Python' 카테고리의 다른 글

[Python] 변수와 입력  (0) 2023.08.26
[Python] 파이썬 자료형  (0) 2023.08.24
[Python] 파이썬 기본적인 용어  (0) 2023.08.23
[Python] 내장 함수  (0) 2022.12.09
[Python] 예외 처리  (2) 2022.12.09

자료형

파이썬에서의 자료형

  • 프로그래밍을 할 때 쓰이는 숫자, 문자열 등 자료 형태로 사용하는 모든 것을 뜻함
  • 프로그램의 기본이자 핵심 단위임
  • C언어나 Java 같은 프로그래밍 언어와 달리, 파이썬에서는 코드를 작성할 때 프로그래머가 자료형을 지정하지 않아도 됨

프로그래밍 시 자료형을 지정하지 않아도 되긴 하지만, 파이썬 내부에서는 자동으로 자료형을 정해줌
• 런타임(실행 시간) 시에 자료형이 결정됨
• 자동으로 지정된 자료형은 어떻게 확인할 수 있나? -> type( )이라는 함수를 통해서 확인할 수 있음
• 실행시켜 보기 전에는 오류를 검출하기 어렵지만, 유연하고 빠르게 코딩이 가능

 


 

숫자형(수치 자료형)

  • 숫자형(number)이란 숫자 형태로 이루어진 자료형으로, 123 같은 정수, 12.3 같은 실수, 2진수, 8진수, 16진수 등이 있음

정수를 2, 8, 16진법으로 변화할 수 있는 함수(메소드) 및 표현

 

정수(int, integer)와 실수(float, floating point)

  • 정수와 2/8/16진법 사이의 변환처럼, 서로 다른 데이터 타입 사이의 변환이 가능함
  • float(변수이름) → 변수이름의 자료형을 float로 변환
  • int(변수이름) → 변수이름의 자료형을 int로 변환

 

정수와 문자열 사이의 형변환

  • str(변수이름) → 변수이름의 자료형을 str로 변환

 

 

산술 연산자

 

정수/실수 혹은 실수/정수 나누기 값은 소수점을 포함할 수 있으므로 실수형 값 반환

 

 

관계 연산자

관계 연산자 적용에서도 정수(실수)와 문자형의 비교는 ‘같다’, ‘다르다’ 여부만 적용할 수 있음

 

 

복합대입연산자

  • 연산과 할당을 합쳐놓은 것
  • 식을 간결하게 표현할 수 있고, 변수가 이전에 가졌던 값을 수정하여 할당하는 일에 활용될 수 있음

 

 

 

연산자의 우선순위

  • 괄호()가 가장 높은 우선순위를 갖음
  • 곱셈 / 나눗셈 / 나머지 / 몫보다는 제곱이 더 높은 순위를 갖고, 할당/복합대입 연산이 가장 낮은 우선 순위를 갖음

'Python Category > Python' 카테고리의 다른 글

[Python] 변수와 입력  (0) 2023.08.26
[Python] 문자형  (0) 2023.08.25
[Python] 파이썬 기본적인 용어  (0) 2023.08.23
[Python] 내장 함수  (0) 2022.12.09
[Python] 예외 처리  (2) 2022.12.09

키워드(keyword)

  • 파이썬이라는 프로그래밍 언어가 만들어질 때, 이런 단어들은 파이썬 자체적으로
    사용하겠다고 예약해 놓은 단어들 (총 35개)
  • 키워드로 지정된 단어들은 변수명 같이 나중에 사용자가 마음대로 정할 수 있는
    이름들로는 사용될 수 없기 때문에 알고 있어야 함

 

식별자(identifier)

  • 키워드 외에 프로그램에서 사용자가 필요에 따라 이름을 만들어 사용하는 단어
  • 즉, 변수, 상수, 함수, 클래스 등의 구분을 위해 사용하는 이름
  • 식별자를 작성하는데 정답은 없지만 대부분의 경우 많은 프로그래머들이 관례적으로 사용하는 카멜 기법과 파스칼 표기법을 적절하게 조합
    • 변수명이나 함수명은 카멜 표기법
    • 클래스명은 파스칼 표기법

 

식별자 작성 규칙
식별자로 쓸 수 있는 문자
• 영문 대/소문자(A~Z, a~z), 숫자(0~9), 특수문자 중 언더 바(_)만 사용될 수 있음
• 영어 알파벳 외의 문자도 가능은 하지만 관례적으로 쓰지 않음

식별자로 쓸 수 없는 문자
• 키워드를 사용하면 안됨 (예 : if)
• 숫자로 시작하는 문자열 (예 : 0a)
• 특수문자가 포함된 문자열 (예 : a!)
• 공백이 포함된 문자열 (예 : a b)

 

 

들여쓰기(indent)

  • 보통 코드를 만들 때 가독성을 위해 들여쓰기를 하곤 함
  • C나 Java와 같은 다른 프로그래밍 언어에서는 중괄호({})를 사용하여 영역을 지정하곤 함
  • 하지만 파이썬은 중괄호를 사용하지 않고, 들여쓰기만 사용하여 영역을 지정함

 

 

주석(comment)

  • 프로그램 내부에 프로그램을 설명하기 위해 작성하는 글로, 프로그램 실행에는 전혀 영향을 주지 않음
  • 주석으로 처리하고자 하는 주석 부분 앞에 # 기호를 붙임 (# 이후 해당 줄 전체를 주석 처리 함)  ->행단위 주석
  • 여러 줄을 주석 처리하고 싶을 때는 큰따옴표 """ 또는 작은따옴표 ''' 3개를 연달아서 시작과 끝부분에 사용 -> 블록단위 주석

 

 

행결합

  • 많은 프로그래밍 언어들이 문장(statement)이 끝날 때마다 세미콜론(;)을 적어서 종료를 알리는데,  파이썬은 구문이 끝나면 세미콜론을 붙이지 않고,  줄이 바뀌면 자동으로 문장이 종료되었다고 인식함
  • 만약 1줄의 내용이 길어서 여러 줄로 타이핑을 하고 싶다면 \(역슬래쉬)나 괄호를 이용함

 

print() 함수

  • print() 함수를 통해서 변수, 문자열, 숫자, 수식 결과 등을 쉽게 출력할 수 있음

 

  • 따옴표의 중첩에 따라서 결과가 달라질 수 있음
  • + 연산자를 통해 문자열끼리 더하는 것도 가능함

'Python Category > Python' 카테고리의 다른 글

[Python] 문자형  (0) 2023.08.25
[Python] 파이썬 자료형  (0) 2023.08.24
[Python] 내장 함수  (0) 2022.12.09
[Python] 예외 처리  (2) 2022.12.09
[Python] 파일 입출력  (1) 2022.12.08

파이썬에는 많은 내장 함수가 있다.

모든 내장 함수를 다루고 싶지만, 모든 내장 함수를 정리하는 것은 시간도 많이 필요하고 비 효율적이다.

그래서 사용 빈도가 높은 함수들만 정리하겠다.

 

숫자 관련 내장 함수

int() 함수

문자열 형태의 숫자나 소수점이 있는 숫자 등을 int 형태로 리턴함

int(1.23) #1

int(123) #123

int("123") #문자열도 숫자로 바꿀 수 있음

int(True) #1 0은 False, 1은 True(0 이외의 숫자는 모두 True임)

float() 함수

문자열 형태의 숫자나 소수점이 없는 숫자 등을 float형태로 리턴함

float("123") #123.0

float(10) #10.0

float(True) #1.0

float(1.123) #1.123

 

문자열 관련 내장 함수

str() 함수

str함수는 int, float, bool 타입을 str(string) 형태로 리턴함

str(100) #"100"

str(1.0) #"1.0"

str(True) #"True"

 

논리 관련 내장 함수

bool 함수는 float, int, str 타입을 bool 형태로 리턴함

True
bool(1) # True

bool(123.123) #True -> 0이 외의 숫자는 모두 True임

bool("False") #True

bool("0") #True / 문자열은 숫자가 아니기에​
False
bool(0) #False

bool(0.0) #False

bool('') #False / 빈 문자열은 False

bool("") #False / 빈 문자열은 False​

 

진수 변환 내장 함수

  • hex(x) : 정수 x를 16진수로 변환하여 리턴
  • oct(x) : 정수 x를 8진수로 변환하여 리턴
  • bin(x) : 정수 x를 2진수로 변환하여 리턴

진수와 진수 변환에 대해 모른다면 제 블로그에 정리해 놓은 자료가 있습니다.

2022.11.29 - [기타/Digital Logic] - [Digital Logic] 수의 체계

 

[Digital Logic] 수의 체계

[진수] [10진수] 기수가 10인 수 0, 1, 2 ,3, 4, 5, 6 ,7, 8, 9 -> 10개 수로 표현 [2진수] 기수가 2인 수 0, 1 두개의 수로 표현 [8진수와 16진수] [8진수] 0~7까지 8개의 수로 표현 2진수 3자리는 8진수 1자리 2진수

rebugs.tistory.com


hex() 함수

정수 (int 타입)를 입력받아 16진수로 변환하여 리턴함

hex(0) #"0x0"

hex(1) #"0x1"

hex(10) #"0xa" #10은 16진수로 a임

hex(123) #"0x7b"

위의 예제에서 0x가 붙어서 나오는데 0은 진수 변환을 했다는 뜻이고, x는 16진수를 뜻합니다.

 

oct() 함수

정수를 입력 받아 8진수로 변환하여 리턴함

oct(0) #'0o0'

oct(1) #'0o1'

oct(10) #'0o12'

oct(123) #'0o173'

위의 예제에서 0o가 붙어서 나오는데 0은 진수 변환을 했다는 뜻이고, o는 8진수를 뜻합니다.

 

bin() 함수

정수를 입력받아 2진수로 변환하여 리턴

bin(0) #'0b0'

bin(1) #'0b1'

bin(10) #'0b1010'

bin(123) #'0b1111011'

위의 예제에서 0b가 붙어서 나오는데 0은 진수 변환을 했다는 뜻이고, b는 2진수를 뜻합니다.

 

컬렉션 타입 & iterable 자료형

컬렉션 타입의 자료형에는 순차 자료형과 비순차 자료형이 있음

 

순차(sequence) 자료형

  • 문자열, 수치 등을 관리하기 위한 자료형으로 순서 개념이 있음
  • 배열 형식의 구조로 인덱스를 이용하여 데이터에 접근
  • 리스트, 튜플, 문자열 등이 있음

비순차(non-sequence) 자료형

  • 문자열 수치 등을 관리하기 위한 자료형으로 순서 개념이 없음
  • 인덱스를 이용한 접근 불가
  • 딕셔너리, 집합(set)등이 있음

반복 가능한 객체(iterable)

  • 객체의 속한 요소(member)를 하나씩 찰로 반환하는 객체
  • 대표적으로 list, dict, set, str, bytes, tuple, range

 

컬렉션 타입 & iterable 내장 함수

list() 함수

iterable 객체를 받아 리스트로 변환한 후 리턴

list((1, 2, 3)) #[1, 2, 3]

list((1, 2, 3, 2, 1)) #[1, 2, 3, 2, 1]

 

set() 함수

iterable 객체를 받아 set으로 변환한 후 리턴

set((1, 2, 3)) #{1, 2, 3}

set((1, 2, 3, 2, 1)) #{1, 2, 3} -> set은 중복을 제거함

 

tuple()함수

iterable을 입력받아 튜플 형태로 변경하여 리턴

tuple("abc") #('a', 'b', 'c’)

tuple([1, 2, 3]) #(1, 2, 3) 

tuple((1, 2, 3)) #(1, 2, 3)

 

range()함수

range(start, stop, step)에서 start부터 stop-1까지 step만큼 숫자를 더해가며 연속된 숫자를 생성한 후 이터러블로 만들어 리턴 -> 그냥 예제 보는 게 쉬움

range(10) #0에서 부터 9까지 1을 더함

range(0, 10) #위와 똑같은 뜻

list(range(4, 7)) #[4, 5, 6]

list(range(5, 10)) #[5, 6, 7, 8, 9]

list(range(1, 10, 2)) #[1, 3, 5, 7, 9] 

list(range(0, -10, -1)) #[0, -1, -2, -3, -4, -5, -6, -7, -8, -9]

 

dict() 함수

매개변수 안에 있는 자료를 딕셔너리 형태로 바꾸고 리턴

dict(one=1, two=2, three=3) #{'one': 1, 'three': 3, 'two': 2}

dict([('two', 2), ('one', 1), ('three', 3)]) #{'one': 1, 'three': 3, 'two': 2}

map() 함수

map(f, iterable)은 함수와 iterable 객체를 입력받은 후 iterable의 각 요소를 입력값으로 f가 수행한 결과를 묶어서 반환

def two_times(x):
return x*2 
list(map(two_times, [1, 2, 3, 4])) #[2, 4, 6 ,8]

len() 함수

입력받은 자료형의 길이 리턴

len("abc") #3

len([1, 2, 3]) #3

len({1, 2, 3}) #3

 

수학 관련 내장 함수

  • abs(number): 숫자 number의 절댓값을 반환
  • pow(number, y): 숫자 number에 y 제곱한 결과를 반환
  • round(number , ndigits): 숫자 number를 ndigits 자리에서 반올림한 후 반환
  • max(iterable): iterable 객체에서 최댓값을 반환
  • min(iterable): iterable 객체에서 최댓값을 반환
  • sum(iterable): iterable 객체의 모든 요소의 합을 반환

abs() 함수

정수, 실수 등의 숫자를 절대값을 변환하여 리턴

abs(3) #3

abs(-3) #3

abs(-1.2) #1.2

 

pow() 함수

pow(x, y)에서 x에 y를 제곱한 결과를 반환

pow(2, 4) #16 

pow(3, 3) #27

pow(5, 2) #25

 

round() 함수

round(x , y)에서 숫자 x를 소수점 y 자리까지 반올림한 후 반환

round(1.6) #2 

round(1.2) #1

round(1.234, 2) #1.23

round(1.678, 1) #1.7

 

max(), min() 함수

iterable 객체를 입력받아 최댓값(최솟값)을 반환

max([1, 2, 3]) #3 

max("python") #'y' -> 알파벳도 순위가 있다 a가 제일 낮고, z가 제일 높다

max({1:3, 2:'a’}) #2 오직 key 값만 비교해서 제일 큰 값을 리턴함
min([1, 2, 3]) #1

min("python") 'h'

min({1:3, 2:'a’}) #1 -> 오직 key값만 비교

 

sum()함수

iterable 객체를 입력받아 모든 요소의 합을 반환

sum([1,2,3]) #6 

sum((4,5,6)) #15

sum({1:3, 2:'a’}) #3 -> key값만 더함

sum({1, 2}) #3

 

정렬 관련 내장 함수

  • reversed(seq): seq의 요소 순서를 역순으로 수정한 iterator 객체로 반환
  • sorted(iterable): iterable 객체를 정렬한 후 그 결과를 리스트로 반환
  • filter(f, iterable): iterable 객체의 각 요소에 f 함수를 반영한 후 True가 반환되는 요소만을 iterator 객체로 반환

reversed() 함수

sequence 객체를 입력받아 객체의 요소 순서를 역순으로 수정한 후 iterable 객체로 반환

reversed(["a", "b", "c", "d"]) #<list_reverseiterator at 0x7f278dc2cd50>

#<list_reverseiterator at 0x7f278dc2cd50> -> 이터러블 객체 자체임
#이터러블 객체 자체를 다루긴 힘드니 다른 함수를 이용하여 접근해보자

list(reversed(["a", "b", "c", "d"])) #['d', 'c', 'b', 'a']

 

sorted() 함수

iterable 객체를 입력받아 정렬한 후 결과를 리스트로 반환함

sorted([3, 1, 2]) #[1, 2, 3]

sorted(['a', 'c', 'b’]) #['a', 'b', 'c’] 

sorted("zero") #['e', 'o', 'r', 'z’] 

sorted((3, 2, 1)) #[1, 2, 3]

 

filter() 함수

함수(f), iterable 객체를 입력받아 각 요소에 f 함수를 반영한 후 True를 만족하는 요소만을 모아 iterable로 반환

def positive(x):
return x > 0
print(list(filter(positive, [1, -3, 2, 0, -5, 6]))) #[1,2,6]

'Python Category > Python' 카테고리의 다른 글

[Python] 파이썬 자료형  (0) 2023.08.24
[Python] 파이썬 기본적인 용어  (0) 2023.08.23
[Python] 예외 처리  (2) 2022.12.09
[Python] 파일 입출력  (1) 2022.12.08
[Python] 모듈  (0) 2022.12.08

오류의 종류

  • 프로그램 실행 전에 발생하는 오류 : 문법 오류
  • 프로그램 실행 중에 발생하는 오류 : 런타임 오류(예외)

예외 처리는 런타임 오류를 최대한 줄이는 것이다.

 

try-except

try-except의 기본 형태

try:
    #예외가 일어날 것 같은 코드 입력
except:
    #예외가 일어나면 할 작업 입력
  • try블록에는 예외가 일어날 것 같은 코드를 입력한다.
  • try블록에서 오류가 일어난다면 except블록에 입력된 명령이 실행된다.
  • try블록에서 오류가 일어나지 않는다면 except블록의 명령이 실행되지 않는다.
intnum = input("정수를 입력하세요 : ")
try:
    print(f"당신이 입력한 값은 {int(intnum)}입니다")
except:
    print("잘못된 값을 입력했습니다.")

위의 예제에서 사용자로부터 입력을 받고 그 값이 정수면 프로그래머가 의도한 대로 흐름이 이어지는 것이고, 실수나, 문자열 등을 입력하면 의도한 대로 흐름이 이어지는 것이 아니다. 그래서 except문으로 의도한 대로 가게끔 하면 된다.

 

try-except-else

try:
    #오류가 일어날수도 있는 작업 입력
except:
    #오류가 일어났을 때의 작업 입력
else:
    #오류가 일어나지 않았을 때 작업 입력

try-except-else구문은 예외가 발생할 가능성이 있는 코드만 try 구문 내부에 넣고 나머지를 모두 else구문으로 빼는 경우가 많다.

intnum = input("정수를 입력하세요 : ")
try:
    intnum = int(intnum)
except:
    print("잘못된 값을 입력했습니다.")
else:
    print(f"당신이 입력한 값은 {int(intnum)}입니다")

 

finally문

  • finally 구문은 예외 처리 구문에서 가장 마지막에 사용할 수 있는 구문이다.
  • 예외가 발생하든 안 하든 무조건 실행된다.
  • 함수 내부에서 try-finally문을 사용하고 있다면 return을 만나도 finally문은 실행된다.

 

intnum = input("정수를 입력하세요 : ")
try:
    intnum = int(intnum)
    print(f"당신이 입력한 값은 {int(intnum)}입니다")
except:
    print("잘못된 값을 입력했습니다.")
finally:
    print("finally 구문 실행")

위의 예제에서 사용자로부터 정수를 받아도 finally구문은 실행되고, 정수 이외의 값을 받아도 finally 구문은 실행된다.

 

def func(intnum):
    try:
        intnum = int(intnum)
        print(f"당신이 입력한 값은 {int(intnum)}입니다")
        return
    except:
        print("잘못된 값을 입력했습니다.")
        return
    finally:
        print("finally 구문 실행")
intnum = input("정수를 입력하세요 : ")
func(intnum)

위의 예제에서 함수 매개변수로 정수를 넘기든, 정수 외에 다른 값을 넘기든 finally문은 무조건 실행된다.

(return을 만나도 finally문은 실행됨)

 

예외 처리 조합

  • try-except
  • try-except-else
  • try-except-finally
  • try-except-else-finally
  • try-finally

이 외의 조합은 실행했을 때 문법 오류가 발생한다.

 

예외 구분하기

except 뒤에 예외의 종류를 입력해서 예외를 구분할 수 있음

try:
    #예외가 발생할 가능성이 있는 구문
except:예외의 종류A
    #예외 A가 발생했을 떄 실행할 구문
except:예외의 종류B
    #예외 B가 발생했을 떄 실행할 구문
except:예외의 종류C
    #예외 C가 발생했을 떄 실행할 구문

예를 들면

list_number = [52, 273, 32, 72, 100]
try:
    number_input = int(input("정수 입력> "))
    print(f"{number_input}번째 요소: {list_number[number_input]}")
except ValueError:
    # ValueError가 발생하는 경우
    print("정수를 입력하세요")
except IndexError:
    # IndexError가 발생하는 경우
    print("리스트의 인덱스를 벗어났음")

이렇게 예외의 종류에 따라 다르게 대응할 수 있다.

 

예외 구분이 안될 때

위에서 예외를 구분했는데, 예외의 구분은 예외의 종류에 따라 다르게 대응하기 위함이다

하지만 예외의 종류를 알 수 없다면 어떻게 해야할까?

최대한 예외를 구분해서 사용자에게 알렸지만, 예외를 구분할 수 없다면 사용자에게 무슨 예외가 일어났는지 알려달라고 요청하는 방법밖에 없다.

우리가 어떤 프로그램을 쓰다가 오류가 나면 오류 내용을 서술해서 전송해달라고 요청하는 프로그램을 봤을 것이다.

이럴 때 사용하는 것이 모든 예외의 어머니인 Exception을 사용하는 것이다.

list_number = [52, 273, 32, 72, 100]
try:
    number_input = int(input("정수 입력> "))
    print(f"{number_input}번째 요소: {list_number[number_input]}")
    ㅇㅇ.ㅁㄴㅇㅁㄴㅇ()#일부러 예외를 발생시킴
except ValueError:
    # ValueError가 발생하는 경우
    print("정수를 입력하세요")
except IndexError:
    # IndexError가 발생하는 경우
    print("리스트의 인덱스를 벗어났음")
except Exception:
    print("알수없는 오류가 일어났습니다. 오류 내용을 저희에게 알려주세요.")

이렇게 예외 처리를 하면 사용자에게 피드백을 받을 수 있다.

'Python Category > Python' 카테고리의 다른 글

[Python] 파이썬 기본적인 용어  (0) 2023.08.23
[Python] 내장 함수  (0) 2022.12.09
[Python] 파일 입출력  (1) 2022.12.08
[Python] 모듈  (0) 2022.12.08
[Python] 문자열  (1) 2022.12.08

파일 입출력을 알기 전에

파일 입출력을 알기 전에 알아야 하는 개념이 있다.

 

파일의 논리적 구조

  • 파일 안에는 byte들이 순차적으로 저장되어 있다.
  • 파일의 맨 끝에는 EOF(end-of-file)마커가 있다.

파일 포인터

파일의 입출력 동작이 발생하는 위치를 파일 포인터라고 한다.

  • 파일을 처음 열면, 파일 포인터는 파일의 첫 번째 바이트를 가리킨다.
  • 파일의 내용을 읽거나 쓰면 파일 포인터는 자동으로 업데이트(다음 바이트를 가리킴)된다.

파일 열고 닫기

파일 열기

open()함수를 이용하여 파일을 열 수 있다.

close()함수를 이용하여 파일을 닫을 수 있다.

  • open() : 파일의 이름을 받아서 파일 객체를 생성한 후 이를 반환
  • close() : 파일 객체가 가지고 있는 close()메소드 호출 시 파일 닫힘

open()함수로 파일을 열 때, 어떤 모드로 작업을 할 것인지 명시해야 한다.

파일 모드 모드 이름 설명
r 읽기 모드 처음 부터 읽는다
w 쓰기 모드 처음부터 쓴다. 파일이 없으면 생성된다. 파일이 존재하면 기존의 내용은 지워진다.
a 추가 모드 파일의 끝에 쓴다. 파일이 없으면 생성된다.
r+ 읽기와 쓰기 모드 파일에 읽고 쓸 수 있는 모드이다. 모드를 변경하려면 seek()가 호출 되어야 함
file = open("input.txt", "r") #파일 열기(읽기 모드)
#명령
file.close() #파일을 열었으면 꼭 닫아주자

 

파일 닫기

파일 닫기는 기본적으로 close() 메소드를 이용하여 이루어지지만, 파일을 닫지 않았을 때, 닫히지 않은 파일 때문에 메모리가 계속 낭비되니 꼭 닫아줘야 한다. 아래의 내용은 프로그래머가 실수로 파일을 열고 닫지 않는 것을 방지하는 구문이다.

 

try - finally 구문 사용

파일을 열 때 오류가 발생되었을 때 사용한다.

finally구문은 오류가 나든 안 나든 무조건 실행되니, 파일을 확실히 닫을 수 있다.

try: # 예외가 발생할 가능성이 있는 작업들을 여기에  둔다.
     infile  = open("input.txt", "r", encoding = "UTF8") #input이 같은 위치에 있다 가정
     #여러가지 파일 처리 작업 코드 작성
finally:# try블록에서 예외 발생시 프로그램 종료 전 반드시  실행된다.
     infile.close( )

 

with구문 사용

with 명령문 내의 블록이 종료될 때 파일이 자동으로 닫힘

close() 메소드 호출이 필요 없다

with open("input.txt", "r", encoding = "UTF8") as infile:
    line = infile.readline().rstrip()
    while line != "" :
        print(line)
        line = infile.readline()

 

 

파일 읽고 쓰기

파일 읽기

한 줄씩 읽기

파일을 열었다면 readline 메소드를 이용하여 한 줄씩 읽을 수 있다.

파일 포인터는 파일의 첫 위치에 있다가 readline 메소드 실행 시 다음 줄로 이동한다.

infile  = open("input.txt", "r", encoding = "UTF8") #input이 같은 위치에 있다 가정
line = infile.readline()
while line != "" :
    print(line)
    line = infile.readline()
#출력 결과
#홍길동
#
#김철수

코드에 보이는 encoding = "UTF8"은 뒤에서 설명하겠다.

이런 식으로 코드를 작성하면 출력 결과와 같이 줄 바꿈이 같이 출력된다.

그 이유는 line 변수 안에 줄 바꿈(\n)이 포함되어 있어서 그런 것이다.

이럴 때는 아래의 코드로 변경해보자

infile  = open("input.txt", "r", encoding = "UTF8") #input이 같은 위치에 있다 가정
line = infile.readline().rstrip() #rstrip을 이용하여 오른쪽에 줄바꿈 문자와 같은 공백 제거
while line != "" :
    print(line)
    line = infile.readline().rstrip()
#출력 결과
#홍길동
#김철수

 

encoding = "UTF8" -> 인코딩 방식 설정
인코딩(Encoding)은 문자를 바이트로 변환하는 것, 디코딩(Decoding)은 바이트를 문자로 변환하는 것을 말한다
그리고 그 변환하는 방식에 UTF-8, CP949, ANSI 등등이 존재하는데
인코딩과 디코딩 방식이 서로 일치해야 프로그램이 정상적으로 읽어낼 수 있다.
인코딩 방식을 설정하지 않으면, 메모장의 인코딩 방식과 파이썬의 디코딩 방식이 일치하지 않아 오류가 발생한다.

 

통째로 읽기

파일을 한줄 씩 말고 통째로 읽을 수도 있다.

read()메소드를 이용하면 된다.

with open("input.txt", "r", encoding = "UTF8") as infile:
    all = infile.read()
    print(all)

파일이 무척 크다면 많은 양의 메모리를 필요로 하기 때문에 주의가 필요하다

 

한 글자씩 읽기

read() 메소드에 매개변수로 1을 입력하면 한 글자씩 읽는다

with open("input.txt", "r", encoding = "UTF8") as infile:
    one = infile.read(1)
    while one != "":
        print(one)
        one = infile.read(1)
#출력 결과
#홍
#길
#동
#
#
#김
#철
#수

 

파일 쓰기

  • “w”모드로  파일을  열었을  때  파일에  쓰기  가능
  • wirte() 메소드 사용
with open("input.txt", "w", encoding = "UTF8") as infile:
    infile.write("ReBugs\n")

실행을 해보면 input.txt파일에 ReBugs라고 적혀있는 것을 볼 수 있다.

w모드는 기존에 있던 내용을 초기화하고 새로 쓰는 것을 인지하길 바란다.

이어서 쓰고 싶으면 a모드를 사용하면 된다.

 

또한 변수의 값을 문자열에 포함시켜서 쓸 수 있다.

with open("input.txt", "w", encoding = "UTF8") as infile:
    url = "https://rebugs.tistory.com/"
    infile.write(f"ReBugs 주소 : {url}\n")
input.txt
ReBugs 주소 : https://rebugs.tistory.com/

 

'Python Category > Python' 카테고리의 다른 글

[Python] 내장 함수  (0) 2022.12.09
[Python] 예외 처리  (2) 2022.12.09
[Python] 모듈  (0) 2022.12.08
[Python] 문자열  (1) 2022.12.08
[Python] 딕셔너리  (0) 2022.12.07

모듈이란?

여러 개의 변수와 함수를 지니고 있는 집합체를 모듈이라고 한다.

  -자바의 라이브러리와 유사한 개념

 

모듈은 표준 모듈과 외부 모듈로 나뉜다

  • 표준 모듈 : 파이썬이 기본적으로 내장하고 있는 모듈
  • 외부 모듈 : 개발자가 만들어서 공개한 모듈

 

여러 개의 변수와 함수를 지닌 집합체를 모듈이라고 하고 이러한 모듈이 합쳐진 것을 패키지라고 한다.

  -모듈을 디렉토리 형식으로 구조화한 것이 패키지

모듈을 사용하는 이유

  • 코드 재사용에 유리
  • 코드를 기능별로 구분하고 관리에 편리
  • 복잡하고 어려운 기능을 포함하는 프로그램을 간단한 코드로 제작 가능

 

모듈 사용하기

import문으로 모듈을 가져올 수 있다.

import random #랜덤 모듈 가져오기
print(random.randint(0,10))

 

from문으로 특정 모듈에서 필요한 함수만 가져올 수 있다.

from random import randint
print(randint(0,10))

import문으로만 모듈을 가져오는 것과 차이가 보이가 보이는가?

import문만 사용하면 특정 함수를 호출할 때, 모듈명.함수명() <- 이런 식으로 호출하지만

from문을 사용하면 함수명() <- 이런식으로 간편하게 호출할 수 있다.

하지만 현재 작성중인 프로그램 안에 함수의 이름이 중복되면 오류가 뜨니 유의해야 한다. 

 

as문으로 모듈에 이름(닉네임)을 붙힐 수 있다.

import random as rd
print(rd.randint(0,10))

모듈의 이름이 길거나 자신이 편한 이름을 붙이고 싶을 때 이용한다.

'Python Category > Python' 카테고리의 다른 글

[Python] 예외 처리  (2) 2022.12.09
[Python] 파일 입출력  (1) 2022.12.08
[Python] 문자열  (1) 2022.12.08
[Python] 딕셔너리  (0) 2022.12.07
[Python] 세트  (0) 2022.12.07