Jun-19-2024, 12:43 AM
I think the way to do this is remove input validation from the test and put it in a special function that only does input. Something like this:
def input_number(prompt, tests=None): """Get integer input. Verify input passes all tests.""" while True: try: value = int(input(prompt)) if tests is None or all(test(value) for test in tests): return value except ValueError: pass a = input_number("Enter an integer : ") b = input_number("Enter a non-zero integer : ", (lambda x: x != 0,)) print(f"{a} / {b} = {a / b}") a = input_number("Enter an even integer > 8 : ", (lambda x: x % 2 == 0, lambda x: x > 8)) b = input_number("Enter an odd integer : ", (lambda x: x % 2 != 0,)) print(f"{a} * {b} = {a * b}")