728x90
반응형
import random
random_num = random.sample(range(10), 3)
print(random_num) # 테스트
game_count = 0
check_list = []
random_num_list = []
num_list = []
for i in random_num:
random_num_list.append(str(i))
while True:
if game_count == 9:
print(
"야구게임에서 패배했습니다."
) # 9번 기회를 초과하면 숫자를 받지 않고 게임 오버
break
if num_list == random_num_list:
print("축하합니다. 게임에서 승리했습니다!!!")
break
user_input_num = input("0~9 숫자 3개를 입력하세요: ")
if len(user_input_num) == 3:
num_list = []
count = 0
ball = 0
out = 3
strike = 0
for i in user_input_num:
num_list.append(i)
for i in num_list:
for j in num_list:
if i == j:
count += 1
if count > 3:
print("중복되는 숫자가 있다!")
continue # 중복되는 숫자가 있으면 이후 코드 생략하고 반복문 재실행
if user_input_num in check_list:
print("이미 입력한 숫자입니다. 다시 입력하세요!")
continue
check_list.append(user_input_num)
for i in range(0, len(num_list)):
if num_list[i] in random_num_list:
if num_list[i] == random_num_list[i]:
strike += 1
else:
ball += 1
out = 3 - (strike + ball)
print(f"{out} out, {strike}strike, {ball}ball")
game_count += 1
print(f"{game_count}번째 실행 중 입니다.")
else:
print("숫자 3자리를 입력하세요.")
print 부분이나 for 구문이 자바와 많이 헷갈려서 코드 확인하는데 시간이 많이 걸렸다.
random_num = random.sample(range(10), 3)
>>> radom_num에 0~9사이 숫자 3개를 중복 없이 인트형 요소로 리스트에 저장한다.
game_count += 1
게임 카운트를 설정하여 9가되면 게임오버가 되도록하는데, 9회째에 게임이 끝나지 않도록 생각하는데 시간이 오래 걸렸다.
input()으로 받은 user_input_num은 문자열로 저장되기 때문에 strike, ball, out 카운트를 적용할 때, 형 변환을 사용해줘야되서 시간이 오래 걸렸다.
다음시간엔 이 코드를 함수, 클래스, 모듈로 작성해보겠다.
댓글