디필의 요모조모

파이썬 for Beginner 8장 연습문제 본문

Programming Language/Python

파이썬 for Beginner 8장 연습문제

Diphylleia12 2019. 12. 8. 15:03

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

    ss = 'Python'

    print(ss[0])               P

    print(ss[1:2])             y

    print(ss[-3:-1])          ho

    print(ss[3:])              hon

 

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

    ss1 = 'Python'

    ss2 = 'Good'

 

    ① ss1 + ss2

    ② ss1 - ss2

    ③ ss1 * 3

    ④ ss1 / ss2

 

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

    ss = 'Python'

 

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

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

 

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

    inStr, outStr = "Python", ""

    strLen = len(inStr)

 

    for i in range(0, strLen):

        outStr += inStr[strLen-(i+1)]

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

 

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

    myStr = 'Hanbit'

 

    ① myStr.upper()                    HANBIT
    ② myStr.lower()                     hanbit
    ③ myStr.swapcase()                hANBIT
    ④ myStr.title()                       Hanbit

 

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

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

 

    ① myStr.count('Hanbit')             count()는 개수.  3
    ② myStr.find('Hanbit',2)             2번째 글자 a부터 다음 Hanbit 까지.  14번째
    ③ myStr.rindex('Media')             오른쪽에서 가까운 Media, 왼쪽부터 세었을 경우 7번째 위치
    ④ myStr.startswith('Hanbit')        Hanbit으로 시작하는가? True

 

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

inStr=input("문자를 입력 :")
outStr=""

for i in inStr:
    if i.isdigit():
        continue
    outStr += i

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

7번 코드 실행 결과

 

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

(1)

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

upper,lower,digit,hangul,etc = [0]*5

for i in inStr:
    if ord('a') <= ord(i) <= ord('z'):
        lower += 1
    elif ord('A') <= ord(i) <= ord('Z'):
        upper += 1
    elif ord('가') <= ord(i) <= ord('힣'):
        hangul += 1
    elif ord('0') <= ord(i) <= ord('9'):
        digit += 1
    else:
        etc += 1

print("대문자:%d,소문자:%d,숫자:%d,한글:%d,기타:%d" % (upper,lower,digit,hangul,etc))

(2)

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

upper,lower,digit,hangul,etc = [0]*5

for i in inStr:
    if i.isalpha():
        if i.isupper():
            upper += 1
        elif i.islower():
            lower += 1
        else:
            hangul += 1
    elif i.isdigit():
        digit += 1
    else:
        etc += 1

print("대문자:%d,소문자:%d,숫자:%d,한글:%d,기타:%d" % (upper,lower,digit,hangul,etc))

8번 코드 실행 결과. 코드는 2개이나 둘 다 실행결과는 동일하다.

 

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

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

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()

9번 코드 실행 결과

Comments