Guest User

Untitled

a guest
Jul 17th, 2018
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.43 KB | None | 0 0
  1. # system - ф-я для запуска комманд терминала
  2. # name - для определения ОС пользователя
  3. from os import system, name
  4.  
  5.  
  6. # Лимит для вводимых значений
  7. limit = 10 ** 6
  8. # Тот же лимит, но в более приятном виде
  9. limit_str = '10 ^ 6'
  10.  
  11.  
  12. def main():
  13. """ Главная ф-я """
  14. # Цикл нужен, чтобы не останавливать программу
  15. # в случае ошибки, а просто "перезагружать" её
  16. while True:
  17. # Выводим необходимую для пользователя информацию
  18. print('Требования:')
  19. print('\t1. числа a и b - целые значения')
  20. print('\t2. числа a и b не больше 10 ^ 6')
  21. print('\t3. число a меньше b')
  22. print()
  23.  
  24. # Начало блока "Ввод"
  25. print('Ввод:')
  26.  
  27. # Проверяем соблюдают ли вводимые значения требованиям
  28. inp_a = input('\ta = ')
  29. result = check_value(inp_a)
  30.  
  31. if result == 'error':
  32. continue
  33.  
  34. # Поскольку b > a > c, то a всегда будет медианой
  35. a = median = result
  36.  
  37. inp_b = input('\tb = ')
  38. result = check_value(inp_b)
  39.  
  40. if result == 'error':
  41. continue
  42.  
  43. b = result
  44.  
  45. if a >= b:
  46. error("'a' должна быть меньше 'b'")
  47. continue
  48.  
  49. print()
  50. break
  51.  
  52. # Начало блока "Результат"
  53. print('Результат:')
  54.  
  55. # Поскольку медиана уже извнстна, составить
  56. # уравнение и вычислить c совсем не сложно:
  57. # (a + b + c) / 3 = median =>
  58. # a + b + c = median * 3 =>
  59. c = median * 3 - (a + b)
  60.  
  61. print('\tc =', c)
  62.  
  63.  
  64. def check_value(value):
  65. """
  66. Проверяет value на соблюдение требований
  67. и возвращает его в виде числа в случае успеха,
  68. иначе строку 'error'
  69. """
  70. result = ''
  71.  
  72. if not isinteger(value):
  73. error('должно быть целочисленное значение')
  74. result = 'error'
  75. else:
  76. result = int(value)
  77. if result > limit:
  78. error('число превышает заданный лимит (%s)' % limit_str)
  79. result = 'error'
  80.  
  81. return result
  82.  
  83.  
  84. def isinteger(string):
  85. """
  86. Проверяет явл. ли string целочисленным значением
  87. P.S.: ф-я isdigit (isdecimal и isnumeric тоже)
  88. не учитывает унарные '-' и '+',
  89. поэтому пришлось создавать свою
  90. """
  91. if string[0] in ('-', '+'):
  92. string = string[1:]
  93. return string.isdigit()
  94.  
  95.  
  96. def error(message):
  97. """ Выводит ошибку """
  98. print('Ошибка:', message)
  99. input('Нажмите клавишу "Enter" для перезагрузки')
  100. clear()
  101.  
  102.  
  103. def clear():
  104. """ Очищяет терминал """
  105. # Если Windows, то cls, иначе clear (Linux, Mac OS)
  106. system('cls' if name == 'nt' else 'clear')
  107.  
  108.  
  109. # Запускать программу если файл явл. главным
  110. if __name__ == '__main__':
  111. main()
Add Comment
Please, Sign In to add comment