Как мне определить функцию и ввести два положительных значения, чтобы при вводе отрицательных значений или строк она вызывала ошибку значения, но выводила «недопустимо»?

#python #python-3.x #python-2.7 #try-catch #try-except

Вопрос:

 import math  def coprimeTestFunction(val1, val2):  if val1 lt; 0 or val2 lt; 0:  raise ValueError  if type(val1) != int or type(val2) != int:  raise ValueError    result = math.gcd(val1, val2)    if result == 1:  print('The values {0} and {1} are coprime'.format(int1, int2))  elif result != 1:  print('The values {0} and {1} are not coprime, they have a GCD of {2} '.format(int1, int2, result))  else:  print('We have encountered an error')  try:  int1 = int(input('Enter first integer: '))  int2 = int(input('Enter second integer: '))   except ValueError:  print('Invalid entry')   coprimeTestFunction(int1, int2)  

Комментарии:

1. Возможно, изменение сообщения об ошибке может помочь: raise ValueError("Invalid entry")

Ответ №1:

Похоже, что ваш код немного неуместен. В вашем коде try/except должно быть указано, где вы вызвали функцию. Например.:

 try:  int1 = int(input('Enter first integer: '))  int2 = int(input('Enter second integer: '))  coprimeTestFunction(int1, int2)  except ValueError:  print('Invalid entry')    

Это должно сработать. Причина этого в том, что ваши входные данные на самом деле не проверяют, являются ли числа выше 0 или целым числом. Функция выполняет. Таким образом, если оставить вызов функции вне цикла, ошибка не будет обнаружена.