[2025.02.20] 문자열 자료형

2025. 2. 20. 18:53·Python

[문자열]

  • 문자는 열이다! 즉, 문자들의 집합임.

 

[문자열 만드는 방법]

  • 큰 따옴표 사용
  • 작은 따옴표 사용
  • 큰 따옴표 3개 연속 사용
  • 작은 따옴표 3개 연속 사용
subject = 'Polibo'
verb = ' is'
subjective_complement = ' a princess♥'

 

[문자열 연산하기]

  • Python에서는 문자열을 곱하거나 더하는 것이 가능.
  • 숫자와 문자는 함께 연산할 수 없음.
## print(1 + '1') # 숫자와 문자는 연산X / ex) 1 + "1" => 안됨
print('1' + ' 001') #이것은 문자 + 문자임.

따옴표 안에 숫자가 들어 있음 => 문자열

 

print(subject * 10)
print(verb * 10)
print(subjective_complement * 10)

문자열 곱하기

 

print(subject + verb + subjective_complement)
print('♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥')
print('♥ ' + subject + verb + ' beautiful ♥')
print('♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥')

문자열 더하기

 

[이스케이프 코드]

  • 프로그래밍할 때 사용할 수 있돌고 미리 정의해 둔 '문자 조합'
  • 주로 출력 결과를 보기 좋게 정리하는 용도로 사용
\n 문자열 안에서 줄을 바꿀 때 사용
\t 문자열 사이에 탭 간격을 줄 때 사용
\' 작은 따옴표(')를 그대로 표현할 때 사용
\" 큰 따옴표(")를 그대로 표현할 때 사용

 

full_sentence = '♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥\n' + '♥ ' + subject + verb + ' beautiful ♥\n' + '♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥\n'
print(full_sentence) # /n : 줄 바꿈

\n을 사용하여 줄 바꿈

 

morning_boeun1 = '\'Polibo는 아침밥으로 요거트를 먹고왔어요.\''
print(morning_boeun1)
morning_boeun2 = '\'Polibo는\t 아침밥으로\t 요거트를\t 먹고왔어요.\'' # /t : 문자열 사이에 탭 간격을 줄 수 있음.
print(morning_boeun2)

\'을 사용하여 작은따옴표 그대로 사용 / \t를 사용하여 간격을 줌

 

print('Hello, \nworld!')
print('\"Hello, \nworld!\"')
print('"Hello, \nworld!"')
# 따음표 3개를 쓰면 Enter를 누르면 줄 바꿈으로 인식함.
print("""Hello,
world!""")
print('''Hello,
world!''')

"""안녕하세요, 저는 주석이에용! 
만나서 반가워용!""" # 여러 줄을 주석 처리할 수 있음.


[문자열 인덱싱]

  • Python은 인덱싱이 '0'부터 시작
  • Python에서는 음수로 인덱싱 가능 👉 [-n] : 뒤에서 n번째 문자
  • 띄어쓰기도 인덱싱에 포함
exam = "Polibo is studying hard!"
print(exam[0])
print(exam[12])
print(exam[0], exam[11], exam[8], exam[13], exam[-1])
print(exam[0] + exam[11]+ exam[8] + exam[13] + exam[-1])
print(exam[-5] + exam[-9] + exam[-1]) # [-n] : 뒤에서부터 n번째 문자

문자열 인덱싱 결과

 

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
P o l i b o   i s   s t u d y i n g   h a r d !

 

  • exam[0] : exam이라는 문자열의 첫 번째 자리 = P
  • exam[12] : exam이라는 문자열의 13번째 자리 = u
  • exam[-1] : exam이라는 문자열의 뒤에서 첫 번째 자리 = !

 

[문자열 슬라이싱]

  • 원하는 문자 or 문자열 부분(?) 뽑아내기 가능
exam = "Polibo is studying hard!"
print(exam[0:6], exam[7:9], exam[10:18], exam[19:24]) # 슬라이싱은 끝번호+1 까지 범위 지정해야 함.
print(exam[-5:-1], exam[-12:-9]) # 슬라이싱 음수는 [시작:끝+1]
print(exam[10:-6])
print(exam[0:6:2]) # [처음:끝:건너뛰는 칸의 수]
print(exam[0:23:3])
print(exam[-1:-6:-1]) # [n:m:-1] : 역순 출력
print(exam[-14:-6])
print(exam[-7:-15:-1])
print(exam[:6]) # 시작 번호 생략하면 처음부터 시작함
print(exam[-5:]) # 끝 번호 생략하면 마지막까지 뽑아 냄
print(exam[:]) # 시작, 끝 번호를 모두 생략하면 문자열의 처음~끝 뽑아 냄

문자열 슬라이싱 결과

 

  • 솔직히 문자 하나하나 개수 세서 하기 힘들었음.
  • exam[시작번호 : 끝번호 : 건너뛰는 칸의 수]
  • exam[:n] : 처음 문자부터 n까지 뽑아냄
  • exam[n:] : n부터 마지막까지 뽑아냄
  • exam[:] : 처음부터 끝까지 뽑아냄
  • 범위 지정할 때에는 마지막에 +1 해줘야함. 그 번호까지 포함 안함. ===> 이유는 모르겠음...어렵.....

 

exam = "Polibo is studying hard!"
print(len(exam)) # len : length => 문자열 길이를 알려줌

exam의 문자열 길이

 

  • exam에서 Polibo를 PoliBo로 바꾸고 싶을 때, 가장 먼저 드는 생각은 아래 처럼 바꾸는 거,,, 될 줄 알았음
  • exam[4]에 해당하는 b를 대문자 B로 직접적으로 바꾸는건 불가능!!
print(exam[4])
exam[4] = 'B'
print(exam)

 

  • 대신, 이런식으로 바꿀 수 있음.... 그냥 끼워넣기...
print(exam[:4] + 'B' + exam[5])

 

  • 아니면 문자열 관련 함수 'replace'라는 것을 사용해서 바꿀 수 있음
  • Polibo => PoliBo  바뀐거 확인 가능
exam = exam.replace("Polibo", "PoliBo")
print(exam)


[문자열 관련 함수들]

  • 문자열 자료형은 자체적 함수를 가지고 있다고 함. 이걸 '문자열 내장 함수'라고 함.
  • 여러가지의 함수를 사용해보고, 교수님께서 내주신 답에 대한 문제를 만들어봄.
  • 예시가 너무 많아서 일단 생략함....
count 문자 개수  세기
문자열 '1개'만 입력으로 받음
find 위치 알려 주기
무조건 제일 처음 위치를 알려줌
찾는 문자 or 문자열이 존재하지 않는다면 -1 반환
index 위치 알려 주기
무조건 제일 처음 위치를 알려줌
find와 다른점은 찾는 문자 or 문자열이 존재하지 않는다면 error 발생
join 문자열 삽입
upper 소문자 -> 대문자
lower 대문자 -> 소문자
lstrip 왼쪽 공백 지우기
rstrip 오른쪽 공백 지우기
strip 양쪽 공백 지우기
replace 문자열 바꾸기
split 문자열 나누기

 

  • 교수님께서 내주신 답은 "Life is too short, you ned python!"의 공백을 모두 제거하는 것임. 
  • 답 : Lifeistooshort,youneedpython!
  • 문제는 3가지를 보여주셨음. 나는 replace 함수를 사용한 것을 생각해냈음.
exam5 = "Life is too short, you need python!"
print(exam5)
print(exam5.replace(" ", ""))
print(exam5[:4] + exam5[5:7] + exam5[8:11] + exam5[12:18] + exam5[19:22] + exam5[23:27] + exam5[28:])
print("".join(exam5.split(" ")))

문제에 대한 답


[문자열 포매팅 - f문자열 포매팅]

  • 포매팅이란? 문자열 안에 특정 값을 삽입해주는 것
  • f포매팅은 문자열 앞에 f접두사를 붙임
  • 문자열 안의 lunck_num1 자리에 10 삽입
  • 특정 값은 숫자뿐만 아니라, 문자열도 가능
lucky_num1 = 10
lucky_num2 = 20
lucky_num3 = 30

test = f"오늘의 행운 번호는 {lucky_num1}입니다!"
print(test)

name = "Polibo"
age = 150
test = f"나의 이름은 {name} 입니다. 나이는 {age+1}살 입니다."
print(test)

f포매팅 결과

 

[문자열 포매팅 - format 함수를 사용한 포매팅]

  • format 함수를 사용하여 문자열 안에 특정 값(숫자/문자열) 삽입 가능
  • 코드의 마지막 줄의 주석을 보면 함수를 사용할때, (number=10, 3)처럼 앞에 등호가 있고 컴마 이후에 숫자를 쓰게 되면 error 발생
test = "오늘의 행운 번호는 {}입니다!"
print(test.format(lucky_num2))

test = "오늘의 행운 번호는 {2} {0} {1} 입니다!" # {}안의 숫자는 입력값 순서임.
print(test.format(lucky_num1, lucky_num2, lucky_num3))

test = "I eat {0} apples".format(3)
print(test)

test = "I eat {0} apples".format("five")
print(test)

test = "I ate {number} apples. so I was sick for {day} days.".format(number=10, day=3)
print(test)

test = "I ate {0} apples. so I was sick for {day} days.".format(10, day=3)
print(test)

## test = "I ate {number} apples. so I was sick for {0} days.".format(number=10, 3) # 함수 사용할 때 ()안에 ~~=이 앞에 오면 안됨. 뒤에 와야함. 걍 믿으셈
## print(test)

 

[input 함수 사용하기]

  • 사용자의 입력을 받을 수 있음
  • input 함수는 문자열만 반환
  • name자리에 사용자의 입력을 받음
name = input("이름을 입력해 주세용! :")
hello = f"어서오세요, {name}님 ^^!"
print(hello)

초록색 : 사용자 입력

 

  • 2개의 숫자를 입력으로 하여, 두 수의 합, 차, 곱을 구함
  • input 함수는 문자열만 반환하기 때문에, 숫자 계산을 위해서는 문자를 int or float을 사용하여 숫자형으로 바꿔줌
first_num = input("첫번째 숫자: ")
second_num = input("두번째 숫자: ")
first_num = int(first_num)
second_num = int(second_num)
calc1 = f"두 숫자의 합 = {first_num + second_num} 입니다!!"
calc2 = f"두 숫자의 차 = {first_num - second_num} 입니다!!"
calc3 = f"두 숫자의 곱 = {first_num * second_num} 입니다!!"
print(calc1)
print(calc2)
print(calc3)

초록색 : 사용자 입력

 

  • 사용자의 이름, 키, 몸무게를 입력으로 받아 BMI 값을 알려주는 코드
name = input("이름을 입력해 주세용! : ")
height = input("키를 입력해 주세용!(m) : ")
weight = input("몸무게를 입력해 주세용!(kg) : ")
height = float(height)
weight = float(weight)
BMI = f"{name}님의 BMI = {weight/(height**2)} 입니다! 운동을 더 열심히 하세요!!😡"
print(BMI)

초록색 : 사용자 입력

 

'Python' 카테고리의 다른 글

[2025.02.24] for 문  (0) 2025.02.24
[2025.02.24] while 문  (0) 2025.02.24
[2025.02.21] if문  (0) 2025.02.24
[2025.02.20] 숫자형  (0) 2025.02.24
[2025.02.21] 자료형  (0) 2025.02.21
'Python' 카테고리의 다른 글
  • [2025.02.24] while 문
  • [2025.02.21] if문
  • [2025.02.20] 숫자형
  • [2025.02.21] 자료형
polibo
polibo
Polibo의 개발 성장기 지켜봐주십슈 (콩 싫어해요.)
  • polibo
    Polibo와 개발 콩나무 키우기
    polibo
  • 전체
    오늘
    어제
    • 분류 전체보기 (65)
      • Python (23)
      • C (32)
        • 본수업 (19)
        • 예습 (7)
        • 개인프로젝트01 - 로또 (3)
        • 개인프로젝트02 - 복켓몬 키우기 (2)
        • 개인프로젝트03 - 김복천국 POS기 (1)
        • 팀프로젝트01 - 용사 복이의 대모험 RPG (0)
        • 팀프로젝트02 - 메일 프로그램 (0)
      • TCP_IP (0)
      • DB (1)
      • C++ (7)
        • 개인프로젝트01 - 숫자야구 (0)
      • QT (1)
        • 개인프로젝트01 - 숫자야구 (0)
        • 팀프로젝트01 - 키오스크 (1)
        • 팀프로젝트02 - 퐘퐘이 (0)
        • 팀프로젝트03 - 개발의 민족 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    if문
    C
    문자열
    while문
    c언어
    파이썬반복문
    else if
    파이썬 숫자야구
    파이썬조건문
    파이썬예제
    for문
    파이썬게임
    반복문
    파이썬
    조건문
    c언어 scanf
    순서도
    c우선순위
    Python
    코딩
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
polibo
[2025.02.20] 문자열 자료형
상단으로

티스토리툴바