숫자 야구를 만들어 보았다.
숫자야구: https://namu.wiki/w/%EC%88%AB%EC%9E%90%EC%95%BC%EA%B5%AC
import random
while True:
number_length = int(input("몇자리수로 하시겠습니까? "))
if number_length > 10:
print("0~10 사이의 숫자만 입력해 주시기 바랍니다.")
continue
else:
break
number = []
while len(number) < number_length:
n = random.randint(0, 9)
if n not in number:
number.append(n)
number = list(map(str, number))
win = False
count = 0
while not win:
strike = 0
ball = 0
answer = input('숫자를 입력해주세요 ')
count += 1
if len(answer) != number_length:
print(f"{number_length}자리의 수를 입력해 주세요.")
continue
for i in range(number_length):
if answer[i] == number[i]:
strike += 1
elif answer[i] in number:
ball += 1
if strike == 0 and ball == 0:
print('OUT!')
else:
print(f"{strike}S {ball}B")
if strike == number_length:
print(f'승리! {count}회 만에 맞추셨습니다.')
win = True
아웃을 판별하는 아래와 같은 if else 문은
if strike == 0 and ball == 0:
print('OUT!')
else:
print(f"{strike}S {ball}B")
이렇게 삼항 연산자를 통해 한 줄로 바꿀 수 있다.
print('OUT!') if strike == 0 and ball == 0 else print(f"{strike}S {ball}B")
import random
random.randint(a, b)
a <= n <= b 범위의 n 생성
map 함수
number = list(map(str, number))
number 리스트의 요소들을 str형으로 바꾼 새로운 리스트 생성.
삼항 연산자
if else 구문을 한 줄로 나타낼 수 있다.
<파이썬 형식>
[True일때] if 조건문 else [False일때]
<다른언어(js..) 형식>
if 조건문 ? [True일때] : [False일때]