在 python 中制作计算器

Making a calculator in python

所以我尝试使用这段代码在 python 中创建一个计算器,因为我刚刚开始学习。事情是,它总是说我输入了一个无效的选项,通过了我所有的 if-else 语句,即使我确实输入了一个有效的选项。我做错了什么?

    #!/usr/bin/env python

def add():
    return float(input ("Enter a number: ")) + float(input ("Enter another number: "))

def subt():
    return float(input ("Enter a number: ")) - float(input ("Enter another number: "))

def mult():
    return float(input ("Enter a number: ")) * float(input ("Enter another number: "))

def power():
    return float(input ("Enter a number: ")) ** float(input ("Enter another number: "))

def division():
    return float (input ("Enter a number: ")) / float (input ("Enter another number: "))

s = input("Add, Subtract, Multiply, Divide or Power two Numbers: ")
if s == "add":
    print(add ())
elif s == "subtract":
    print(subt ())
elif s == "multiply":
    print(mult ())
elif s == "power":
    print(power ())
elif s == "division":
    print(division ())
else:
    print ("Enter a valid option")

如果听起来您正在使用 Python2。在这种情况下,使用 raw_input 而不是 input,否则它会尝试通过用户字符串输入定位 variable/function 并将对象名称放在 s 中。其中 raw_input 将用户输入作为字符串并放置字符串 s.

这是对两者区别的简短回答。

#!/usr/bin/env python

def add():
    return float(input ("Enter a number: ")) + float(input ("Enter another number: "))

def subt():
    return float(input ("Enter a number: ")) - float(input ("Enter another number: "))

def mult():
    return float(input ("Enter a number: ")) * float(input ("Enter another number: "))

def power():
    return float(input ("Enter a number: ")) ** float(input ("Enter another number: "))

def division():
    return float (input ("Enter a number: ")) / float (input ("Enter another number: "))

s = raw_input("Add, Subtract, Multiply, Divide or Power two Numbers: ")
if s == "add":
    print(add())
elif s == "subtract":
    print(subt())
elif s == "multiply":
    print(mult())
elif s == "power":
    print(power())
elif s == "division":
    print(division())
else:
    print("Enter a valid option")

Python2 和 Python3 有很多不同之处,具体说明您使用的是哪一个会有很大帮助。当您输入 python 解释器或执行 python --version.

时,它会在您的终端顶部显示
from tkinter import*

def btnClick(numbers): 
    global operator 
    operator = operator + str(numbers) 
    text_Input.set(operator)

def btnClearDisplay(): 
    global operator 
    operator = "" text_Input.set("")

def btnEqualsInput(): 
    global operator 
    sumup = str(eval(operator)) 
    text_Input.set(sumup) 
    operator=""

cal = Tk() 
cal.title("Suhail calculator") 
operator = "" 
text_Input = StringVar() 
txtDisplay = Entry(cal, font=('arial', 20, 'bold'), textvariable=text_Input, bd=30, insertwidth=4, bg="powder blue", justify='right').grid(columnspan=4)

btn7 = Button(cal, padx=16, bd=8, fg="black", font=('arial', 20, 'bold'), text="7", bg="powder blue", command=lambda:btnClick(7)).grid(row=1, column=0)

btn8 = Button(cal, padx=16, bd=8, fg="black", font=('arial', 20, 'bold'), text="8", bg="powder blue", command=lambda:btnClick(8)).grid(row=1, column=1)

btn9 = Button(cal, padx=16, bd=8, fg="black", font=('arial', 20, 'bold'), text="9", bg="powder blue", command=lambda:btnClick(9)).grid(row=1, column=2)

addition = Button(cal, padx=16, bd=8, fg="black", font=('arial',20,'bold'), text="+", bg="powder blue", command=lambda:btnClick("+")).grid(row=1, column=3) #================================================================================ 
btn4 = Button(cal, padx=16, bd=8, fg="black", font=('arial', 20, 'bold'), text="4", bg="powder blue", command=lambda:btnClick(4)).grid(row=2, column=0)

btn5 = Button(cal, padx=16, bd=8, fg="black",font=('arial', 20, 'bold'), text="5", bg="powder blue", command=lambda:btnClick(5)).grid(row=2, column=1)

btn6 = Button(cal, padx=16, bd=8, fg="black", font=('arial', 20, 'bold'), text="6", bg="powder blue", command=lambda:btnClick(6)).grid(row=2, column=2)

subtraction = Button(cal, padx=16, bd=8, fg="black", font=('arial', 20, 'bold'), text="-", bg="powder blue", command=lambda:btnClick("-")).grid(row=2, column=3) #================================================================================= 
btn1 = Button(cal, padx=16, bd=8, fg="black", font=('arial', 20, 'bold'), text="1", bg="powder blue", command=lambda:btnClick(1)).grid(row=3, column=0)

btn2 = Button(cal, padx=16, bd=8, fg="black", font=('arial', 20, 'bold'), text="2", bg="powder blue", command=lambda:btnClick(2)).grid(row=3, column=1)

btn3 = Button(cal, padx=16, bd=8, fg="black", font=('arial', 20, 'bold'), text="3", bg="powder blue", command=lambda:btnClick(3)).grid(row=3, column=2)

multiply = Button(cal, padx=16, bd=8, fg="black", font=('arial', 20, 'bold'), text="", bg="powder blue", command=lambda:btnClick("")).grid(row=3, column=3)

#=================================================================================== 
btn0 = Button(cal, padx=16, pady=16, bd=8, fg="black", font=('arial', 20, 'bold'), text="0", bg="powder blue", command=lambda:btnClick(0)).grid(row=4, column=0)

btnClear = Button(cal, padx=16, pady=16, bd=8, fg="black", font=('arial', 20, 'bold'), text="C", bg="powder blue", command=btnClearDisplay).grid(row=4, column=1)

btnEqual = Button(cal, padx=16, pady=16, bd=8, fg="black", font=('arial', 20, 'bold'), text="=", bg="powder blue", command=btnEqualsInput).grid(row=4, column=2)

Division = Button(cal, padx=16, pady=16, bd=8, fg="black", font=('arial', 20, 'bold'), text="/", bg="powder blue", command=lambda:btnClick("/")).grid(row=4, column=3) #==================================================================================

cal.mainloop()