조건
- 컴퓨터가 랜덤의 3자리 숫자를 생성함.
- 사용자는 세 자리 수를 입력하면 스트라이크, 볼 개수를 알려줌
- 스트라이크는 숫자와 자리 수 일치, 볼은 숫자만 일치
- 3 스트라이크시 게임종료
// 입력할 때 중복 숫자 입력시 예외처리 고려 안함. 스트라이크 볼 판별 조건식을 더욱 간결하게 짤 수 있을 것 같음.
import random
def comNumFunc():
comNum = []
randomNum = random.randint(1,9)
for i in range(3):
while randomNum in comNum:
randomNum = random.randint(1,9)
comNum.append(randomNum)
print(comNum)
return comNum
def userNumFunc():
inputNum = int(input("숫자를 입력해주세요 ex)123 : "))
userNum = list(map(int, str(inputNum)))
return userNum
def isStrike(cNum,uNum):
strikeCounter = 0
for i in range(3):
if(cNum[i] == uNum[i]):
strikeCounter+=1
return strikeCounter
def isBall(cNum,uNum):
ballCounter = 0
for i in range(3):
if uNum[i] in cNum and cNum[i] != uNum[i]:
ballCounter+=1
return ballCounter
def decide(strikeNumber,ballNumber):
if(strikeNumber >=1 and ballNumber ==0):
print(strikeNumber,"스트라이크")
elif(strikeNumber ==0 and ballNumber >= 1):
print(ballNumber,"볼")
elif(strikeNumber >= 1 and ballNumber >= 1):
print(strikeNumber,"스트라이크",ballNumber,"볼")
elif(strikeNumber == 0 and ballNumber == 0 ):
print("낫싱")
if __name__ == "__main__":
comNum = comNumFunc()
while True:
userNum = userNumFunc()
strikeNumber = isStrike(comNum,userNum)
ballNumber = isBall(comNum,userNum)
decide(strikeNumber,ballNumber)
if strikeNumber == 3:
break
print("게임을 종료합니다.")
'Language > Python' 카테고리의 다른 글
[Python] Ch7 - part2. 인스턴스, 메서드 (0) | 2021.07.01 |
---|---|
[Python] Ch7 - part1. 클래스 (0) | 2021.07.01 |
[Python] Ch6 - part 3. 라이브러리 (0) | 2021.06.29 |
[Python] Ch6 - part 2. 패키지 (0) | 2021.04.24 |
[Python] Ch6 - part1. 모듈 (0) | 2021.04.24 |