Я хочу, чтобы эта игра с угадыванием чисел могла обнаруживать все возможные исключения или ошибки, которые вводит пользователь. Я успешно предотвратил использование строк при угадывании числа, но я хочу, чтобы консоль отображала пользовательское сообщение при вводе числа с плавающей запятой, говорящее что-то вроде строк Разрешены только целые числа от 1 до 20. Я понимаю, что мое исключение будет работать, чтобы поймать такую ошибку, но в учебных целях я хочу специально обрабатывать, если пользователь вводит число с плавающей запятой вместо целого числа. Судя по тому, что я смог найти в Интернете, функция isinstance() оказалась именно тем, что я искал. Я попытался применить его таким образом, который казался логичным, но когда я пытаюсь запустить код и ввести число с плавающей запятой при угадывании случайного числа, он просто возвращается к моему обобщенному исключению. Я новичок в Python, поэтому, если кто-то достаточно хорош, чтобы помочь, я также был бы признателен за любую критику моего кода. Я пытался сделать это без особой помощи из Интернета. Хотя по большей части это работает, я не могу избавиться от ощущения своей неэффективности. Я самоучка, если это поможет моему делу, лол. Вот мой исходный код, спасибо:
import random
import sys
def getRandNum():
num = random.randint(1,20)
return num
def getGuess(stored_num, name, gameOn = True):
while True:
try:
user_answer = int(input("Hello " + name + " I'm thinking of a number between 1-20. Can you guess what number I'm thinking of"))
while gameOn:
if user_answer >= 21 or user_answer <=0:
print("That is not a number between 1-20. Try again.")
user_answer = int(input())
elif isinstance(user_answer, int) != True:
print("Only enter whole numbers. No decimals u cheater!")
user_answer = int(input())
elif user_answer > stored_num:
print("That guess is too high. Try again " + name + " !")
user_answer = int(input())
elif user_answer < stored_num:
print("That guess is too low. Try again " + name + " !")
user_answer = int(input())
elif user_answer == stored_num:
print("You are correct! You win " + name + " !")
break
except ValueError:
print("That was not a number, try again")
def startGame():
print("Whats Your name partner?")
name = input()
stored_num = getRandNum()
getGuess(stored_num, name)
def startProgram():
startGame()
startProgram()
while True:
answer = input("Would you like to play again? Type Y to continue.")
if answer.lower() == "y":
startProgram()
else:
break
quit()
user_answer = int(...)
вызовет ошибку, если вы введете число с плавающей запятой. - person Thierry Lathuille   schedule 24.09.2020