파이썬 야구게임
조회수 1093회
import random
cum=random.sample(range(1,10),4)
print(cum)
def check_list(listname,input_num):
listname=[]
while len(listname)<=input_num-1:
z=0
num=int(input("숫자를 입력하세요"))
listname.append(num)
for k in range(len(listname)-1):
for j in range(k+1,len(listname)):
if listname[k]==listname[j]:
print("중복값이 존재합니다. 다시 입력하세요.")
listname=[]
strike=0
ball=0
for n in range(len(cum)):
for r in range (len(listname)):
if cum[n]==listname[r]and n==r:
strike=strike+1
elif cum[n]==listname[r]:
ball=ball+1
print(strike,"-strike",ball,"-ball")
if strike==4:
print(z,"회만에 성공!")
else:
z=z+1
check_list(listname,input_num)
play=[]
check_list(play,4)
야구 게임 코드를 짰는데 횟수를 어떻게 새야하나요. 재귀함수로 재설정 시키니까 계속 횟수 세는게 0으로 리셋되서 횟수가 저장이 안됩니다. 해결방법이 있나요 아니면 코드를 다시 짜야 하나요.
-
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
1 답변
-
재귀가 필요치 않습니다.
import random cum = random.sample(range(1, 10), 4) print(cum) def check_list(input_num = 4): cnt = 1 while True: num = input("숫자를 입력하세요") #if not num.isnumeric() or len(num) != input_num or len(set(num)) != input_num: if (num.isnumeric(), len(num), len(set(num))) != (True, input_num, input_num): print('숫자만, 숫자는 {}개 입력할 것, 중복값 허용치 않음'.format(input_num)) continue solve = [v1 == v2 for v1, v2 in zip(cum, map(int, num))] # True, False 로 스트라이크, 볼을 구분한다. strike, ball = solve.count(True), solve.count(False) print("{}-strike {}-ball".format(strike, ball)) if strike == input_num: print("{}회만에 성공!".format(cnt)) return else: cnt += 1 check_list()
댓글 입력