코딩테스트

[실습] 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문 중첩해서 다시짜기.

리스트 수 줄이기.