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

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

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

 

대부분의 환경에서 파이썬 IDLE 대신에 쥬피터 노트북을 사용합니다.

 

도전문제 1.1 (30p)
print(4*3*2*1)
print(1/2)
print(300-100)
print(423+1234)
print((1/100)*1234)
print(3.141592*12.0*12.0)

기본적으로 그냥 수식을 입력하는 것과 print() 안에 수식을 넣어 계산하는건 같다. (4*3*2*1이라고 입력해도 24가 출력됨)

여기서는 앞으로의 익숙한 형태인 print()를 사용하겠다.

 

 

 

C와는 매우 다르다. 만약 C를 사용한다면 아래와 같이 복잡하게 작성해야 했을 것이다.

#include <stdio.h>

int main(void) {
	printf("%d", 2 + 3);

	return 0;
}

 

 

 

도전문제 1.2 (34p)

 

(1)

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

t.forward(100)
t.left(120)
t.forward(100)
t.left(120)
t.forward(100)

모듈을 불러오고.. Turtle이라는 클래스 개체를 t로 설정한다음 turtle모양으로 설정한다고 한다.

shape니 forward니 이런 명령어는 모두 묘듈 안에 내장되어있는 함수인 셈이다.

처음 3개가 뭔가 복잡하고 어렵지, 나머지는 t. 클래스 나음에 함수를 입력하는 간단한 형식이다.

 

 

 

(2)

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

t.forward(100)
t.left(90)
t.forward(100)
t.left(90)
t.forward(100)
t.left(90)
t.forward(100)

2번 정사각형인 경우, 변이 3개에서 4개로 늘어났으니 left-forward를 한 개씩 더 추가해주고,

각도를 90으로 수정한다. 변의 크기는 100으로 같으니 유지한다.

 

 

(3)

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

t.forward(50)
t.left(60)
t.forward(50)
t.left(60)
t.forward(50)
t.left(60)
t.forward(50)
t.left(60)
t.forward(50)
t.left(60)
t.forward(50)

마찬가지로 각도와 문제에 제시된 변의 길이만 변경한다.

 

 

(4)

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

t.forward(50)
t.left(32.7)
t.forward(50)
t.left(32.7)
t.forward(50)
t.left(32.7)
t.forward(50)
t.left(32.7)
t.forward(50)
t.left(32.7)
t.forward(50)
t.left(32.7)
t.forward(50)
t.left(32.7)
t.forward(50)
t.left(32.7)
t.forward(50)
t.left(32.7)
t.forward(50)
t.left(32.7)
t.forward(50)

4번은 10회 이상 회전이라고 했는데, n각형은 n-1번 회전하므로 가장 간단하게 변이 50인 11각형을 만들도록 하겠다.

각도만 11/360의 근사인 32.7로 변경하자.

 

 

도전문제 1.3 (36p)
print('50 + 30 = ', 50+30)
print('50 - 30 = ', 50-30)
print('50 * 30 = ', 50*30)
print('50 / 30 = ', 50/30)

참고로 곱하기는 *, 나누기는 /이다. 앞쪽에는 텍스트를 따옴표로 표시하고 쉼표로 구분해 쉼표 다음에는 계산하고 싶은 결과를 쓴다.

 

 

이후에 37p에야 turtle.done()이라는 함수가 제시되는데, 대화창 모드가 아닌, 스크립트 모드에서는 터틀 모듈을 종료하는 함수가 필요한 것이다. 앞으로는 터틀 모듈을 사용하는 함수에 turtle.done() 함수를 사용해보자.

 

심화문제 (39p~41p)

1.1/1.2는 생략하겠다.

 

(1.3)

# 문제 제시 코드
print(100)
print(100 + 200)
print('100 + 200')
print(100, 200)
print('100', '200')
print('100''200')
print('Hello Python!')
print('Hello', 'Python', '!')
print('Hello' + 'Python' + '!')
print('Hello''Python''!')       # 따옴표 갯수에 유의
print('********************')
print('*' * 20)

그냥 주어진 코드를 실행시켜보고 결과를 적어보자.

 

 

(1.4)

# 문제 제시 코드
print('Hello Python!")
print('*' 20)
print(Life is short learn Python!)
print(100 + '200')               # 숫자 100과 200의 합 300을 출력하라

위 코드는 순서대로 따옴표가 짝이 맞지 않음/반복 수행을 위한 곱하기가 생략됨/문자인데 따옴표가 없음/숫자인데 따옴표를 붙임의 오류이다. 올바르게 고치면 다음과 같다.

print('Hello Python!')
print('*' * 20)
print('Life is short learn Python!')
print(100 + 200)

 

 

(1.5)

print('I love Python!!')
print('I love Python!!')
print('I love Python!!')
print('I love Python!!')
print('I love Python!!')

문제제시(5줄에 걸쳐 코드작성)대로라면 이렇게 하면 되지만,

print('I love Python!!\n'*5)

로 간단하게 하던가 나중에 배울 반복문(for 문)을 이용하면 좋다.

 

 

(1.6)

print('*' * 1)
print('*' * 3)
print('*' * 5)
print('*' * 7)

이번에는 5번과 같은 제약조건이 없으므로 그냥 곱하기 해버리자.

 

 

(1.7)

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

t.forward(100)
t.left(135)
t.forward(141.4)
t.left(135)
t.forward(100)
turtle.done()

빗변만 신경써서 설정하고, 이제 각도 정도는 거북이의 입장이 되어 감각적으로 설정해보자.

 

 

 

import turtle
t = turtle.Turtle()
t.shape('turtle')
t.forward(100)
t.left(120)
t.forward(100)
t.left(120)
t.forward(100)
t.right(120)
t.forward(100)
t.right(120)
t.forward(100)

lab 1-2 코드에 우회전 코드만 추가해주면 완성이다.

 

 

(1.8)

IDLE를 이용해 대화창으로 구성해봤다.

스크립트 환경이면 print()안에 넣어서 5줄을 만들어 출력하면 된다.

 

(1.9)

일반 계산을 해보자.

 

(1.10)

이쪽도 일반 계산이다.

반응형