Как сохранить результат простого python калькулятора в переменной - PullRequest
0 голосов
/ 30 мая 2020

Я новичок в Python и только недавно начал учиться.

Узнав о операторах if, elif и else, я решил попробовать сделать простой калькулятор.

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

Я пытаюсь сохранить результат сложения, вычитания, деления или умножения первые два числа в переменной. После этого я хочу воссоздать калькулятор, только у меня уже есть первое число.

У меня также возникают проблемы с моим оператором continue1 if по какой-то причине, даже если пользователь вводит «нет» скрипту продолжает вместо отображения сообщения.

Я был бы очень признателен за любую помощь, спасибо!

Python код:

num1 = float(input("Please enter your first number: "))
num2 = float(input("Please enter your second number: "))
operator = input("Please enter operator: ")

if operator == "/":
    print(num1 / num2)
elif operator == "+":
    print(num1 + num2)
elif operator == "-":
    print(num1 - num2)
elif operator == "*":
    print(num1 * num2)
else:
    print("FATAL ERROR")

num3 = num1 / num2
num3 = num1 - num2
num3 = num1 + num2
num3 = num1 * num2


continue1 =  input ("Would you like too continue? [Yes/No]")


if continue1 == "yes" or "Yes":
    operator1 = num4 = float(input("Please enter second number: "))
else:
    print("Fatal error")

input("please enter operator")

if operator == "/":
    print(num3 / num4)
elif operator == "+":
    print(num3 + num4)
elif operator == "-":
    print(num3 - num4)
elif operator == "*":
    print(num3 * num4)
else:
    print("Please press enter to close.")



input("Press Enter to Exit")

Ответы [ 5 ]

0 голосов
/ 30 мая 2020

Что бы вы ни делали, этот код сохранит в результате значение num3 = num1 * num2. Вы должны поместить эти строки в каждый if, elif

0 голосов
/ 30 мая 2020

В первой части просто присвойте переменной (а затем распечатайте ее, если хотите):

if operator == "/":
    num3 = num1 / num2
elif operator == "+":
    num3 = num1 + num2
elif operator == "-":
    num3 = num1 - num2
elif operator == "*":
    num3 = num1 * num2
else:
    print("FATAL ERROR")

print(num3)

Что касается второй части вашего вопроса, в вашем заявлении:

if continue1 == "yes" or "Yes":

это неправильно, потому что or - это оператор, который объединяет две вещи по обе стороны от себя (обычно используется, когда каждая из этих двух вещей является чем-то, что оценивается как True или False), поэтому вы могли Например:

if continue1 == "yes" or continue1 == "Yes":

Вы также можете добавить скобки для управления порядком выполнения, как показано ниже. В этом случае они не влияют на результат, потому что операторы == уже оцениваются до or, но они могут сделать его более понятным для чтения.

if (continue1 == "yes") or (continue1 == "Yes"):

Вы можете также сделайте это вместо этого:

if continue1 in ("yes", "Yes"):

Детали того, что не так с вашей исходной формой условного оператора, возможно, не важны на данном этапе, но я упоминаю их для полноты. Если вы введете "No", тогда все выражение будет фактически оцениваться как "Yes" (continue1 == "yes" оценивается как False, а затем False or "Yes" оценивается как "Yes"). Затем оператор if обрабатывает значение "Yes" (непустую строку) как истинное значение и, таким образом, выполняет код, зависящий от условия.

0 голосов
/ 30 мая 2020
num1 = float(input("Please enter your first number: "))
num2 = float(input("Please enter your second number: "))
keepCalculate=True
while keepCalculate:
    operator = input("Please enter operator: ")
    if operator == "/":
        print(num1 / num2)
    elif operator == "+":
        print(num1 + num2)
    elif operator == "-":
        print(num1 - num2)
    elif operator == "*":
        print(num1 * num2)
    else:
        print("FATAL ERROR")

    continue1 =  input ("Would you like too continue? [Yes/No]")
    if continue1== "yes" or "Yes":
       keepCalculate=True
    else:
        keepCalculate=False

Самый простой способ делать то, что вы хотите

0 голосов
/ 30 мая 2020
  1. просто используйте

    num3 = num1 + num2

для хранения кодов

"или" в программировании не работает как или в rel life, его используют для разделения 2 разных условий, поэтому используйте:

if continue1 == "yes" или continue1 == «Да»:

0 голосов

Я воссоздал ваш код, теперь он работает:

def op(operator,num1,num2):
    global num3
    if operator == "/":
        num3 = num1 / num2
    elif operator == "+":
        num3 = num1 + num2
    elif operator == "-":
        num3 = num1 - num2
    elif operator == "*":
        num3 = num1 * num2
    else:
        print("FATAL ERROR")

num1 = float(input("Please enter your first number: "))
num2 = float(input("Please enter your second number: "))
operator = input("Please enter operator: ")
op(operator,num1,num2)
print(num3)

continue1 =  input ("Would you like too continue? [Yes/No]").lower()

if continue1 in ["yes", "y"]:
    num4 = float(input("Please enter second number: "))
    operator = input("please enter operator")
    op(operator,num3,num4)
    print(num3)
else:
    print("Fatal error")

input("Press Enter to Exit")
...