내용:
추가 도전 과제:
참고 자료:
import random
random_number = random.randint(1, 100)
평가
# 랜덤 번호 (= 정답인 번호) 생성
import random
answer_number = random.randint(1, 100)
print(answer_number)
# pip install로 설치 안해도 된다.
# 파이썬이 자체적으로 가지고 있는 모듈
# 별도 고유의 기능이 있는 모듈들은 쓰고 싶을 때마다 impot해서 쓰면 된다.
# 51
# 17
....
# 플레이어가 숫자를 입력할 input 박스 넣기
import random
answer_number = random.randint(1, 100)
print(answer_number)
################################################
my_guess = input('1~100 사이의 숫자를 입력하세요. ')
print(my_guess)
#
84
빈칸 커서 : 입력값이 필요한 inputbox - 입력값을 넣어줘야 넘어간다
//////////////////////////////////////////////////////////////////////////
# 입력한 숫자와 컴퓨터의 숫자(=정답인 숫자)를 비교
import random
answer_number = random.randint(1, 100)
print(answer_number)
my_guess = input('1~100 사이의 숫자를 입력하세요. ')
print(my_guess)
################################################
if answer_number == my_guess:
print("정답입니다.")
else:
print("오답입니다.")
#
43
빈칸 커서 : 플레이어가 추측하는 번호 입력
#
43 (랜덤 번호 = 정답 번호)
43 (43을 입력)
(Enter)
#
43
오답입니다.
# '오답입니다'가 나오는 이유
input은 입력값을 string(문자열)로 돌려주기 때문이다.
input을 int()로 감싸줘서 입력값을 int(integer 정수)로 돌려주도록 하자.
//////////////////////////////////////////////////////////////////////////
# input 박스 int()로 감싸기
import random
answer_number = random.randint(1, 100)
print(answer_number)
my_guess = int(input('1~100 사이의 숫자를 입력하세요. '))
print(my_guess)
################################################
if answer_number == my_guess:
print("정답입니다.")
else:
print("오답입니다.")
//////////////////////////////////////////////////////////////////////////
# 입력한 숫자와 컴퓨터의 숫자(=정답인 숫자)를 비교해서 '업', '다운' 힌트 주기
import random
answer_number = random.randint(1, 100)
print(answer_number)
my_guess = int(input('1~100 사이의 숫자를 입력하세요. '))
print(my_guess)
################################################
if answer_number == my_guess:
print("정답입니다.")
elif answer_number < my_guess:
print("UP")
else:
print("DOWN")
# 플레이어가 숫자를 맞출 때까지 반복할 수 있게 while문에 반복하고 싶은 부분들을 다 넣어준다.
# while True : 조건이 False거나 break를 하면 반복문에서 나올 수 있다.
# for 반복문 : iterable(반복 가능한)한 정수 원소를 가진 range 객체를 넣어주고 반복할 수 있다.
import random
answer_number = random.randint(1, 100)
print(answer_number)
my_guess = int(input('1~100 사이의 숫자를 입력하세요. '))
print(my_guess)
while True:
if answer_number == my_guess:
print("정답입니다.")
################################################
break # 정답일 때 while 반복문이 끝나게 된다.
################################################
elif answer_number > my_guess:
print("UP")
else:
print("DOWN")
#
31
1~100 사이의 숫자를 입력하세요. (커서)
#
31
1~100 사이의 숫자를 입력하세요. 20 (20 입력)
#
UP
UP
UP
UP
UP
...
# 31을 입력해서 정답을 맞추면 반복문이 '정답입니다.'를 출력해주면서 반복문이 끝난다.
# 하지만 만약 answer_number보다 작은 숫자를 입력하면 "UP"이 출력되고 반복문이 다시 시작되면서 같은 조건에서 다시 "UP"이 출력되는 것이 무한 반복된다.
# while문은 break을 만나거나 조건이 False일 떄까지 계속 반복하면서 조건식의 출력값을 출력한다.
# 무한 출력을 빠져나올 떄는 CTRL+C
//////////////////////////////////////////////////////////////////////////
# 위 문제를 해결하기 위해서는 반복문이 다시 반복될 때 새로운 숫자를 입력해서 다시 조건문을 돌 수 있도록 input 박스를 while문 안에 넣어줘야한다.
import random
answer_number = random.randint(1, 100)
print(answer_number)
while True:
my_guess = int(input('1~100 사이의 숫자를 입력하세요. '))
if answer_number == my_guess:
print("정답입니다.")
break
elif answer_number > my_guess:
print("UP")
else:
print("DOWN")
#
91
1~100 사이의 숫자를 입력하세요. 90
UP
1~100 사이의 숫자를 입력하세요. 92
DOWN
1~100 사이의 숫자를 입력하세요. 91
정답입니다.
# 숫자를 입력할 때마다 입력 횟수를 저장해서 정답을 맞췄을 경우 플레이어에게 도전 횟수를 알려준다.
# (while문 밖) count = 0 (도전하기 전) count라는 변수에 0을 넣어준다.
# (while문 안) 도전할 때마다 count에 1을 더해주고 맞췄을 때 count에 저장되어 있는 값을 출력해준다.
import random
answer_number = random.randint(1, 100)
print(answer_number)
count = 0
while True:
################################################
count = count + 1
print(f"{count}번째 시도입니다!")
################################################
my_guess = int(input('1~100 사이의 숫자를 입력하세요. '))
if answer_number == my_guess:
print("정답입니다.")
################################################
print(f"{count}번 만에 맞췄습니다!")
################################################
break
elif answer_number > my_guess:
print("UP")
else:
print("DOWN")
#
90
1번째 시도입니다!
1~100 사이의 숫자를 입력하세요. 50
UP
2번째 시도입니다!
1~100 사이의 숫자를 입력하세요. 99
DOWN
3번째 시도입니다!
1~100 사이의 숫자를 입력하세요. 90
정답입니다.
3번 만에 맞췄습니다!
# 플레이어가 입력한 숫자가 정수일 경우 : 1~100 사이가 아닌 경우의 조건을 걸어서 메시지를 출력해준다.
# while 반복문 초반에 조건문을 걸어주고 만약 이 조건에 부합할 경우 반복문이 끝나지 않고 다시 처음으로 돌아가기 위해 continue를 해준다.
# 플레이어가 입력한 숫자가 정수가 아닌 경우(소수점, 문자열 등) : try except문으로 에러처리를 한다.
import random
answer_number = random.randint(1, 100)
print(answer_number)
count = 0
while True:
count = count + 1
print(f"{count}번째 시도입니다!")
try:
my_guess = int(input('1~100 사이의 숫자를 입력하세요. '))
if my_guess > 100 or my_guess < 1:
print('입력 범위가 아닙니다. ')
continue
if answer_number == my_guess:
print("정답입니다.")
print(f"{count}번 만에 맞췄습니다!")
break
elif answer_number > my_guess:
print("UP")
else:
print("DOWN")
except ValueError:
print('정수로 입력해주세요.')
#
58
1번째 시도입니다!
1~100 사이의 숫자를 입력하세요. -100
입력 범위가 아닙니다.
2번째 시도입니다!
1~100 사이의 숫자를 입력하세요. 안녕
정수로 입력해주세요.
1~100 사이의 숫자를 입력하세요. 58
정답입니다.
3번 만에 맞췄습니다!
# 게임을 재시작 할 때마다 랜덤 숫자와 카운트도 리셋 되어야 하기 때문에 전체를 while 반복문 안으로 넣어준다.
import random
while True:
answer_number = random.randint(1, 100)
print(answer_number)
count = 0
while True:
count = count + 1
print(f"{count}번째 시도입니다!")
try:
my_guess = int(input('1~100 사이의 숫자를 입력하세요. '))
if my_guess > 100 or my_guess < 1:
print('입력 범위가 아닙니다. ')
continue
if answer_number == my_guess:
print("정답입니다.")
print(f"{count}번 만에 맞췄습니다!")
break
elif answer_number > my_guess:
print("UP")
else:
print("DOWN")
except ValueError:
print('정수로 입력해주세요.')
#
57
1번째 시도입니다!
1~100 사이의 숫자를 입력하세요. 57
정답입니다.
1번 만에 맞췄습니다!
92
1번째 시도입니다!
1~100 사이의 숫자를 입력하세요.
# 정답을 맞추면, 작은 while 반복문이 break되고 자동으로 큰 while 반복문이 반복된다.
# 자동 게임 재시작 : 무한 게임
//////////////////////////////////////////////////////////////////////////
# 게임 재시작을 플레이어의 선택에 맡기기 위해 input()를 하나 넣어주자.
will_continue = input('한 판 더? (Y/N) ')
if will_continue == 'Y':
continue
else:
break
#
4
1번째 시도입니다!
1~100 사이의 숫자를 입력하세요. 4
정답입니다.
1번 만에 맞췄습니다!
한 판 더? (Y/N) y
(게임 끝남)
//////////////////////////////////////////////////////////////////////////
# 만약 input의 입력값이 대문자 Y가 아니면 반복문이 break된다.
# .upper()나 .lower()로 input의 입력값을 대문자나 소문자로 통일해주자.
will_continue = input('한 판 더? (Y/N) ')
if will_continue.upper() == 'Y':
continue
else:
break
#
35
1번째 시도입니다!
1~100 사이의 숫자를 입력하세요. 35
정답입니다.
1번 만에 맞췄습니다!
한 판 더? (Y/N) y
65
1번째 시도입니다!
1~100 사이의 숫자를 입력하세요.
# .upper() / .lower()에서 '()' 빼먹지 않기
# 최저기록은 게임이 반복할 때마다 리셋되지 않아야 하기 때문에 모든 while문 밖에 min_try라는 변수에 0을 넣어준다. (min_try = 0)
# (작은 while문 안) 정답을 맞추면 min_count와 그 해당 게임의 count 값을 비교해서 작은 값을 min_count에 재할당하고 메시지를 출력한다.
# 첫 판의 min_count 값은 0이기 때문에 조건식을 잘 짜보자.
import random
min_try = 0
while True:
answer_number = random.randint(1, 100)
print(answer_number)
count = 0
while True:
count = count + 1
print(f"{count}번째 시도입니다!")
try:
my_guess = int(input('1~100 사이의 숫자를 입력하세요. '))
if my_guess > 100 or my_guess < 1:
print('입력 범위가 아닙니다. ')
continue
if answer_number == my_guess:
print("정답입니다.")
print(f"{count}번 만에 맞췄습니다!")
if count <= min_try:
min_try = count
print(f"최저 시도 횟수 : {min_try}번")
else:
print(f"최저 시도 횟수 : {count}번")
break
elif answer_number > my_guess:
print("UP")
else:
print("DOWN")
except ValueError:
print('정수로 입력해주세요.')
will_continue = input('한 판 더? (Y/N) ')
if will_continue.upper() == 'Y':
continue
else:
print('---------------------------------------')
print(f"최저 시도 횟수 : {count}번")
print('---------------------------------------')
break
#
38
1번째 시도입니다!
1~100 사이의 숫자를 입력하세요. 35
UP
2번째 시도입니다!
1~100 사이의 숫자를 입력하세요. 40
DOWN
3번째 시도입니다!
1~100 사이의 숫자를 입력하세요. 38
정답입니다.
3번 만에 맞췄습니다!
최저 시도 횟수 : 3번
한 판 더? (Y/N) Y
20
1번째 시도입니다!
1~100 사이의 숫자를 입력하세요. 50
DOWN
2번째 시도입니다!
1~100 사이의 숫자를 입력하세요. 20
정답입니다.
2번 만에 맞췄습니다!
최저 시도 횟수 : 2번
한 판 더? (Y/N) Y
46
1번째 시도입니다!
1~100 사이의 숫자를 입력하세요. 46
정답입니다.
1번 만에 맞췄습니다!
최저 시도 횟수 : 1번
한 판 더? (Y/N) N
---------------------------------------
최저 시도 기록 : 1번
---------------------------------------
import random
min_try = 0
while True:
answer_number = random.randint(1, 100)
# print(answer_number)
count = 0
print('------------------------------------------------------------')
print('Up & Down 게임을 시작합니다. 1~100 사이의 숫자를 맞춰주세요!')
while True:
count = count + 1
print('------------------------------------------------------------')
print(f"# {count}번째 시도")
try:
my_guess = int(input('숫자 입력 : '))
if my_guess > 100 or my_guess < 1:
print('입력 범위가 아닙니다. ')
continue
if answer_number == my_guess:
print('---------------------------------------')
print("정답입니다.")
print(f"{count}번 만에 맞췄습니다!")
if count <= min_try:
min_try = count
print('---------------------------------------')
print(f"최저 시도 기록 : {min_try}번")
else:
print('---------------------------------------')
print(f"최저 시도 기록 : {count}번")
break
elif answer_number > my_guess:
print("UP! UP! UP!")
else:
print("DOWN! DOWN! DOWN!")
except ValueError:
print('정수로 입력해주세요.')
will_continue = input('한 판 더? (Y/N) ')
if will_continue.upper() == 'Y':
continue
else:
print('---------------------------------------')
print(f"최저 시도 기록 : {count}번")
break