Как сделать Symbol Chracter поплавком - PullRequest
0 голосов
/ 09 мая 2019

Мне трудно понять, как заставить мою программу «ломаться», когда символ @ вводится пользователем.

Мне пришлось создать простой калькулятор, в котором пользователь вводит число, оператор и второе число.

У меня уже есть этот бег.

Я просто не могу понять, как мне заставить мою программу остановиться, как только пользователь вводит символ '@', когда их просят ввести информацию.


num1 = float(input("Enter First Number: "))
operator = input("Enter Operator: ")
num2 = float(input("Enter Second Number: "))


while True:
    if num1 == float(["@"]):
        break
    if operator == "+":
        print("Result:" ,num1 ,operator, num2, "=" , num1+num2 )

    elif operator == "-":
        print("Result: " ,num1 ,operator, num2, "=" ,num1-num2)

    elif operator == "/":
        if num2 == 0 :
            print("Second Number Cannot Be A ZERO")
        else: print("Result: " ,num1 ,operator, num2, "=" ,num1/num2)

    elif operator =="**":
        print("Result: ", num1, operator, num2, "=", num1 ** num2)

    elif operator == "%":
        if num2 == 0 :
            print("Second Number Cannot Be A ZERO")
        print("Result: " ,num1 ,operator, num2, "=" ,num1%num2)

    elif operator == "*":
        print("Result: " ,num1 ,operator, num2, "=" ,num1*num2)

    else:
        print("Invaid Operator")
print("Thank you for playing this Simple Calculator designed by Joss")

Ответы [ 2 ]

0 голосов
/ 09 мая 2019

Один способ, которым я изменил ваш код, состоит в том, что он проверяет, как только введено первое число, чтобы увидеть, является ли это число или нет. Если это так, нет проблем. Если это не так, он преобразует его в строку для последующей проверки.

    num1 = input("Enter First Number: ")
if num1 != "@":
    num1 = float(num1)
else:
    num1 = str(num1)

вот так. затем вы просто проверяете символ "@":

while True:
  if num1 == "@":
    break

И последнее: вы должны переместить весь ваш код в цикл while, чтобы после выполнения вычислений он снова спрашивал (если это так), потому что сейчас он зацикливает только печать ответа.

0 голосов
/ 09 мая 2019

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

kill = True  
while kill:  
    if operator = '\@' 
        kill = False
    elif operator = '+':  
        add....

Если вы ищете не только символ @ и другие, вы можете создать массив всех операторов функций, таких как operand = ['+','\-','/','**'] и т. Д., И первый if скажет что-то вроде

kill = True  
while kill:  
    if operator not in operand: 
        kill = False
    elif operator = '+':  
        add....  
...