-List

[1] 거북이 그래픽으로 그림 그리기
[2] 정보 입력하기
[3] True/False 판단하기
[4] random 모듈로 임의의 수 뽑기
[5] while 명령으로 반복하기
[6] 함수를 정의하고 호출하기
[7] 계산 맞히기 게임 만들기
[8] 타자 게임 만들기

1. 거북이 그래픽으로 그림 그리기

  • 거북이 그래픽으로 오각형을 그리는 프로그램을 만들어 보았다.

import turtle as t
n = 5
t.color("skyblue")
t.begin_fill() #색칠할 영역 시작
for x in range(n):
t.forward(50)
t.left(360/n)
t.end_fill() #색칠할 영역 종료

fill을 이용하여 색을 채울 수 있었다.

begin으로 시작하여 end로 끝나 fill의 구간을 설정할 수 있었다.

2. 정보 입력하기

  • 20초를 속으로 세어 맞히는 프로그램을 제작해 보았다.

n=input("How much time U want?")
import time
input("press the enter and count "+ n +" SEC")
start = time.time()
input("press the enter again after "+ n +" SEC")
end = time.time()
et=end-start
print("Actual time :" ,round(et, 3), "SEC")
print("Gap :", round(abs(et-int(n)),3) , "SEC")

import time으로 time 모듈을 사용하였고, abs로 절댓값을 표현했으며, round로 소수점 3째 자리까지 나타낼 수 있었다.

3. True/False 판단하기

  • if문을 사용하여 덧셈 문제를 맞히는 프로그램을 만들어 보았다.

#사용자에게 덧셈 정답 입력 받기
x = input("12+23=")
#정수형으로 형변환
a = int(x)
#덧셈 정답 값 비교
if a == 12+23:
print("천재") # 정답
else:
print("바보") # 그외 (오답)

==(비교연산자)를 이용하여 정수값의 답이 정답인지 오답인지 비교할 수 있었다.

4. random 모듈로 임의의 수 뽑기

  • random 모듈을 이용하여 마음대로 걷는 거북이 프로그램을 만들어 보았다.

import turtle as t
import random
t.shape("turtle")
t.speed(0) # 가장 빠른 속도
t.color("blue")
for x in range(500):
a = random.randint(1,360) # 1~360 임의의 정수를 뽑아서 리턴
t.setheading(a)
b = random.randint(1,20)
t.forward(b)
c = random.randint(1,5)
t.pensize(c)

책에 나온 것에 추가로 pensize를 임의로 바꿔 그릴 수 있도록 코딩해보았다.

5. while 명령으로 반복하기

  • while 명령어를 이용해 반복 실행하는 방법을 배워보았다.

import random
n = random.randint(1,50)
while True:
x = input("숫자를 맞춰보시오.")
g = int(x)
if g == n :
print("정답")
break
if g < n :
print("너무 작아요")
if g > n :
print("너무 커요")
_ _ print("탈출")

6.함수를 정의하고 호출하기

  • 나만의 함수를 정의해보고 사용해보았다.

함수 정의(출력이 있는 함수 정의)

def square(a): # a의 값을 제곱합니다
c = a a
return c
def triangle(a, h): # 밑변의 길이가 a이고 높이가 h인 삼각형의 넓이를 구합니다
c = a
h / 2
print(c)
return c
def factorial(n):
fact = 1 # 변수 초기화
for x in range(1, n+1):
fact = fact x
print(x, "번째 fact=", fact)
return fact
print("5!", factorial(5))
print("5!", factorial(5)) # 함수 실행 후 리턴 받은 값 바로 출력
print("3!", factorial(3))
#1) 8!을 구하는 factorial 함수를 호출
def factorial(n):
fact = 1
for x in range(1, n+1):
fact = fact
x
return fact
factorial(8)
#2) fact 변수를 사용하여 리턴 값을 받은 후 출력 해주세요
fact = factorial(8)
print("8!", fact)
#함수를 호출 -> 인자는 꼭 맞춰서 호출해야 하지만, 리턴값은 꼭 사용하지 않아도 된다
result = square(10)
print("square:", result)
triangle(3,4) # 리턴값 사용하지 앟고 just 호출
print("triangle:", triangle(3,4))
result = triangle(3,4)
print("triangle:", result)

7. 계산 맞히기 게임 만들기

  • eval 함수를 이용하여 계산 맞히기 게임을 만들어 보았다.

#계산 맞히기 게임 만들기
import random
#1) 계산식을 만들어주는 함수를 정의
def make_question():

# 1-1) 각 변수에 임의의 수 담기
a = random.randint(1,40)
b = random.randint(1,20)
op = random.randint(1,3) # 1:덧셈, 2:뺄셈, 3:곱셈
# 1-2) 계산식 만들기 (a+b, a-b, axb)
# 1-1-1) a 값을 문자열로 q에 답기
q = str(a)
#1-1-2) 연산자를 문자열 q에 연결
if op == 1:
    q = q + "+"
if op == 2:
    q = q + "-"
if op == 3:
    q = q + "x"
# 1-1-3) b 값을 문자열 q에 연결
q = q + str(b)
#1-3) 리턴
return q

#2) 메인 프로그램
#2-1) 정답, 오답 저장하는 변수 초기화
sc1 = 0 # 정답 변수
sc2 = 0 # 오답 변수
#2-2) 다섯 문제 실행
for x in range(5):

# 2-2-1) 계산식 함수 호출
q = make_question()
# 2-2-2) 계산식 문제 출력
print(q)
# 2-2-3) 계산식 정답 입력
ans = input("=")
# 2-2-4) 입력된 정답 형변환
r = int(ans)
# 2-2-5) 결과 확인
if eval(q) == r: # eval("40+30") -> 진짜 수식으로 변경해서 계산 40+30 -> 70
    print("정답")
    sc1 = sc1 + 1
else:
    print("오답")
    sc2 = sc2 +1

#2-3) 최종 결과 출력
print("정답 :", sc1, "오답 :", sc2)
#2-4) 칭찬
if sc2 == 0:
print("당신은 천재 입니다.")
if sc2 == 5:
print("당신은 바보 입니다.")

8. 타자 게임 만들기

  • random.choice를 이용하여 임의로 나오는 단어를 맞추는 게임을 만들어 보았다.

import random
import time
#1) 타자연습 단어 리스트 만들기
w = ["매미", "곤약", "맴매", "푸들", "헝거게임", "파이썬", "개구리 반찬", "프라다", "늑대인간"]
#2) 문제 번호 초기화
n = 1
#3) 게임 시작 입력 받기
print("[타자 게임] 준비되면 엔터")
input()
#4) 게임 시작 시간 저장
start = time.time()
#5) 타자 게임 시작
#5-1) 타자 게임 단어 추출
q = random.choice(w)
#5-2) 타자 게임 5문제 시작
while n <= 5:
print("x문제", n)
print(q)
x = input()

if q == x :
    print("통과")
    n = n + 1 # 탈출 구문
    q = random.choice(w)

else:
    print("오타! 다시 도전")
    #6) 최종 결과 출력
    end = time.time()
    et = end - start
    et = format(et, ".2f")
    print("타자 시간 :", et, "초")
    
    

profile
Do (Awe)Something!

1개의 댓글

comment-user-thumbnail
2022년 8월 11일

오늘도 공부 완료 영웅씨 ㅎㅎ 수고했어요

답글 달기