[파이썬기초] 01. 자료형(1)

일리삼·2022년 4월 8일

파이썬

목록 보기
1/10

1. 문자열

1.1 문자열 만들기

  • print()함수의 인자는 문자열이나 수식
  • 파이썬에서는 '', "" 모두 문자(열)을 묶을 때 사용함
  • ''' '''(홑따옴표 세 개), """ """(쌍따옴표 세 개)를 사용해도 동일한 역할을 해줌
    • 이 경우는 여러 줄을 한 번에 입력할 때 입력하는 문자열 그대로 저장하고자 할 때 사용
>>> print('Hello World') # 기본적인 문자열 출력
  • 이스케이프 문자()를 사용해 특수한 형태의 문자열을 표현 가능함
    • \t는 탭, \n은 개행을 나타냄
    • \", 혹은 \"와 같이 사용되어 큰따옴표나 작은따옴표를 문자열에 출력을 할 수 있음
    • \\ 형태로 사용 시 역슬래시 역시 문자열에 출력 가능
    • 여러 줄 출력 시 """\ ... \"""의 형태로 출력 시 줄바꿈 없이 출력이 가능하다

1.2 문자열 연산자

  • 문자열 반복 연산자로 +*가 있음
    • +는 단순 문자열을 합치는 것을 의미
    • *는 오른쪽의 숫자 만큼 문자열을 반복하여 나타냄을 의미
  • 두 문자열을 +로 연결하면 공백없이 연결되며, ,로 연결되면 문자열 사이에 공백이 들어감
>>> print('Hello'+'world') # '+'으로 문자열 연결 시 공백 삽입 없이 연결
>>> print('Hello','world') # ','으로 문자열 연결 시 공백을 삽입하고 연결됨
  • 인덱싱[]은 문자열의 특정 위치에 해당하는 글자를 출력할 때 사용함

  • 슬라이싱[:]은 내부의 범위에 해당하는 글자를 출력함

    • [ 시작 인덱스 : 마지막 인덱스(미포함) ]의 형태로 작성
    • 대괄호 안의 숫자 중 하나는 생략 가능함.
      • 뒤의 숫자를 생략할 경우 시작인덱스로부터 끝까지 출력함
      • 앞의 숫자를 생략할 경우 처음부터 마지막 인덱스 전까지 출력함
  • 문자열 길이는 len()함수를 사용하여 구할 수 있다.

2. 연산자

2.1 산술 연산자

  • 기본적으로 사칙연산과 모듈로 연산은 C언어와 동일함
  • //는 정수나누기 연산자로, 나눗셈의 몫(정수)만을 출력해주는 연산자임
  • **는 제곱 연산자로, 2 ** 3 = 8 형태의 값을 출력해줌
  • C언어와 마찬가지로, 컴퓨터의 float자료형 저장의 특이성으로 인해 미세한 수치오류를 포함하고 있음
    - 따라서 int형을 사용하는 것을 권장
  • 파이썬의 경우, 복소수도 표현할 수 있음
>>> c1 = 2 + 3j  # 허수부 표현 시 i가 아닌 j로 표현해야함
>>> c1.real # 실수부 출력
2.0
>>> c1.imag # 허수부 출력
3.0
c2 = c1.conjugate() # 켤레복소수 출력
(2-3j)
>>> abs(c1)
3.605551275463989

2.2 할당 연산자

  • 우변의 값을 좌변의 변수에 대입
  • 다중할당과 동시할당이 있음
>>> num1 = num2 = num3 = 200 # 다중할당문
>>> print(num1, num2, num3) 
200 200 200
>>> num4, num5 = 300, 400 # 동시할당문
>>> print(num4, num5)
300 400
  • 이외에도 복합 대입 연산자도 존재하며, 사용법은 C와 동일함
    • 파이썬에는 제곱을 하는 연산자도 존재하므로, 복합 대입 연산자의 종류에 **=도 존재함
  • 문자열도 마찬가지로 +=, *= 두 종류의 복합 대입 연산자를 사용할 수 있음
>>> string = "Hello"
>>> string += "^^"
>>> string += "!"
>>> print("string: ",string)
string: Hello^^!

2.3 관계 연산자

  • C와 똑같은 연산자들이며, 결과는 부울(bool)값인 TrueFalse를 반환함
  • 불(bool/boolean) 자료형이란 TrueFalse값만을 가지는 자료형을 의미함
    • C언어에서는 해당 자료형이 없어 직접 만들거나 라이브러리를 참조해야했다면, 파이썬은 기본으로 탑재되어있음
  • 불 자료형은 관계연산자를 사용했을 때의 출력으로 주로 사용되며, 뒤이어 나올 조건문과 반복문에서도 역시 자주 사용됨
>>> a, b = 100, 200
>>> a == b
False
>>> a != b
True
>>> a > b
False
>>> a < b
True
>>> a >= b
False
  • !=>=와 같은 연산자 작성 시 사이에 공백을 넣지 않도록 주의해야하며, 등호와 <와 같은 연산자가 함께 사용된 경우, 둘의 순서가 바뀌지 않도록 해야함

2.4 논리 연산자

  • and, or, not이 있으며, 결과값은 bool 타입으로 TrueFalse를 출력함

2.5 비트 연산자

  • 정수 타입의 비트 단위를 조작함
  • 이진수 표현은 bin()함수를 사용함
  • 비트 연산자는 C와 동일한 종류와 수행을 가짐

3. 숫자와 문자열의 다양한 기능

3.1 사용자 입력, input()

  • input() 함수를 사용해 사용자로부터 데이터를 받을 수 있음
  • input함수의 괄호 안에 사용자로부터 입력을 요구하는 안내 내용을 포함할 수 있는데, 이를 프롬프트 문자열이라고 함
>>> input('인사말을 입력하세요: ')
인사말을 입력하세요: 
  • 위처럼 "인사말을 입력하세요: "라는 문자열이 뜨고, 프로그램이 종료되지 않은 상태에서 대기
    • 실행 도중에 잠시 멈추는 것을 block이라고 하며, input()함수가 자료 입력을 요구하며 코드 진행을 블록하는 것이라고 할 수 있음
>>> str = input("인사말을 입력하세요: ")
인사말을 입력하세요: HELLO
>>> print(str)
HELLO
  • input()함수의 결과는 무조건 문자열 자료형으로 입력되므로, 숫자입력을 받아올 경우 Typecast가 필수적
  • int(), float()을 이용해 int형, 혹은 float형으로 입력값을 변환할 수 있음
str_a = input('a = ')
int_a = int(str_a)
# 출력 시, str_a에는 입력된 숫자가 문자열로, int_a는 입력된 숫자가 int형으로 저장됨

str_to_int = int(input('b = ')
# 출력 시, str_to_int에 int형으로 입력값이 저장된 것을 확인할 수 있음
  • 추가적으로, 반대로 int, 혹은 float형으로 저장된 데이터를 문자열로도 변환이 가능한데, 이때에는 str()을 사용하면 됨

3.2 format()

  • 중괄호{}를 포함한 문자열 뒤에 마침표(.)를 찍고 format()함수를 사용함
    • 이때 중괄호의 개수와 format함수 괄호 안 매개변수의 개수는 반드시 동일해야함
    • 문자열 내의 {}기호가 format()함수 괄호 안에 있는 매개변수로 차례로 대치됨
  • 매개변수가 {}보다 많은 경우, {} 개수 만큼만 대치되고, 나머지는 버려짐
  • 하지만 {} 개수가 매개변수보다 더 많은 경우 에러가 발생됨
>>> '{} Python!'.format(123)
'123 Python!'
>>> 'I like {} and {}'.format('Python', 'Java')
'I like Python and Java'
>>> 'I like {1} and {0}'.format('Python', 'Java')
'I like Java and Python'
>>> print('위도: {lat}, 경도: {long}'.format(lat='35.1N', long='129.07E'))
위도: 35.1N, 경도: 129.07E
  • 서식지정방식에 여러 방식이 있음
    • {[index]:[width][precision][type character]}
      • width: 정수를 특정 칸에 출력
      • precision: 실수일 때, 소수점 아래 몇 번째 자리까지 출력할 것인지 지정
      • type character: d(정수 출력), f(실수 출력), s(문자열 출력)

3.2.1 정수 출력

print("# 특정 칸에 출력하기")
output_a = '{:5d}'.format(52)
print(output_a) # 총 문자열의 길이가 5자리가 되어야하므로 앞의 3칸을 공백으로 채운 후 52 출력

print("# 빈칸을 0으로 채우기")
output_b = '{:05d}'.format(52)
output_c = '{:05d}'.format(-52)
print(output_b) # 00052 출력
print(output_c) # -0052출력

print("# 기호와 함께 출력하기")
output_d = '{:+d}'.format(52) 
output_e = '{:+d}'.format(-52) 
output_f = '{: d}'.format(52)
output_g = '{: d}'.format(-52)
print(output_d) # +52 출력
print(output_e) # -52 출력
print(output_d) #  52 출력 (기호 부분이 공백으로 채워진 후 출력)
print(output_e) # -52출력
  • 기호와 공백을 조합할 때는 =기호를 앞에 붙여 표현 가능
    • {:+5d}의 경우, 총 자릿수를 5자리로 유지한 채 기호를 포함해 숫자를 출력
    • {:=+5d}의 경우는 위와는 다르게 기호를 가장 앞자리에 출력하고, 나머지 숫자는 뒤에 출력되도록 함
    • {:+05d}는 부호는 맨 앞에 고정한 채로 표현할 정수를 제외한 나머지 공백을 0으로 채운다

3.2.2 실수형 출력

  • 기본적인 형태는 정수형 출력 방식과 동일
  • 소수점 아래 자릿수를 지정하고 싶은 경우, [type character]인 f앞에 마침표(.)을 입력하고, 뒤에 몇 번째 자릿수까지 표시할지 지정하면 됨
  • 의미없는 소수점을 제거하고 싶으면, {:g}를 사용하면 됨
output_a = '{:15.3f}'.format(52.12345)
output_b = '{:.2f}'.format(3.141592)
print(output_a) # 15칸을 잡고, 소수점을 3자리만 나오도록 출력하되, 남은 부분은 모두 공백으로 출력
print(output_b) # 단순히 소수점의 자릿수만 2자리로 제한. 이때 소수점 아래 셋째자리에서 반올림이 일어남

print("# 기호와 함께 출력하기")
output_c = 52.0 
output_d = '{:g}'.format(output_c)
print(output_c) # 52.0 출력
print(output_d) # 52 출력

3.3 문자열의 다양한 메소드

3.3.1 대소문자 바꾸기

>>> 'abc'.upper() # 해당 문자열을 대문자로 변환
'ABC'
>>> 'ABC'.lower() # 해당 문자열읃 소문자로 변환
'abc'
>>> ' hobby'.count('b') # 해당 문자열에서 그 문자가 나타나는 횟수를 반환
2
>>> 'hobby'.find('h') # 해당 문자열에서 그 문자가 나타나는 위치 반환
0
>>> 'hobby'.find('b') # 만약 동일한 문자가 문자열에 여러번 나타날 경우, 가장 처음 나타난 곳의 인덱스를 반환함
2
>>> 'hobby'.rfind('b') # find()와 달리 오른쪽에서 부터 찾아가므로 가장 마지막으로 나타난 곳의 인덱스를 반환함
3

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

  • strip()함수는 문자열 양 옆의 공백을 제거함
  • 왼쪽의 공백만 제거할 때는 lstrip()을, 오른쪽의 공백만 제거할 때는 rstrip()을 사용해 제거함
  • 이때, 공백에는 '띄어쓰기', '탭', '줄바꿈을 모두 포함함

3.3.3 문자열의 구성 파악하기

  • isOOO()인 함수는 해당 문자열이 어떤 성분들로 구성되어있는지를 확인할 때 is로 시작하는 함수를 사용
  • 무엇으로 구성되어 있는지에 대해 궁금한 것의 종류에 따라 OOO에 다양한 이름이 들어감
    • isalnum() : 문자열이 알파벳 또는 숫자로만 구성되어 있는지 확인
    • isalpha() : 문자열이 알파벳으로만 구성되어 있는지 확인
    • isdecimal() : 문자열이 정수 형태인지 확인
    • isdigit() : 문자열이 숫자로 인식될 수 있는지 확인
    • isspace() : 문자열이 공백으로만 구성되어 있는지 확인
    • islower()/isupper() : 문자열이 소문자/대문자로만 구성되어 있는지 확인
  • 이때 출력은 True/False의 불타입으로 출력됨

3.3.4 in연산자

  • 문자열 내부에 어떤 문자열이 있는지 확인하기 위해 사용
  • 출력은 True/False형태로 출력됨
>>> print('안녕' in '안녕하세요')
True
>>> print('잘가' in '안녕하세요')
False

3.3.5 문자열 자르기, 대체하기

  • replace(구문자, 신문자)형태로 사용하며, 구문자에 해당하면 문자들을 모두 신 문자열로 교환함
  • split()으로 문자열을 자를 수 있으며, default값은 공백
    • 만약 특정 문자를 기준으로 자르고자 한다면 괄호 안에 구분자를 추가해주면 됨

해당 글은 도서 '혼자 공부하는 파이썬'과 학교 강의를 참조하여 작성되었습니다.

profile
코린이의 취준 자취 기록장

0개의 댓글