помогите с калькулятором на питоне

Tom Nethan

Новичок
Пользователь
Апр 21, 2020
12
0
1
в программе есть одна проблема, честно, сам пытался пофиксить, но не получается. дело вот в чем: когда программа спрашивает в конце - хотите рестарт, если нажать 3 раза некорректное значение (ни Y ни N) то она завершается, это все хорошо, такое условие в задании есть. но если ввести 2 раза неверное, а на 3 раз написать Y (да рестарт) то она крашается. как исправить?


Код:
def is_digit(string):
    if string.isdigit():
        return True
    else:
        try:
            float(string)
            return True
        except ValueError:
            return False


flag = True
while flag:
    flag_internal = True
    while flag_internal:
        num1 = input("Input first number: ")
        if is_digit(num1) == False:
            print("Incorrect input")
            continue
        break

    while flag_internal:
        num2 = input("Input second number: ")
        if is_digit(num2) == False:
            print("Incorrect input")
            continue
        break

    while flag_internal:
        op = input("Input operation: ")
        if not (op == '+' or op == '-' or op == '*' or op == '/'):
            print("Incorrect input")
            continue
        break

    if op == '+':
        print("Result: ", float(num1) + float(num2))

    if op == '-':
        print("Result: ", float(num1) - float(num2))

    if op == '*':
        print("Result: ", float(num1) * float(num2))

    if op == '/':
        print("Result: ", float(num1) / float(num2))

    input_errors = 0
    res = ''
    while flag_internal:
        res = input("Would you like to continue computing? (Y/N)")
        if input_errors >= 2:
            res = 'n'
            break
        if not (res.lower() == 'y' or res.lower() == 'n'):
            print("Incorrect input")
            input_errors += 1
            continue
        break

    if res.lower() == 'y':
        continue
    if res.lower() == 'n':
        break
 

Вложения

  • Снимок экрана 2020-04-21 в 13.27.16.png
    Снимок экрана 2020-04-21 в 13.27.16.png
    53,1 КБ · Просмотры: 2
Последнее редактирование:

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
Чтобы исправить нужно заменить эту часть кода:
Python:
while flag_internal:
    res = input("Would you like to continue computing? (Y/N)")
    if input_errors >= 2:
        res = 'n'
        break
    if not (res.lower() == 'y' or res.lower() == 'n'):
        print("Incorrect input")
        input_errors += 1
        continue
    break
на такой код:
Python:
while flag_internal:
    res = input("Would you like to continue computing? (Y/N)")

    if res.lower() == 'y' or res.lower() == 'n':
        break

    print("Incorrect input")
    input_errors += 1

    if input_errors > 2:
        res = 'n'
        break
 
  • Мне нравится
Реакции: Rud356

Форум IT Специалистов