관리 메뉴

프로그래밍 삽질 중

모두의 파이썬 - Day 15 타자 게임 만들기 본문

과거 프로그래밍 자료들/python

모두의 파이썬 - Day 15 타자 게임 만들기

평부 2022. 9. 13. 18:15

 

https://thebook.io/007026/day15/

 

모두의 파이썬: 20일 만에 배우는 프로그래밍 기초(개정판): DAY 15 타자 게임 만들기

 

thebook.io

 

 

[조건 1]

동물이름으로 된 영어단어 화면 표시

사용자는 화면에 표시된 단어를 입력

바르게 입력 시 다음문제로 넘어감

오타가 있는 경우 같은 단어가 한 번 더 나옴

틀렸던 문제를 다시 입력하는 경우에도 시간은 계속 흐름

 

 

[조건 1 코드]

import random
import time

w = ["cat", "dog", "fox", "monkey", "mouse", "panda", "frog", "snake", "wolf"]
n = 1  # 문제 번호
print("[타자 게임 : 나오는 단어를 빠르게 치기] 준비되면 엔터!")
input()
start = time.time()

q = random.choice(w)

while n <= 5:
    print("*문제", n)
    print(q)
    x = input()
    if q == x:
        print("통과")
        n = n + 1
        q = random.choice(w)  # 새 문제를 다시 뽑는다
    else:
        print("오타! 다시 도전!")

end = time.time()
et = end - start
et = format(et, ".2f")  # 소수점 둘째 자리까지만 표시
print("타자 시간 : ", et, "초")

 

 

[조건 2]

- random.choice로 할 경우 중복 발생(cat 다음 cat이 나옴)

- 중복을 제거할 방법은 없을까?

random.sample 방법 찾음(하지만 중복이 제거되지 않음;)

▶ 제시되는 특정단어 입력 시 배열에서 사라지게 함 

= 단 기존 배열 값을 건드리는 것이기에 추천하는 방법이 아님

 

 

[중복 제거하고 영어 단어 랜덤으로 보여주기]

 

[조건 2 코드]

import random
import time

w = ["cat", "dog", "fox", "monkey", "mouse", "panda", "frog", "snake", "wolf"]
n = 1  # 문제 번호
print("[타자 게임 : 나오는 단어를 빠르게 치기] 준비되면 엔터!")
input()
start = time.time()

# q = random.choice(w)
q = (''.join(random.sample(w, 1)))
print(q)

while n <= 5:
    print("*문제", n)
    print(q)
    x = input()
    if q == x:
        print("통과")
        n = n + 1
        w.remove(q)
        print(w)
        q = (''.join(random.sample(w, 1)))  # 새 문제를 다시 뽑는다
    else:
        print("오타! 다시 도전!")

end = time.time()
et = end - start
et = format(et, ".2f")  # 소수점 둘째 자리까지만 표시
print("타자 시간 : ", et, "초")