본문 바로가기

Python

Python(파이썬) (문자열, Boolean) 기초

안녕하세요 오늘도 공부한 내용을 정리한 걸 올릴려고 합니다~ 

 

# (0) 문자열을 "" 이나 '' 으로 표현


# -----------------------------------------
# (1) 개행을 포함한 문자열
msg = """
    안녕하세요.
    저는 성이 파이이고,
    이름은 썬입니다.
    잘 부탁합니다.
"""
print(msg)

msg = '''
    행복합시다
    즐깁시다
    오늘도
'''
print(msg)

# -----------------------------------------
#  (2) 문자열 연산
#       문자열 합치기 : 문자열 + 문자열
#       문자열 반복 : 문자열 * 숫자

a = '독도는 '
b = "한국이다. "
""" [ 출력결과 ] 
        --------------------------------------------------
        독도는 한국이다. 
        oxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxox
        독도는 한국이다. 독도는 한국이다. 독도는 한국이다. 
        ==================================================
"""
print('-' * 40)
print((a + b))
print('ox' * 20)
print((a + b) * 3)
print('=' * 40)

# [주의]
#   - 문자열과 숫자의 + 연산안됨
#   -   str 이라는 변수명 안됨
# str = '안녕'
print(a + str(100))

# -----------------------------------------
#  (3) 문자열의 인덱싱과 슬라이싱
#       - 인덱스는 0부터 시작한다
#       - s[i] : s 문자열에서 i번째 문자 추출
#       - s[i:j] : s 문자열에서 i번째에서 j-1까지의 문자 추출
#       - s[i:j:k] : s 문자열에서 i번째에서 j-1까지에서 k개씩 건너뛰어 문자 추출
#
#       - s[-i] : s 문자열에서 뒤에서부터 i번째 문자 추출
#                 ( 뒤에서 인덱스는 1부터 센다 )

msg = '오늘도 행복도 하다'

""" [ 출력결과 ]
        오
        오늘
        늘도 행복
        오도행
        다
"""

print(msg[0])
print(msg[0:2])
print(msg[1:6])
print(msg[0:5:2])
print(msg[-1])

print(msg[0])  # 오
print(msg[-0])  # 오
print(msg[1:6])  # 늘도 행복
print(msg[1:-6])  # 늘도

""" [ 참고 ] 
       ` msg[0] == msg[-0] 같은 값을 추출
       ` msg[:] 전체 추출
       ` msg[i:-j] i번째부터 뒤에서 j-1 까지 추출
"""

""" [ 확인 ]
    1- 문자열 끝까지라면 두번째 숫자 생략 가능
    2- 처음부터 시작하는 것이라면 첫번째 숫자 생략 가능
"""
print('='*30)

# 1) 5번째부터
print(msg[5:])
# 2) 5번째 전의 문자까지
print(msg[:5])
# 3) 5번째 전의 문자까지에서 2개씩 건너뛰어
print(msg[:5:2])
# 4) 문자열 전체에서 2개씩 건너뛰어
print(msg[::2])

# [참고] 회문
s = '1001'


""" [ 연습-1 ]
    날짜와 시간을 표현하는 문자열에서 '2020-02-22 : 12:05:12'
    '2020년 2월 22일' 출력
    '12시 5분' 출력
"""

# -----------------------------------------
#  (4-1) 문자열 관련 함수
#       s.count('글') : s 문자열에서 '글'이라는 문자 개수 세기
#       s.index('글') : s 문자열에서 문자 '글' 위치 알려주기
#       s.find('글') : s 문자열에서 문자 '글' 위치 알려주기
#       s.rfind('글') : s 문자열에서 문자 '글' 오른쪽에서 왼쪽으로 찾아서 위치 알려주기
#       len(s) : s 문자열 길이

msg = '오늘도 행복도 하다'

""" [ 출력결과 ]
    1) '행복'이라는 글자 위치 찾기
    2) '가자'라는 글자 위치 찾기
    3) '행복'이라는 글자를 오른쪽에서 왼쪽으로 찾기
    4) 문자열 전체 길이 구하기
    5) '도'라는 단어의 갯수 구하기
"""
print(msg.find('행복'))
print(msg.find('가자'))
print(msg.rfind("행복"))
print(len(msg))
print(msg.count('도'))



# -----------------------------------------
#  (4-2) 문자열 관련 함수
#   s.upper() : 소문자를 대문자로
#   s.lower() : 대문자를 소문자로
#   s.lstrip() : 왼쪽 공백 지우기
#   s.rstrip() : 오른쪽 공백 지우기
#   s.strip() : 양쪽 공백 지우기

msg = '  This is My Life  '
print(msg.upper())
print(msg.lower())
print(msg.lstrip())
print(msg.rstrip())
print(msg.strip())
print(msg.replace(" " ,""))
# -----------------------------------------
#  (4-3) 문자열 관련 함수
#   s.replace("a","b")  :  s 문자열에서 단어 a를 단어 b로 바꾸기
#   s.split() : s 문자열을 공백으로 나누기
#   s.split('z') : s 문자열을 z 기호로 나누기
#   d.join(s) : d 단어를  s 문자열에 삽입 (********)

msg = "우리는 독도를 지킨다"
# '독도'를 '대한민국'으로 변경
# 공백을 기준으로 단어로 나누기
print(msg.replace("독도를","대한민국을"))
print(msg.split())
print("!".join(msg))

class_name = 'introduction programming with python'

for i in class_name:

    if i == 'python':
        i = i.upper()

print(class_name)
# -----------------------------------------
#  문자열 포맷
#       0- 문자열 포맷팅
#               print('내가 좋아하는 숫자는 ', 100 )
#       1- format() 이용
#               print('내가 좋아하는 숫자는 {0:d} 이다'.format(100) )
#       2- % 사용
#               print('내가 좋아하는 숫자는 %d 이다' % 100 )
#       성능(속도)는 %이 더 빠르다고는 하지만 코드가 깔끔하게 하는 것이 더 중요하다고 하고는
#       어느 것으로 선택하라고는 안 나옴


# format()이용


# [참고] http://pyformat.info

# % 이용 - printf() 역할
name = '홍길동'
age = 22
height = 170.456

print("%s 님은 나이는 %d 세이고, 키는 %.3f cm 입니다" % (name, age, height))
print("%s 님은 나이는 %d 세이고, 키는 %10.1f cm 입니다" % (name, age, height)) #전체 자리수에서 소수점 하나라고 생각해라.
print("%s 님은 나이는 %d 세이고, 키는 %5.1f cm 입니다" % (name, age, height))


#--------------------------------------------------
# 실수인 경우

# 부울형 - 첫글자는 반드시 대문자 True, False, None 여야 한다
t = True
f = False
n = None  # 다른 언어의  null 값과 유사

h = True
s = False
print(type(h))
print(h)
print(not h)
print('=' * 30)
print(h and s)
print(h or s)
print('=' * 30)
# print(h & s)
# print(h | s)
"""
        자료형         값           부울형
    -----------------------------------------------------
        문자형       "문자"          True
                    ""                     False
        리스트       [1,2,3]         True       
                    []                     False
        튜플         ()                     False
        딕셔너리     {}                     False
        숫자형       0이아닌 숫자     True
                    0                      False
                    None                   False

"""

if ('아'):
    print('True')
else:
    print('False')
print('=' * 30)
if ([]):
    print('True2')
else:
    print('False2')
print('=' * 30)
if (0):
    print('True3')
else:
    print('False3')
print('=' * 30)
if (-1):
    print('True4')
else:
    print('False4')

# [주의]
msg ='행복합시다'
if (msg.find('행')): # 0번째라서 False5 뜸
    print('True5')
else:
    print('False5')

if (msg.find('가')): # -1번째라서 True6 뜸
    print('True6')
else:
    print('False6')

if (msg.find('행') >= 0):
    print('True5')
else:
    print('False5')

if (msg.find('가') >= 0):
    print('True6')
else:
    print('False6')

 

문자열 [문제 연습]

5. 문자열

 

1. 다음 코드의 실행 결과로 알맞은 것은? 

a = 11
b = 9
print('a' + 'b')

➀ 'a' + 'b' ➁ 20 ➂ab➃ a + b ➄ error

 

 

 

2. 다음 코드의 실행 결과로 알맞은 것은? 

fact = "Python is funny"
print(str(fact.count('n') + fact.find('n') + fact.rfind('n')))

➀ 9 ➁ 21 ➂3513➃ 18 ➄ 333

 

 

 

3.다음 코드의 실행 결과로 알맞은 것은? 

text = 'Gachon CS50 - programming with python'
text2 = " Human cs50 knowledge belongs to the world "
text.lower()
print(text[:5] + text[-1] + text[6] + text2.split()[0])

➀Gachon Human ➁gachon Human➂gachon H

➃gachon➄gachon cs50

 

 

 

4.다음 코드의 실행 결과로 알맞은 것은? 

class_name = 'introduction programming with python'
for i in class_name:
if i == 'python':
i = i.upper()
 
print(class_name)

➀ introduction programming with PYTHON

➁ introduction programming with python

➂ INTRODUCTION PROGRAMMING WITH PYTHON

➃ Introduction programmIngwIth python

➄ Introduction Programming With Python

 

 

 

5. 다음 코드의 실행 결과를 쓰시오. 

a = '10'
b = '5-2'.split('-')[1]
print(a * 3 + b)

 

 

 

6. 다음 코드의 실행 결과를 쓰시오. 

a = "abcd e f g"
b = a.split()
c = (a[:3][0])
d = (b[:3][0][0])
print(c + d)

 

 

7. 다음 코드의 실행 결과를 쓰시오. 

result = "CODE2018"
print("{0},{1}".format(result[-1], result[-2]))

 

 

8. 다음 중 문자열 함수의 설명으로 틀린 것은? 

① capitalize( ): 첫 문자를 대문자로 변환한다. 

② title( ): 각 단어의 앞 글자만 대문자로 변환한다. 

③ strip( ): 공백을 기준으로 나눠 리스트를 반환한다. 

④ isdigit( ): 문자열이 숫자인지의 여부를 반환한다. 

⑤ upper( ): 문자를 대문자로 변환한다. 

 

 

답: 1번 3
2번 2
3번 1
4번 2
5번 1010102
6번 aa
7번 8,1
8번 3

 

 

 

19살 IT 개발자 포돌이였습니다.

-Coding is an Art-

-코딩을 예술이라 생각하는 사람-