본문 바로가기
Python (파이썬)/따라하며 배우는 파이썬과 데이터과학 (구판)

따라하며 배우는 파이썬과 데이터과학 2장 도전문제와 심화문제

by EATSTAR 2024. 4. 20.
반응형
* 본문은 쥬피터 노트북 7.0.8 버전을 사용하였으므로 다른 버전의 쥬피터 노트북이나 파이썬 IDLE같은 작동 프로그램으로 작동할 경우 오류가 생길 수 있음을 양지해주세요.

 

도전문제 2.1 (49p)
height = 1.72
weight = 78.8
bmi = weight/height**2

print(bmi)

2.5에 나와있는 예제에서 값과 print함수만 첨가하여 나타내면 됩니다.

 

 

 

도전문제 2.2 (50p)

 

radius = 20 
area = 3.14 * radius**2 
circ = 2 * 3.14 * radius
print('피자 면적은', area, '피자 둘레는', circ)
radius = 30
area = 3.14 * radius**2 
circ = 2 * 3.14 * radius
print('피자 면적은', area, '피자 둘레는', circ)

처음에는 반지름 20으로 계산해주고, 그 다음엔 30으로 계산해주자.

 

 

도전문제 2.3 (51p)

이 책의 저자는 Turtle 모듈을 좋아하나보다. 또 Turtle이다.

import turtle
t = turtle.Turtle()
t.shape('turtle')

radius = 200
t.circle(radius)
radius = 100
t.circle(radius)
radius = 50
t.circle(radius)
t.left(90)

radius = 200
t.circle(radius)
radius = 100
t.circle(radius)
radius = 50
t.circle(radius)
t.left(90)

radius = 200
t.circle(radius)
radius = 100
t.circle(radius)
radius = 50
t.circle(radius)
t.left(90)

radius = 200
t.circle(radius)
radius = 100
t.circle(radius)
radius = 50
t.circle(radius)
turtle.done()

순서대로 반지름 200, 100, 50인 원을 그려주고 왼쪽으로 90도 회전시켜 또 반복해준다.

마지막엔 turtle.done()도 잊지 말자.

 

 

도전문제 2.4 (52p)
principal = 100000000
years = 5 
interest_rate = 0.03 
money = principal * (1.0 + interest_rate) ** years 

print('원금:  ', principal)
print('이율:  ', interest_rate)
print('기간:  ', years)
print('수령금액: ', money)

예제가 1000만원이니, 0 하나만 더 붙이면 1억이 되는 간단한 코드다.

 

 

도전문제 2.5 (55p)

숫자와 문자(열)의 덧셈 차이다. 간단하므로 암산도 가능하다.

 

 도전문제 2.6 (62p)

 

(1)

height = int(input("당신의 신장을 입력하세요.(단위:cm)"))
weight = int(input("당신의 체중을 입력하세요."))
bmi = weight/(height/100)**2

print("당신의 bmi는", bmi, "입니다")

도전문제 2.1에서 썼던 것을 가져온다. 만약에 신장의 단위를 m로 할려면 int 대신에 float를 사용하면 된다.

 

 

 

대안)

height = float(input("당신의 신장을 입력하세요.(단위:m)"))
weight = int(input("당신의 체중을 입력하세요."))
bmi = weight/height**2

print("당신의 bmi는", bmi, "입니다")

 

 

(2)

x = int(input("첫 번째 수를 입력하세요."))
y = int(input("두 번째 수를 입력하세요."))

sum = x+y
avg = (x+y)/2

print("두 수의 합은", sum, "이고", "두 수의 평균은", avg, "입니다")

정수형으로 x,y를 받고 합과 평균을 구한다.

 

 

 

(3)

x = int(input("첫 번째 수를 입력하세요."))
y = int(input("두 번째 수를 입력하세요."))
z = int(input("세 번째 수를 입력하세요."))

sum = x+y+z
avg = (x+y+z)/3

print("세 수의 합은", sum, "이고", "두 수의 평균은", avg, "입니다")

(2)의 코드에서 z를 추가하고 계산도 한 개 늘어난 만큼 알맞게 구성한다.

 

도전문제 2.7 (63p)
# 주식 시황을 알려주는 예시
year = input("오늘은 몇 년입니까? : ") 
month = input("오늘은 몇 월입니까? : ") 
day = input("오늘은 며칠입니까? : ") 
kospi = input("오늘의 코스피 지수는 몇입니까? : ") 
kosdaq = input("오늘의 코스닥 지수는 몇입니까? : ") 

print("") 
print("===========================================") 
print("안녕하세요 주식 시황 시간입니다. 오늘은 ", year, "년", month, "월", day, "일입니다.") 
print("오늘 코스피 지수는", kospi, "입니다.") 
print("또한 오늘 코스닥 지수는", kosdaq, "입니다.") 
print("===========================================")

나는 주식시황을 알려주는 코드를 작성했다. 제시된대로, 축구나 테니스로 변경해서 해도 된다.

 

 

 

심화문제 (66p~68p)

 

(2.1)

순서대로 200 / 300 / 400 / 200+300+400을 넣어주면 된다.

 

(2.2)

 

(2.3)

 

(2.4)

 

(2.5)

width = int(input("정사각형의 밑변을 입력하세요"))
area = width * width
print("정사각형의 면적 : ", area)

area = width ** 2로 구성해도 제대로 작동한다.

 

 

(2.6)

print("1에서 10까지의 합 : ", 1+2+3+4+5+6+7+8+9)

 

 

(2.7)

print("10! = ", 1*2*3*4*5*6*7*8*9*10)

 

 

(2.8)

print('섭씨 화씨')

celsius = 0
fahrenheit = (9/5) * celsius + 32
print(celsius, " ", fahrenheit)
celsius = 10
fahrenheit = (9/5) * celsius + 32
print(celsius, "", fahrenheit)
celsius = 20
fahrenheit = (9/5) * celsius + 32
print(celsius, "", fahrenheit)
celsius = 30
fahrenheit = (9/5) * celsius + 32
print(celsius, "", fahrenheit)
celsius = 40
fahrenheit = (9/5) * celsius + 32
print(celsius, "", fahrenheit)
celsius = 50
fahrenheit = (9/5) * celsius + 32
print(celsius, "", fahrenheit)

반복문이 없으니 노가다를 해주자..

 

 

(2.9)

celsius = int(input('섭씨온도를 입력하세요 : '))
fahrenheit = (9/5) * celsius + 32
print('섭씨',celsius, '도는 화씨', fahrenheit, '도 입니다.')

 

 

(2.10)

radius = int(input("원의 반지름을 입력하세요 : "))
PI = 3.141592
print("원의 둘레 = ", 2*PI*radius, ",", "원의 면적 = ", PI*radius*radius)

둘레와 면적에 대한 변수를 따로 설정할 수도 있지만, 이 코드에서는 이 편이 더 간단하다.

 

 

(2.11)

print("It's really hot!")
print('I said "Hello!" to him.')
print('He said "What\'s there?"')
print('Newline character is \\n, Tab character is \\t.')
print('Working directory is C:\\workspace\\mywork.')

역슬래시(\)는 \\로 나타내고 문장 안의 '는 "로 문장 전체를 감싸줘서 구분하고 문장 안의 "는 '로 문장 전체를 감싸서 구분한다. 단, 문장 안에 "와 '가 공존할 경우 문장을 감싸는 따옴표와 같은 쪽을 \'로 표시해준다.

 

 

반응형