#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 или целым числом. Функция выполняет. Таким образом, если оставить вызов функции вне цикла, ошибка не будет обнаружена.