내가 쓴 코드)
# 1~9까지 무작위로 세자리 수 (중복 없이) 만들기
# 맞출 때까지 무한반복
# 숫자를 맞춰보세요 : "입력"
# 같은 자리의 수가 있으면 strike, 같은 수가 다른 자리에 있으면 ball
# com = "329" , mine ="123" ==> 123 1S1B
# com = "329" , mine = "321" ==> 321 2S0B
# com = "329", mine ="329" ==> 329 맞췄습니다. 프로그램 종료
from random import random
#while
con = True
#1부터 9까지 배열 만들기
arr = [];
for i in range(1,9+1):
arr.append(i)
#배열 섞기
for i in range(1,100+1):
rnd = int(random()*9)
a = arr[0]
arr[0] = arr[rnd]
arr[rnd] = a
#com 숫자 만들기
com = str(arr[0])+str(arr[1])+str(arr[2])
print(com)
while con:
strike = 0
ball = 0
mine = input("숫자를 맞춰보세요 : ")
if com == mine:
print(mine,"맞췄습니다.")
con = False
else:
if com[0] == mine[0]:
strike += 1
if com[1] == mine[1]:
strike += 1
if com[2] == mine[2]:
strike += 1
if com[0] == mine[1] or com[0] == mine[2]:
ball +=1
if com[1] == mine[0] or com[1] == mine[2]:
ball +=1
if com[2] == mine[0] or com[2] == mine[1]:
ball +=1
print(mine,str(strike)+"S"+str(ball)+"B")
선생님 코드(메서드 사용)
from random import random
#Strike 구하는 메서드
def getS(com,mine):
ret = 0
c1 = com[0]
c2 = com[1]
c3 = com[2]
m1 = mine[0]
m2 = mine[1]
m3 = mine[2]
if c1 == m1:
ret += 1
if c2 == m2:
ret += 1
if c3 ==m3:
ret += 1
return ret
#Ball 구하는 메서드
def getB(com,mine):
ret = 0
c1 = com[0]
c2 = com[1]
c3 = com[2]
m1 = mine[0]
m2 = mine[1]
m3 = mine[2]
if c1 == m2 or c1 == m3:
ret += 1
if c2 == m1 or c2 == m3:
ret += 1
if c3 == m1 or c3 == m2:
ret += 1
return ret
# 컴퓨터 값 셋팅 메서드
def ranC():
#1부터 9까지 배열 만들기
arr = [];
for i in range(1,9+1):
arr.append(i)
#배열 섞기
for i in range(1,100+1):
rnd = int(random()*9)
a = arr[0]
arr[0] = arr[rnd]
arr[rnd] = a
#com 숫자 만들기
com = str(arr[0])+str(arr[1])+str(arr[2])
return com
com = ranC()
#while 변수
w = True
while w:
# 내 입력값 받기
mine = input("숫자를 맞춰보세요 : ")
print(com)
# 내 입력값으로 Strike, Ball 값 받기
s = getS(com,mine)
b = getB(com,mine)
# 결과 출력
if s == 3:
print(mine,"정답입니다")
w = False
else:
print(mine,str(s)+"S"+str(b)+"B")
메서드를 만들어 쓰는게 아무래도 더 깔끔한거 같다.
'Python' 카테고리의 다른 글
| [QT] 버튼 클릭 시 감소 (0) | 2023.06.28 |
|---|---|
| [Python] 홀 짝 게임 (0) | 2023.06.28 |
| [Python] 가위 바위 보 게임 (0) | 2023.06.28 |
| [Python] 로또 프로그램 만들기 (0) | 2023.06.28 |
| [Python] 배열 (0) | 2023.06.28 |