세번째 날.
어제에 이어서 파이썬 기초 교육을 받았다.






1. fill 함수를 이용해 거북이 그래픽 도형 그리기

import turtle as t

n = 5
t.color("purple")
t.begin_fill()  # 색칠할 영역 시작

for x in range(n):
    t.forward(50)
    t.left(360/n)

t.end_fill()   # 색칠할 영역 종료

n 이라는 변수를 이용해 for문을 작성하여 더 다양한 도형을 더욱 간단히 그릴 수 있도록 코딩함


2. input 함수 활용

x = input("첫번째 숫자를 입력하시오.")  # input 함수의 리턴타입은 문자열
a = int(x)                             # 계산 하기 위해 정수 타입으로 변환

x = input("두번째 숫자를 입력하시오.")
b = int(x)

print("두 숫자의 곱셈 결과 ", a * b)

3. 곱셈 횟수를 입력받아 계산하기

n = input("계산 횟수를 입력하시오")

for x in range(1, int(n)+1):
    
    print(x, "번째 계산중 ....")
    
    x_1 = input("첫번째 숫자를 입력하시오.")  # input 함수의 리턴타입은 문자열
    a = int(x_1)                             # 계산 하기 위해 정수 타입으로 변환

    x_2 = input("두번째 숫자를 입력하시오.")
    b = int(x_2)

    print(x, "번째 두 숫자의 곱셈 결과 ", a * b)

4. 숫자 세는 프로그램 만들기

import time

input("엔터를 누르고 20초를 세시오")
start = time.time()

input("20초 후 다시 엔터를 누르시오")
end = time.time()

# 시간 차이 계산
et = end - start
print("실제 시간 :", round(et, 3), "초")  # 소수점 3자리 반올림
print("차이 :", round(abs(et-20), 3), "초")

🔽🔽 그리고 결과


5. 초를 입력받아 비교하기

import time

n = input("비교할 초를 입력하시오")

input("엔터를 누르고" + n + "초를 세시오")
start = time.time()

input(n + "초 후 다시 엔터를 누르시오")
end = time.time()

# 시간 차이 계산
et = end - start
print("실제 시간 :", round(et, 3), "초")  # 소수점 3번째 자리 반올림
print("차이 :", round(abs(et-int(n)), 3), "초")

6. ifelse 이용한 계산

# 사용자에게 덧셈 정답 입력 받기
x = input("12+23= ")

# 정수형으로 형변환
a = int(x)

# 덧셈 정답 값 비교
if a == 12 + 23:
    print("천재")  # 정답
else:
    print("바보")  # 그 외(오답)

7. random 모듈을 이용한 거북이 이동

import turtle as t
import random

t.shape("turtle")
t.speed(0) # 가장 빠른 속도

for x in range(500):
    a = random.randint(1,360)
    t.setheading(a)
    t.forward(10)

🔽🔽 그리고 결과

그리고 print(x, " 번째 a =", a) 이 코드를 추가하면

🔼🔼 이렇게 볼 수도 있다.


8. while문

print("[1-10]")

x = 1
while x <= 10:
    print(x)
    x = x + 1  # 탈출 구문 (1씩 x를 증가시킨다. 11이 되는 순간 탈출)

print("탈출", x)

for x in range(10):
    print(x)

9. while문 이용해 숫자 맞추기 게임

import random

n = random.randint(1, 30)

while True:
    x = input("숫자를 맞춰보세요")
    g = int(x)

    if g == n:
        print("정답")
        break

    if g < n:
        print("너무 작아요")

    if g > n:
        print("너무 커요")

print("탈출")

10. 함수 정의하기


def는 define(정의하다)이다.

import random
# 인자가 있는 함수 정의
def hello(name):
    print("hello", name)

# 함수 호출
hello(random.randint(1, 30))
hello("여현탁")
hello("star")

매개변수(인자)에 숫자를 입력하든 모두 출력이 된다.

# 인자가 있고, 출력이 있는 함수 정의
def square(a):
    c = a * a
    return c

def triangle(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

    return fact

print("5!", factorial(5)) # 함수 실행 후 리턴 받은 값 바로 출력
print("3!", factorial(3))

# 1) 8!을 구하는 factorial 함수를 호출
fact = factorial(8)
# 2) fact 변수를 사용하여 리턴 값을 받은 후 출력해주세요
print("8!", fact)

# 함수를 호출 -> 인자는 꼭 맞춰서 호출해야 하지만, 리턴값은 꼭 사용하지 않아도 된다
result = square(10)
print("square:", result)

triangle(3,4)  # 리턴값 사용하지 않고 just 호출

print("triangle:" , triangle(3,4))

result = triangle(3,4)
print(result)

def 안에 선언된 함수는 지역함수이므로 함수 밖이나 다른 함수에는 사용할 수 없다. 함수 밖의 공간에 선언된 것은 전역 변수. 예를 들어,

def square(a):
    c = a * a
    return c
    
result = square(10)
print("square:", result)

위의 경우 c는 지역변수, result는 전역변수이다.(매개변수 a도 지역변수)
학과 교수님의 설명을 빌리자면 광주 KBS를 서울에서는 볼 수 없는 것처럼 지역방송으로 예를 들어 설명하셨던 것 같다. 근데 제대로 안 들었던 것 같음. 죄송..


11. 함수를 정의하여 키보드로 거북이 조종하기

import turtle as t

def turn_right():
    t.setheading(0)
    t.forward(10)
    
def turn_up():
    t.setheading(90)
    t.forward(10)

def turn_left():
    t.setheading(180)
    t.forward(10)

def turn_down():
    t.setheading(270)
    t.forward(10)

def blank():
    t.clear()

t.shape("turtle")
t.speed(0)
t.onkeypress(turn_right, "Right")
t.onkeypress(turn_up, "Up")
t.onkeypress(turn_left, "Left")
t.onkeypress(turn_down, "Down")
t.onkeypress(blank, "Escape")
t.listen()


잘됩니다 ..


12. 마우스로 거북이 조종해서 그림그리기

import turtle as t

t.speed(0)
t.pensize(2)
t.hideturtle()
t.onscreenclick(t.goto)

뭐게요
웃음표시입니다 ^^
띄어 그리는게 안되서 걍 산 같음
혹은 그리다 만 하트


13. 계산 문제 맞히는 게임

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 or a - b or a * b)
    # 1-2-1) a 값을 문자열로 q에 담기
    q = str(a)  # ex) a = 40 q = "40"

    # 1-2-2) 연산자(+,-,*)를 문자열 q에 연결
    if op == 1:
        q = q + "+"  # ex) "40+"
    if op == 2:
        q = q + "-"  # ex) "40-"
    if op == 3:
        q = q + "*"  # ex) "40*"

    # 1-2-3) b 값을 문자열 q에 연결
    q = q + str(b)  # ex) "40+30"

    # 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-4) 결과 확인
    if eval(q) == r:  # eval("40+30") -> 진짜 수식으로 변경해서 계산해줌
        print("정답!")
        sc1 = sc1 + 1
    else:
        print("오답!")
        sc2 = sc2 + 1

# 2-3) 최종 결과 출력
print("정답:", sc1, "오답:", sc2)

# 2-4) 칭찬
if sc2 == 0:
    print("당신은 천재입니다.")


🔼🔼 결과


14. 타자 게임 만들기

import time

# 1) 타자연습 단어 리스트 만들기
w = ["고양이", "강아지", "여우", "원숭이", "판다", "개구리", "뱀", "개와 늑대의 시간", "easy peasy lemon squeezy"]

# 2) 문제 번호 초기화
n = 1

# 3) 게임 시작 입력 받기
print("[타자 게임] 준비되면 엔터!")
input()

# 4) 게임 시작 시간 저장
start = time.time()

# 5) 타자 게임 시작
# 5-1) 타자 게임 단어 추출
q = random.choice(w)

# 5-2) 타자 게임 5문제 시작
while n <= 5:
    print("*문제", 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, "초")


🔼🔼 결과 ..




오늘은 여기까지!
비가 와서 우중충해서 그런지 왜인지 엄청 졸렸다. 부디 내일은 제정신으로 들을 수 있기를 ...

1개의 댓글

comment-user-thumbnail
2022년 8월 11일

1~14까지 야무지게 정리 잘 했는걸요? 굿굿! 날씨가 얼른 맑아져서 jm님의 정신도 맑아지길 ㅎㅎ

답글 달기