Skip to content
89 changes: 84 additions & 5 deletions src/baseball/main.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,89 @@
def main():
import random


def check_valid_input():
arr_list = list(input("숫자를 입력하세요: "))

if len(arr_list) != 3:
raise ValueError("3 자리 숫자를 입력하세요")
for i in range(3):
if not arr_list[i].isdigit():
raise ValueError("정수를 입력하세요")

Check warning on line 11 in src/baseball/main.py

View check run for this annotation

Codecov / codecov/patch

src/baseball/main.py#L11

Added line #L11 was not covered by tests
if int(arr_list[i]) < 1 or int(arr_list[i]) > 9:
raise ValueError("1부터 9까지의 숫자만 입력하세요")

Check warning on line 13 in src/baseball/main.py

View check run for this annotation

Codecov / codecov/patch

src/baseball/main.py#L13

Added line #L13 was not covered by tests
if len(arr_list) != len(set(arr_list)):
raise ValueError("중복된 숫자를 입력하였습니다")

Check warning on line 15 in src/baseball/main.py

View check run for this annotation

Codecov / codecov/patch

src/baseball/main.py#L15

Added line #L15 was not covered by tests

return [int(x) for x in arr_list]


def regame():
val = input("게임을 새로 시작하려면 1, 종료하려면 2를 입력하세요.: ")
if val in ["1", "2"]:
return int(val)
else:
raise ValueError("1 혹은 2를 입력해주세요.")

Check warning on line 25 in src/baseball/main.py

View check run for this annotation

Codecov / codecov/patch

src/baseball/main.py#L25

Added line #L25 was not covered by tests


def make_num():
return random.sample(range(1, 10), 3)


def input_num():
return check_valid_input()


def check(com, arr):
"""
프로그램의 진입점 함수.
여기에서 전체 프로그램 로직을 시작합니다.
숫자 야구 게임의 결과를 계산하는 함수
- 같은 위치에 같은 숫자가 있으면 스트라이크
- 다른 위치에 같은 숫자가 있으면 볼
"""
# 프로그램의 메인 로직을 여기에 구현
strikes = 0
balls = 0

for i in range(3):
if arr[i] == com[i]:
strikes += 1
else:
if arr[i] in com:
balls += 1

return strikes, balls


def game():
com = make_num()

while True:
arr = input_num()
strikes, balls = check(com, arr)

if strikes == 0 and balls == 0:
print("낫싱")
elif strikes == 3:
print("3스트라이크")
print("3개의 숫자를 모두 맞히셨습니다! 게임 종료")
break
else:
print(f"{balls}볼 {strikes}스트라이크")


def main():
print("숫자 야구 게임을 시작합니다.")

while True:
try:
game()
choice = regame()
if choice == 1:
continue
elif choice == 2:
break
except ValueError as e:
print(e)
raise


if __name__ == "__main__":
# 프로그램이 직접 실행될 때만 main() 함수를 호출
main()
Loading