Я сделал действительно базовый c скрипт, используя Python (я новичок в этом), и я не знаю, почему он не работает так, как должен работать - PullRequest
0 голосов
/ 20 июня 2020

Проблема в строке 19, где выполняется условие if.

Итак, когда вы запускаете код, он должен попросить вас ввести первое число, а затем математическую операцию (+, плюс или - , минус) и, наконец, для второго числа.

Он отлично работает, когда вы добавляете (плюс), но когда вы пытаетесь вычесть, он показывает вам сообщение «Недопустимая операция», я уже пробовал используя другие логические операторы, но это просто не работает D:

Пожалуйста, объясните мне, в чем проблема, потому что я этого не вижу.

minus = ["-","minus"]
plus = ["+", "plus"]

print("""
    ===========================
            CALCULATOR
    ===========================

    1      2      3      +
    4      5      6      -
    7      8      9

    0      Total:
    ===========================
    ===========================
    """)
n1 = int(input("First Number: "))
operation = input("+ or - ")
if operation not in (minus,plus):
    print("Invalid Operation")
else:

    n2 = int(input("Second Number: "))

    if operation in minus:
        total_minus = n1-n2
        print(f"""
    ===========================
            CALCULATOR
    ===========================

    1      2      3      +
    4      5      6      -
    7      8      9

    0      Total: {total_minus}
    ===========================
    ===========================
        """)
    elif operation in plus:
        total_plus = n1 + n2
        print(f"""
    ===========================
            CALCULATOR
    ===========================

    1      2      3      +
    4      5      6      -
    7      8      9

    0      Total: {total_plus}
    ===========================
    ===========================
        """)



Ответы [ 5 ]

1 голос
/ 20 июня 2020

Выражение operation not in (minus,plus) проверяет, является ли operation одним из списков minus или plus в кортеже (minus, plus). Поскольку это строка, она никогда не будет ни одним из этих значений.

Я бы рекомендовал создать объединенный список допустимых операций.

valid_operations = minus + plus # concatenate valid operations

, затем проверьте, есть ли операция, пользовательский ввод находится в этом списке.

if operation not in valid_operations:
    print("Invalid Operation")
else:
    ...

Таким образом можно легко расширить ваш калькулятор для умножения, деления и т. д. c.

0 голосов
/ 20 июня 2020

Просто замените блок кода if

if operation in plus or operation in minus:
    your code
else:
    print("Invalid Operation")

Вы написали:

if operation not in (minus,plus):
    your code

Это всегда будет True, поскольку operation никогда не будет в обоих списках (плюс и минус), так что этот оператор имеет значение False, и поскольку вы написали 'not in', not of False is True, это причина того, что вы всегда получаете сообщение «Invalid Operation» в вашем блоке if.

0 голосов
/ 20 июня 2020

operation not in (minus,plus) всегда будет истинным. operation - строка, а (minus,plus) - кортеж, содержащий два списка.

Если вы хотите проверить, находится ли строка operation в списке minus или в списке plus, вы вместо этого можно использовать:

if operation not in (minus + plus):
0 голосов
/ 20 июня 2020

Для меня ваш код не работает ни с +, ни с -! Я не знаю, почему это работает для вас с +, поскольку я думаю, что не должно!

Вы правы, что проблема в вашем выражении if. Когда вы пишете:

if operation not in (minus,plus):

Вы говорите «если операция не равна [« - »,« минус »] или [« + »,« плюс »]»

в других слова, которые вы сравниваете со списком из 2 строк!

Вместо этого вы можете написать:

if operation not in minus and operation not in plus:

, и ваша программа будет работать нормально

0 голосов
/ 20 июня 2020

Вы объединяете списки, формируя кортеж:

if operation not in (minus, plus):

На самом деле вы хотите сложить списки вместе:

if operation not in minus + plus:
...