Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import unittest
- import sys
- import io
- class SimpleNumericTestCase(unittest.TestCase):
- def test_simple_numbers(self):
- self.assertAlmostEqual(calculate_distance(1), 10.000000)
- self.assertAlmostEqual(calculate_distance(2), 11.000000)
- def test_invalid_value(self):
- self.assertRaises(TypeError, calculate_distance, "haha")
- class GetNumberTestCase(unittest.TestCase):
- def setUp(self) -> None:
- self.original_in = sys.stdin
- self.original_out = sys.stdout
- sys.stdout = io.StringIO()
- def tearDown(self) -> None:
- sys.stdin = self.original_in
- sys.stdout = self.original_out
- def test_simple(self):
- sys.stdin = io.StringIO('120\n')
- main()
- self.assertEqual('842809.716526\n', sys.stdout.getvalue())
- def test_invalid(self):
- sys.stdin = io.StringIO('haha\n')
- main()
- self.assertEqual('Это не число\n', sys.stdout.getvalue())
- def test_wrong_number_minimal(self) -> None:
- sys.stdin = io.StringIO('-1\n')
- main()
- self.assertEqual('Число должно быть в диапазоне [1; 120]', sys.stdout.getvalue())
- def test_wrong_number_maximal(self) -> None:
- sys.stdin = io.StringIO('150\n')
- main()
- self.assertEqual('Число должно быть в диапазоне [1; 120]', sys.stdout.getvalue())
- class InvalidNumber(RuntimeError):
- pass
- def get_number():
- return int(input())
- def calculate_distance(number: int) -> float:
- if number < 1 or number > 120:
- raise InvalidNumber
- distance = 10
- for _ in range(number - 1):
- distance += distance * 0.1
- return distance
- def main() -> None:
- try:
- n = get_number()
- dist = calculate_distance(n)
- print(f'{dist:.6f}')
- except ValueError:
- print('Это не число')
- except InvalidNumber:
- print('Число должно быть в диапазоне [1; 120]')
- if __name__ == '__main__':
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement