Advertisement
Roman9234

Проверка на число

Sep 11th, 2022
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.58 KB | Help | 0 0
  1. #рекурсивная добыча числа
  2. def input_number(input_string: str = 'Введите число: ',
  3.                  min_num: int = None,
  4.                  max_num: int = None,
  5.                  is_float: bool = False) -> int:
  6.     '''
  7.    Функция проверки на число
  8.    input_string - строка с требованием ввода. По умолчанию "Введите число: "
  9.    min_num - минимальный диапазон
  10.    max_num - максимальный диапазон
  11.    is_float - флаг, нужно ли значение float
  12.    '''
  13.     if  not isinstance(is_float, bool):
  14.         raise ValueError('Значение is_float должно быть булевым')
  15.    
  16.     elif min_num:  # если min_num задан
  17.         try:
  18.             min_num = float(min_num) if is_float else int(min_num)
  19.         except:
  20.             raise ValueError('Значение min_num должно быть числом')#вызываем ошибку с этим текстом
  21.     elif max_num:
  22.         try:
  23.             max_num = float(max_num) if is_float else int(max_num)
  24.         except:
  25.             raise ValueError('Значение max_num должно быть числом')
  26.     params=input_string,min_num,max_num,is_float
  27.        
  28.     try:
  29.         num = input(input_string)
  30.         num = float(num) if is_float else int(num)
  31.         if min_num and num<min_num:
  32.             print(f'Число должно быть больше {min_num}')
  33.             return input_number(params)
  34.         elif max_num and num > max_num:
  35.             print(f'Число должно быть меньше {max_num}')
  36.             return input_number(params)
  37.     except ValueError:
  38.         print('Вы ввели не число')
  39.         return input_number(params)
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46. #поднимает ошибки при неправильном вводе числа
  47. def check_number(input_string: str = 'Введите число: ',
  48.                  min_num: int = None,
  49.                  max_num: int = None,
  50.                  is_float: bool = False) -> int:
  51.     '''
  52.    Функция проверки на число
  53.    input_string - строка с требованием ввода. По умолчанию "Введите число: "
  54.    min_num - минимальный диапазон
  55.    max_num - максимальный диапазон
  56.    is_float - флаг, нужно ли значение float
  57.    '''
  58.     if  not isinstance(is_float, bool):
  59.         raise ValueError('Значение is_float должно быть булевым')
  60.    
  61.     elif min_num:  # если min_num задан
  62.         try:
  63.             min_num = float(min_num) if is_float else int(min_num)
  64.         except:
  65.             raise ValueError('Значение min_num должно быть числом')#вызываем ошибку с этим текстом
  66.     elif max_num:
  67.         try:
  68.             max_num = float(max_num) if is_float else int(max_num)
  69.         except:
  70.             raise ValueError('Значение max_num должно быть числом')
  71.     params=input_string,min_num,max_num,is_float
  72.        
  73.     try:
  74.         num = input(input_string)
  75.         num = float(num) if is_float else int(num)
  76.         if min_num and num<min_num:
  77.             raise ValueError(f'Число должно быть больше {min_num}')
  78.         elif max_num and num > max_num:
  79.             raise ValueError(f'Число должно быть меньше {max_num}')
  80.     except ValueError:
  81.         raise ValueError('Вы ввели не число')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement