728x90
이 게임은 랜덤 함수를 사용하여 4번의 기회 안에 1부터 20 사이의 정수를 맞히는 게임인데요.
import random
ans = random.randint(1,20)
for i in range(4,0,-1):
user = int(input(f"기회가 {i}번 남았습니다. 1-20 사이의 숫자를 맞혀 보세요: "))
if(user == ans):
print(f"축하합니다. {4-i+1}번 만에 숫자를 맞히셨습니다.")
break
elif (user > ans):
if (i == 1):
print(f"아쉽습니다. 정답은 {ans}였습니다.")
break
print("Down")
else :
if (i == 1):
print(f"아쉽습니다. 정답은 {ans}였습니다.")
break
print("Up")
기능 추가 1
저는 처음 정수와 마지막 정수도 정하고 싶고,
기회도 시작과 끝 사이의 개수에 따라 균등하게 주고 싶었습니다.
그래서 처음 정수와 마지막 정수를 파라미터로 받는 num_game 함수를 만들었습니다.
import random
def num_game(first_num, last_num):
ans = random.randint(first_num, last_num)
chance = (last_num - first_num + 1) // 5
if chance == 0:
chance = 1
for i in range(chance, 0, -1):
user = int(input(f"기회가 {i}번 남았습니다. {first_num}-{last_num} 사이의 숫자를 맞혀 보세요: "))
if(user == ans):
print(f"축하합니다. {chance - i + 1}번 만에 숫자를 맞히셨습니다.")
break
elif (user > ans):
if (i == 1):
print(f"아쉽습니다. 정답은 {ans}였습니다.")
break
print("Down")
else :
if (i == 1):
print(f"아쉽습니다. 정답은 {ans}였습니다.")
break
print("Up")
기회는 (마지막 정수 - 처음 정수 + 1)을 5로 나눈 몫만큼 주는 것으로 하였습니다.
만약 기회가 (마지막 정수 - 처음 정수 + 1)이 5보다 작으면 1번의 기회를 주는 것으로 하겠습니다.
예시>
num_game(2, 18)
출력>
기회가 3번 남았습니다. 2-18 사이의 숫자를 맞혀 보세요: 7
Up
예시>
num_game(1,4)
출력>
기회가 1번 남았습니다. 1-4 사이의 숫자를 맞혀 보세요: 3
기능 추가 2
만약 처음 정수와 마지막 정수 사이의 값이 아닌 정수를 넣으면 다시 입력하라고 출력을 하겠습니다.
그리고 사용자가 입력 시에 정수가 아닌 소수나 문자열을 넣게 되면 오류가 날 것 같습니다.
try catch 문을 사용하여 정수만 받겠습니다.
파이썬 예외 처리
Try catch문 사용
Try부분: 할 일을 적기
except 부분: try부분에서 예외가 발생할 상황에 실행할 일
else 부분: except 발생이 아닐 때 실행할 일
finally: 예외가 발생하든 안하든 꼭 실행하고 넘어감
파이썬 예외(에러) 종류 9가지
1. SyntaxError : 잘못된 문법 사용
2. NameError : 참조변수 없음(변수 선언x)
3. ZeroDivisionError : 0으로 나눌 수 없음
4. IndexError : 인덱스 범위 넘어감
5. ValueError : 해당 참조 값이 없음, 값의 형식이 잘못됨
6. KeyError : 키 없음(딕셔너리에서 없는 key 값 호출)
7. AttributeError : 모듈, 클래스의 잘못된 속성 사용(엉뚱한 함수 사용)
8. FileNotFoundError : 파일 못찾음(해당 경로 파일 없음)
9. TypeError : 타입 안맞음(연산하는데 데이터의 타입이 잘못됨)
https://hleecaster.com/python-exception/
파이썬 예외처리 쉽게 이해하기 - 아무튼 워라밸
파이썬에서 발생할 수 있는 예외, 에러의 종류들을 정리하고, 그것들을 어떻게 처리할지 전략을 아주 쉽게 남겨보았다.
hleecaster.com
https://blockdmask.tistory.com/550
[python] 파이썬 에러 종류 10가지
안녕하세요. BlockDMask입니다. 오늘은 파이썬에서 자주 보는 에러 종류에 대해서 이야기해보려 합니다. 우리가 코드를 작성하다 보면 빈번히 발생하는 것이기 때문에 놀라지 마시고, 콘솔에 나오
blockdmask.tistory.com
저는 그렇다면 ValueError 를 사용해야겠네요.
import random
def num_game(first_num, last_num):
ans = random.randint(first_num, last_num)
chance = (last_num - first_num + 1) // 5
if chance == 0:
chance = 1
i = chance
while i > 0:
try:
user = int(input(f"기회가 {i}번 남았습니다. {first_num}-{last_num} 사이의 숫자를 맞혀 보세요: "))
except ValueError:
print("정수가 아닙니다. 다시 시도하세요")
else:
if(user == ans):
print(f"축하합니다. {chance - i + 1}번 만에 숫자를 맞히셨습니다.")
break
elif (user > ans):
if (i == 1):
print(f"아쉽습니다. 정답은 {ans}였습니다.")
break
print("Down")
else :
if (i == 1):
print(f"아쉽습니다. 정답은 {ans}였습니다.")
break
print("Up")
i -= 1
예시>
num_game(1,10)
출력>
기회가 2번 남았습니다. 1-10 사이의 숫자를 맞혀 보세요: da
정수가 아닙니다. 다시 시도하세요
기회가 2번 남았습니다. 1-10 사이의 숫자를 맞혀 보세요: 4.4
정수가 아닙니다. 다시 시도하세요
기회가 2번 남았습니다. 1-10 사이의 숫자를 맞혀 보세요: 11
1-10 사이의 숫자를 입력하세요
기회가 2번 남았습니다. 1-10 사이의 숫자를 맞혀 보세요: -9
1-10 사이의 숫자를 입력하세요
기회가 2번 남았습니다. 1-10 사이의 숫자를 맞혀 보세요: 4
축하합니다. 1번 만에 숫자를 맞히셨습니다.
'Python' 카테고리의 다른 글
Python에서 엑셀, csv 다루기 (1) | 2024.01.13 |
---|---|
웹 스크래핑 (1) | 2024.01.13 |
알고리즘 패러다임 (0) | 2023.11.18 |
[Python] 재귀함수를 이용한 리스트 최대, 최소 값 찾기 (0) | 2023.09.16 |
[Python] 1부터 n까지 원하는 값의 개수 찾기 (0) | 2023.05.25 |