티스토리 뷰
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

'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 |
- Total
- Today
- Yesterday
- 지옥에서 온 git
- Do it! 정직하게 코딩하며 배우는 딥러닝 입문
- Spring Data JPA
- jsp
- Spring
- fetch join
- 운영체제 반효경
- 프로그래머스
- 파이썬 for Beginner 연습문제
- 스프링 컨테이너
- 쉽게 배우는 운영체제
- 스프링 mvc
- 스프링 테스트
- 선형 회귀
- JPA
- Gradle
- Thymeleaf
- 방명록 프로젝트
- Computer_Networking_A_Top-Down_Approach
- 쉘 코드
- 생활코딩 javascript
- 패킷 스위칭
- git
- 스프링
- 김영환
- git merge
- Python Cookbook
- 파이썬 for Beginner 솔루션
- Spring Boot
- git branch
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |