Как выдать ошибку вместо системной ошибки
Привет, так что у меня есть мой гадатель чисел в python3. Но я хочу выдать ошибку, если пользователь печатает буквы вместо цифр. Когда я набираю букву, она говорит
Traceback (most recent call last):
File "nummerlol.py", line 14, in <module>
guess = int(guess)
ValueError: invalid literal for int() with base 10:"
Есть ли способ изменить эту ошибку? Спасибо
import time
import random
from secrets import randbelow
guesscount = 0
print("Hey whats your name")
name = input()
number = randbelow(20)
print("The Number is between 1 & 20")
while guesscount < 6:
print("Guess.")
guess = input()
guess = int(guess)
guesscount = guesscount + 1
if guess < number:
print("My Number is bigger")
if guess > number:
print("My Number is lower")
if guess == number:
break
if guess == number :
guesscount = str(guesscount)
print("Nice",name ,".")
print("You needed" ,guesscount ,"Tries")
if guess != number:
number = str(number)
print("Bruh,My Number was" ,number)`
2 ответа
Вы можете использовать цикл try-Кроме. С continue
(как показано ниже) пользователь может продолжать догадываться. Вы также можете поставить собственное исключение вместо print
а также continue
если вы хотите, чтобы скрипт ломался с более информативным сообщением.
import time
import random
from secrets import randbelow
guesscount = 0
print("Hey whats your name")
name = input()
number = randbelow(20)
print("The Number is between 1 & 20")
while guesscount < 6:
print("Guess.")
guess = input()
try:
guess = int(guess)
except:
print("That is not a number")
continue
guesscount = guesscount + 1
if guess < number:
print("My Number is bigger")
if guess > number:
print("My Number is lower")
if guess == number:
break
if guess == number :
guesscount = str(guesscount)
print("Nice",name ,".")
print("You needed" ,guesscount ,"Tries")
if guess != number:
number = str(number)
print("Bruh,My Number was" ,number)
Подобный ваш вопрос уже существует, но я все равно отвечу на ваш вопрос.
Как вы уже знаете, причина, по которой вы получаете ответ трассировки, заключается в том, что вы пытаетесь преобразовать нецелое число в целое, когда вы вызываете int(guess)
, Вы можете поймать это исключение, используя блок try / исключением. Например, вы можете заменить ошибочную строку кода следующим:
while True:
try:
guess = int(guess)
break
except ValueError:
print("You must enter a valid number.")
Этот код заставит программу требовать ввода от пользователя, пока этот ввод не будет действительным. Посмотрите эту Python3 документацию по ошибкам и исключениям для получения дополнительной информации.