혼자 클래스로 구현해봤는데 깔끔하지가 않습니다.
227
작성한 질문수 6
import random
import os
# 게임 초기화
os.system("clear")
print("*"*60)
print("숫자야구게임을 시작하겠습니다.")
print("*"*60)
# 사용자 입력
def user_input(cast=str):
while True:
user_num=cast(input("0~9까지 숫자를 겹치지 않게 3개를 입력해주세요. >> "))
if user_num.isnumeric() and len(user_num)==3:
return user_num
else:
continue
# 숫자생성
def com_input():
com_num=""
com_n=str(random.randint(0,9))
for i in range(3):
while com_n in com_num:
com_n=str(random.randint(0,9))
com_num+=com_n
return com_num
# 게임시작
def game(*args):
count_strike=0
count_ball=0
for i in range(3):
for j in range(3):
if args[0][i] == args[1][j] and i==j:
count_strike+=1
elif args[0][i] == args[1][j] and i!=j:
count_ball+=1
return count_strike, count_ball
# 게임결과
def result(*args):
if args[0]==0 and args[1]==0:
print("3아웃입니다.")
else:
hint=""
if args[0]>0:
hint+="{} 스트라이크".format(args[0])
if args[1]>0:
hint+=" {} 볼".format(args[1])
print(hint.strip())
# 종합
go=[0]
com_num=com_input()
while go[0]<3:
user_num=user_input()
go=game(user_num,com_num)
result(go[0],go[1])
print("3 스트라이크!! 게임종료")
홀로 4번쯤 연습하다가 마지막 한번은 클래스로 구현해봤는데 깔끔하게 표현되지가 않습니다 ㅠ
더 깔끔하게 코딩가능하다면 조언 부탁드리겠습니다..
답변 1
0
위의 코딩은 클래스가 아닌 함수로 구현하신겁니다. ^^ 어쨌든 중요한건 아주 잘!!! 작성하셨습니다.
그래서 올려주신 코드를 참고해서 말씀하신 "클래스" 로 구현한 코드를 첨부하니 이런 스타일도 참고해보시기 바랍니다. 고생하셨습니다.
import random
import os
class GuessNumber():
def __init__(self):
self.com_num, self.user_num = "", ""
self.count_strike, self.count_ball = 0, 0
self.is_end = False
self.limit_count = 10
self.intro()
self.make_number()
def intro(self):
print("*"*60)
print("숫자야구게임을 시작하겠습니다.")
print("*"*60)
def make_number(self):
self.com_num = ""
com_n = str(random.randint(0, 9))
for i in range(3):
while com_n in self.com_num:
com_n = str(random.randint(0, 9))
self.com_num += com_n
def user_input(self, cast=str):
while True:
self.user_num=cast(input("0~9까지 숫자를 겹치지 않게 3개를 입력해주세요. >> "))
if self.user_num.isnumeric() and len(self.user_num)==3:
return self.game()
else:
continue
def game(self):
self.count_strike = self.count_ball = 0
for i in range(3):
for j in range(3):
if self.com_num[i] == self.user_num[j] and i == j:
self.count_strike += 1
elif self.com_num[i] == self.user_num[j] and i != j:
self.count_ball += 1
self.result()
def result(self):
self.limit_count -= 1
if self.count_strike == 0 and self.count_ball == 0:
print("3 아웃 입니다.", "[{} 번의 기회가 남았습니다.]".format(self.limit_count))
else:
hint=""
if self.count_strike > 0:
hint+="{} 스트라이크".format(self.count_strike)
if self.count_ball > 0:
hint+=" {} 볼".format(self.count_ball)
print(hint.strip(), "[{} 번의 기회가 남았습니다.]".format(self.limit_count))
if self.count_strike == 3:
self.is_end = True
if self.limit_count <= 0:
print(">>>>> 모든 기회를 소진하였습니다 <<<<<")
self.is_end = True
# 게임을 클래스화
game = GuessNumber()
while not game.is_end:
game.user_input()
print("게임종료")
한글 변수의 한글 상태를 만드는 법?
0
59
1
38강 = 연산자 더하고 빼기
0
73
2
주석처리
0
129
1
함수의 파라미터값 msg
0
167
1
강의자료 이미지 안나옴
0
252
3
강의자료 질문 두번째
0
176
3
강의자료 관련 질문
0
124
1
파이썬 예외 처리 try / except 파일 처리 코드가 실행이 안됩니다.
0
248
1
소수 너무 어려워요
0
251
1
imagefont 함수 사용
0
245
1
pylint
0
362
1
add 함수 문의 ㅠㅠ
0
290
1
형식 문의드립니다.
0
220
1
변수 명을 왜 src, tar로 하셨는지 궁금합니다.
0
618
1
숫자야구 코드를 짜 봤는데 뭔가 이상합니다.
0
263
1
zsh: command not found: pylint
0
281
1
텔레그램 봇 만들기 코드 실행이 안됩니다 박사님..ㅠ
0
555
1
질문드립니다.
1
381
2
list.reverse() 출력에 대해서 질문있습니다.
1
441
1
데코레이터 함수 및 동작시간 질문입니다.~
1
337
2
opencv 사용하면서 궁금한점 (해상도)
1
789
1
질문드립니다.
1
306
1
아래 오류가 뜨면서 vscode가 컴파일이 되지 않는데.. 혹시 왜이럴까요?
1
451
1
크롤링안되는 현상 문의 드립니다.
1
433
1





