Python

숫자 야구 -시도 횟수 줄이기(진행중)

충 민 2022. 7. 26. 19:18

자바에서 구현한 숫자 야구 게임을 파이썬에서 구현해보았다 

평균은 33회 이내이다 아직 연구가 더 필요하다

import random
import os
from re import A

sum=0
for a in range(1000):
    r=0
    numArr = [0,0,0]##랜덤 정답 숫자
    numArr2 = [0,0,0]##랜덤 도전 숫자

    a1 = list()
    k=0
    while True:
        a1.append(k)
        if len(a1)>=10:
            break
        k+=1
    avg=0
    
    h=0
    while h<3:
        num = random.randint(1,9)##랜덤 정답 숫자
        ##중복처리
        if numArr[0]==num:
            continue
        elif numArr[1]==num:
            continue
        else: 
            numArr[h] = num

        h+=1
    ##정답숫자 생성
    print('정답숫자:',end='')
    for w in range(3):
        print(numArr[w],end=' ')
    ##정답 숫자 출력
    print()
    ##도전 시작
    while True:
        strike=0
        ball=0

        q=0
        while q<3:
            ##도전숫자 생성
            num2 = random.choice(a1)##랜덤 도전 숫자
            if numArr2[0]==num2:
                continue
            elif numArr2[1]==num2:
                continue
            else:
                numArr2[q]=num2
                q+=1
        
        ##도전숫자 출력  
        for w in range(3):
            print(numArr2[w],end=' ')
                    

        for i in range(3):
            for j in range(3):
                if numArr[i] == numArr2[j]:
                    if i==j:
                        strike+=1
                    else:
                        ball+=1
        r+=1
        print('--->',strike,'S',ball,'B')
        print()
        if strike+ball == 0:
            for i in range(3):
                a1.remove(int(numArr2[i]))
                        
        if strike == 3:
            print(r,'번째만에 도전 성공')
            sum+=r 
            break
           
avg=sum/1000
print('평균 횟수:',avg)