티스토리 뷰

728x90
반응형

Chapter 08 연습문제 풀이

 

1. 문자열을 추출하는 코드이다. 출력 내용을 예측하시오.

ss = 'Python'
print(ss[0])
print(ss[1:2])
print(ss[-3:-1])
print(ss[3:])

Answer  

> P

> y

> ho

> hon

 

 

2. 다음 문자열이 있을 때 오류가 발생하는 것을 모두 고르시오.

ss1 = 'Python'
ss2 = 'Good'

① ss1 + ss2    # 문자열의 합이므로 'PythonGood'이 만들어진다.

② ss1 - ss2    # 문자열의 차는 없다.

Answer > TypeError: unsupported operand type(s) for -: 'str' and 'str'

③ ss1 * 3      # 문자열의 곱으로 'PythonPythonPython'이 만들어진다.

④ ss1 / ss2    # 문자열의 나눗셈 연산은 없다.

Answer > TypeError: unsupported operand type(s) for /: 'str' and 'str'

 

 

3. 문자열의 중간마다 $를 끼워 넣는 코드이다. 빈칸을 채우시오.

ss = 'Python'

for i in range (0, len(ss)) :

    print(ss[i] + '$', end = '')

'''

이렇게 짜면 마지막에 $이 한번 더 들어가게 된다. > P$y$t$h$o$n$

따라서 for문을 사용하지 말고 join() 함수를 이용해 

print('$'.join(ss))를 해주면 > P$y$t$h$o$n 가 출력된다.

아니면 ss[i]와 '$'를 따로 분리해서

print(ss[i], end = '')

if i != len(ss) :

    print('$', end = '')

식으로 문자열의 마지막이 아니면 $를 찍게 해준다.

'''

 

 

4. 문자열을 반대의 순서로 출력하는 코드이다. 빈칸을 채우시오.

inStr, outStr = "python", ""

strLen = len(inStr)

 

for i in range(0, strLen) :

    outStr += inStr[strLen-i-1]  # 문자열의 인덱스는 0부터 시작해서 끝 인덱스 번호가 길이의 -1이다

print("내용을 거꾸로 출력 --> %s " % outStr)

 

 

5. 다음 문자열이 주어졌을 때 각 문자열 함수의 결과를 예측하시오.

myStr = 'Hanbit'

① myStr.upper()

Answer > HANBIT

② myStr.lower()

Answer > hanbit

③ myStr.swapcase()

Answer > hANBIT

 myStr.title()

Answer > Hanbit

 

 

6. 다음 문자열이 주어졌을 때 각 문자열 함수의 결과를 예측하시오.

myStr = 'Hanbit Media, Hanbit Academy, Hanbit Life'

① myStr.count('Hanbit')

Answer > 3

② myStr.find('Hanbit', 2)

Answer > 14

③ myStr.rindex('Media')

Answer > 7

 myStr.startswith('Hanbit')

Answer > True

'''

find()와 index()는 모두 인자 값으로 준 문자열의 위치를 반환하는 함수인데, find()는 해당 문자열이 없으면 -1, index()는 에러를 리턴한다.

'''

 

 

7. 입력된 문자열에서 숫자를 삭제하는 프로그램을 작성하시오.

inStr, result = "", ""

inStr = input("문자열 --> ")
for x in inStr :
    if x.isdigit() :     # 숫자면 result에 넣지 않고 넘어감
        continue
    result += x

print("숫자 제거--> " + result)

result

 

 

8. 입력한 문자열에서 숫자, 영문 대소문자, 한글, 기타 문자의 개수를 세는 프로그램을 작성하시오.

inStr = ""
upper, lower, digit, hangle, etc = [0] * 5

inStr = input("문자열을 입력하세요 : ")

## 아스키 코드 값을 이용하는 방법 ##
for x in inStr :
    if ord('A') <= ord(x) and ord(x) <= ord('Z') :  # 대문자
        upper += 1
    elif ord('a') <= ord(x) and ord(x) <= ord('z') :    # 소문자
        lower += 1
    elif ord('가') <= ord(x) and ord(x) <= ord('힣') :  # 한글
        hangle += 1
    elif ord('0') <= ord(x) and ord(x) <= ord('9') :    # 숫자
        digit += 1
    else :  # 기타 문자
        etc += 1

## 문자열 함수를 이용하는 방법 ##
'''
for x in inStr :
    if x.isalpha() : # 한글 or 영어
        if x.isupper() : # 대문자
            upper += 1
        elif x.islower() : # 소문자
            lower += 1
        else :  # 한글
            hangle += 1
    elif x.isdigit() : # 숫자
        digit += 1
    else : # 기타 문자
        etc += 1
'''
print("대문자 : %d 소문자 : %d 숫자 : %d 한글 : %d 기타 : %d " % (upper, lower, digit, hangle, etc))

result

'''

아스키 코드 값을 이용할 때 주의해야 할 점은 숫자도 아스키 코드 값으로 비교해 줘야 된다.

감싸지 않으면 

이렇게 인식하지 못한다.

위의 아스키 코드 표를 보면 숫자 0 ~ 9가 아스키 코드 16진수 값 0 ~ 9가 아니라 30 ~ 39 인 것을 알 수 있다.

'''

 

 

9. [프로그램 2]를 수정해 다음과 같이 반시계방향으로 원을 그리면서 글자를 입력하시오. 

import turtle
import random
from tkinter.simpledialog import *
import math

## 전역 변수 선언 부분 ##
inStr = ''
swidth, sheight = 300, 300
tX, tY, txtSize = 0, 0, 20
radius, angle, radian = 100, 0, 0

## 메인 코드 부분 ##
turtle.title('거북이 글자쓰기')
turtle.shape('turtle')
turtle.setup(width = swidth + 50, height = sheight + 50)
turtle.screensize(swidth, sheight)
turtle.penup()

inStr = askstring('문자열 입력', '거북이 쓸 문자열을 입력')

angle = 360 / len(inStr)    # 문자열의 개수로 각도 설정

for ch in inStr :
    radian = 3.14*angle/180   # 라디안 구하기

    tX = radius*math.cos(radian)   # 좌표 구하기
    tY = radius*math.sin(radian)
    r = random.random(); g = random.random(); b = random.random()

    turtle.goto(tX, tY)

    turtle.pencolor((r, g, b))
    turtle.write(ch, font=('맑은 고딕', txtSize,  'bold'))

    angle += 360 / len(inStr)   # 각도만큼 반시계로 회전

turtle.done()

result

 

728x90
반응형

'python > 파이썬 for Beginner' 카테고리의 다른 글

파이썬 for Beginner Chapter 10  (9) 2019.05.13
파이썬 for Beginner Chapter 09  (2) 2019.04.28
파이썬 for Beginner Chapter 07  (15) 2019.04.15
파이썬 for Beginner Chapter 06  (0) 2019.04.15
파이썬 for Beginner Chapter 04  (3) 2019.04.08
댓글