我必须使用Tkinter在Python中使用条件语句创建一个计算器函数,我已经有了设计。
我尝试保存数字中的第一个数字以备后用,然后将运算符保存在另一个变量中,但是我不知道如何保存第二个数字。
以下是该函数的代码:
def btnClick(value):
global val
if value != "+" and value != "*" and value != "/" and value != "-" and value!=
"=" and value != "CE":
val = val + str(value)
box.set(val)
else:
op=val #op saves the operator in a variable
val = val + str(value)
n1= val[:-1]#saves the number minus the operator
val = ""
box.set(" ")
val = val + str(value)
n2= val
发生的是第二个值未保存在n2中,而是保存在n1中。
答案 0 :(得分:0)
一种更简单的方法是使用eval()
。
取用户说的整个输入字符串1+2
。从您正在使用的任何小部件中获取此value
。然后在函数btnClick
中执行:
def btnClick(value)
answer = eval(value)
然后将答案设置为您正在使用的任何小部件。
eval()
返回结果并接受字符串输入。
答案 1 :(得分:0)
有很多可以改进的地方,但这应该会让您感动。它仅接受两个值,然后打印出字符串表示形式。不过,它并没有做真正的数学部分。
您还可以将输入的值存储在列表中,然后在有人按下“ =”或“ CE”时进行列表理解。
def btnClick(value):
global val1 = None
global val2 = None
if value not in [ "+", "*", "/", "-",
"=", "CE"] :
if val1 is None:
val1 = value
else:
val2 = value
valor = valor + str(value)
box.set(valor)
else:
result = None
if value == "+":
result = val1 + val2
elif value == "*":
result = val1 * val2
elif value == "/":
result = val1 / val2
elif value == "-":
result = val1 - val2
else:
box.set("enter a valid operator")
if result is not None:
box.set(f"{value1} {value} {value2} = {result}")