Оптимальное решение для повышения исключений для двух разных типов данных входов - PullRequest
0 голосов
/ 10 ноября 2019

Код требует получения двух входных данных от пользователя (один за другим). Первый вход - это число с плавающей запятой, а второй - целое число. Я заметил, что (в моем коде, приведенном ниже) не возникает никаких исключений для первого ввода при вводе целого числа. Тем не менее, для второго ввода исключения исключаются. Просьба предоставить решение для того же, и я был бы признателен, если бы вы могли указать причину ошибки. Код должен преобразовать десятичную с плавающей запятой в двоичную. Вы можете найти весь код здесь: https://github.com/pbipin/floatingpointdecimaltobinary https://pythoninsights.blogspot.com/2019/11/python-program-to-convert-floating.html

Я попытался поместить отдельные исключения для обоих входов. Однако, это не похоже на работу.

try:
    num = float(input('Enter a floating point decimal number: '))

except(ValueError):
    print('Please enter a valid floating point decimal')

try:
    places = int(input('Enter the number of decimal places in the result: '))

except(ValueError):
    print('Please enter a valid integer number for places')
Enter a floating point decimal number: 55
Enter the number of decimal places in the result: 4.5
Please enter a valid integer number for places

1 Ответ

0 голосов
/ 10 ноября 2019

Вы должны вызвать исключение, попробуйте это:

num = None
while num is None:
  try:
    num = float(input('Enter a floating point decimal number: '))
    if float(num).is_integer():
       raise ValueError('Non integers please')
  except(ValueError):
        print('Please enter a valid floating point decimal')
        num = None

places = None
while places is None: 
  try:
    places = int(input('Enter the number of decimal places in the result: '))
  except(ValueError):
    print('Please enter a valid integer number for places')
    places = None
...