코딩테스트
[실습] 2. 컴퓨터가 랜덤으로 생성한 4자리 숫자 맞추기게임
뇨롱
2020. 5. 14. 16:06
컴퓨터가 랜덤으로 생성한 4자리 숫자를 사용자가 맞춘다.
맞출때까지 반복하며
자릿수와 숫자가 모두 맞을 경우: 스트라이크
숫자만 맞을 경우: 볼
둘다 틀릴경우: 꽝
으로 표시한다.
ex)
컴퓨터가 선택한 숫자: 1469
내가 입력한 숫자: 2474
=> 스트라이크:1, 볼:1, 꽝:2
★문제를 풀기 위해 내가 선정한 룰:
#숫자가 중복될 경우도 허용하되 만약 사용자가 입력한 것중 자릿수와 숫자가 모두 동일해서 스트라이크가 +1된 경우에는 다른 중복된 숫자는 꽝처리 함(합 4를 만들기 위해.)
import random
print("4자리 숫자 맞추기 게임을 지금 시작합니다")
comcho=random.randint(1000,9999)
comchos=str(comcho) #비교를 위해 문자열로 변환
print(comchos)
check=[0,0,0,0]
score=[0,0,0] # 스트라이크 0, 볼 0, 꽝 0 으로 초기화 및 리스트 선언
#score[0] 스트라이크
#score[1] 볼
#score[2] 꽝
while True:
score=[0,0,0]
usercho=int(input("컴퓨터가 생각한 내자리 숫자를 맞춰보세요!"))
userchos=str(usercho)
for a in range(0,4):
if comchos[a]==userchos[a]:
check[a]=1
score[0]+=1
for i in range(0,4):
if check[i]==1:
continue
num=userchos[i]
for j in range(0,4):
if comchos[j]==num:
if check[j]==1:
continue
elif j!=i: #j!=i
score[1]+=1
remain=4-int(score[0])-int(score[1])
score[2]=remain
if score[0]==4:
break
else:
print("스트라이크",score[0],'볼',score[1],'꽝',score[2])
print("컴퓨터가 생각한 숫자",comcho,"를 맞췄습니다. \n 숫자 맞추기 게임을 종료합니다. 수고하셨습니다:)")
그외에 나올 수 있는 룰:
1) 숫자에 중복없이
2) 횟수 제한
비전공자를 위한 강의의 시험이라서 코딩테스트는 없을 줄 알았더니 있었다.
시험이고 1시간이라는 제한시간이 있었어서 너무 급하게 짜느라 코드도 너무 더럽구 ㅠㅠ
딕셔너리로 짜고 싶었는데 리스트로 짰다.
나중에 이것저것 수정해야게따
<수정해야할것>
for문과 if문 중첩해서 다시짜기.
리스트 수 줄이기.