숫자야구 코드를 짜 봤는데 뭔가 이상합니다.
253
24 asked
# v2: 안 보고 만들기 (23.11.21)
from random import randint
from os import system
answer = []
num = str(randint(0, 9))
for i in range(3):
while num in answer:
num = str(randint(0, 9))
answer.append(num)
strikes = 0
balls = 0
system('cls')
while strikes < 3:
user_input = str(input("3자리 숫자를 입력해 주세요."))
if len(user_input) != 3:
print("3자리 자연수를 입력해주세요.")
continue
if not user_input.isdigit():
print("문자 말고 숫자를 입력해주세요.")
continue
if user_input[0] == user_input[1] or user_input[1] == user_input[2] or user_input[0] == user_input[2]:
print("중복된 숫자 없이 입력해주세요.")
continue
strikes = 0
balls = 0
# 숫자 비교
for i in user_input:
for j in answer:
if i in answer and i == j:
strikes += 1
if i in answer and i != j:
balls += 1
if strikes != 3:
print(f"{strikes} 스트라이크, {balls} 볼")
else:
print("성공!")
37, 39에서 저는 i in answer를 써 봤는데요. 막 2 스트라이크 4 볼이 나오고 그런 현상이 생깁니다ㅠㅠ
Answer 1
0
안녕하세요, 인프런 AI 인턴입니다.
난수 생성과 게임 로직 부분에 문제가 있는 것 같습니다. 우선, i in answer 부분 때문에 볼과 스트라이크의 카운트가 예상과 다르게 나올 수 있습니다. 답(answer)에 사용자가 입력한 숫자(i)가 있을 경우, 해당 숫자가 위치까지 정확히 일치하는지를 확인하여 스트라이크를 카운팅하고, 위치는 다르지만 숫자가 존재하는 경우에 볼을 카운팅해야 합니다. 코드를 수정하기 위해선 i 변수를 index로 활용하고, user_input과 answer의 각 자릿수를 비교하여 로직을 수정해야 할 것 같습니다. 또한 볼 카운팅 시 중복 카운트를 피하기 위해 이미 확인한 숫자에 대해서는 카운트를 하지 않도록 조건을 추가해야 합니다. 다음은 수정된 코드의 일부입니다:
# ...
while strikes < 3:
user_input = str(input("3자리 숫자를 입력해 주세요: "))
# ... 기존 조건 검사 ...
# 숫자 비교 로직 수정
strikes = 0
balls = 0
for i in range(3):
if user_input[i] == answer[i]:
strikes += 1
elif user_input[i] in answer:
balls += 1
if strikes != 3:
print(f"{strikes} 스트라이크, {balls} 볼")
else:
print("성공!")
break
이렇게 수정하면 각 자릿수별로 정확한 스트라이크와 볼을 계산할 수 있습니다. 도움이 되셨길 바랍니다!
38강 = 연산자 더하고 빼기
0
60
2
주석처리
0
116
1
함수의 파라미터값 msg
0
155
1
강의자료 이미지 안나옴
0
239
3
강의자료 질문 두번째
0
165
3
강의자료 관련 질문
0
116
1
파이썬 예외 처리 try / except 파일 처리 코드가 실행이 안됩니다.
0
235
1
소수 너무 어려워요
0
245
1
imagefont 함수 사용
0
239
1
pylint
0
357
1
add 함수 문의 ㅠㅠ
0
283
1
형식 문의드립니다.
0
209
1
변수 명을 왜 src, tar로 하셨는지 궁금합니다.
0
602
1
zsh: command not found: pylint
0
269
1
텔레그램 봇 만들기 코드 실행이 안됩니다 박사님..ㅠ
0
546
1
질문드립니다.
1
374
2
list.reverse() 출력에 대해서 질문있습니다.
1
433
1
데코레이터 함수 및 동작시간 질문입니다.~
1
323
2
opencv 사용하면서 궁금한점 (해상도)
1
781
1
질문드립니다.
1
299
1
아래 오류가 뜨면서 vscode가 컴파일이 되지 않는데.. 혹시 왜이럴까요?
1
445
1
크롤링안되는 현상 문의 드립니다.
1
421
1
파이썬 크롤링 관련 문의
1
277
1
정규 표현식 질문있습니다.
1
243
1

