回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<div>
</div>
<p>当我在运行程序时立即使用平方根函数时,它工作得很好。问题是,例如,如果我加8+8,那么在输出(16)上使用平方根函数。然后我得到了错误</p>
<pre><code> Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\bigfe\Anaconda3\lib\tkinter\__init__.py", line 1705, in __call__
return self.func(*args)
File "C:/Users/bigfe/.spyder-py3/APython/net/Calc.py", line 124, in squareroot
textbox.insert(0, math.sqrt(f_num))
AttributeError: 'str' object has no attribute 'sqrt'
</code></pre>
<p>我尝试了一切,甚至确认加法函数的输出是一个浮点,但它仍然给我错误</p>
<p>这是我的密码</p>
<pre><code>
textbox = Entry(calc, font = ('arial',20, 'bold'), bd = 30, width = 27, bg = 'gray', justify=RIGHT)
textbox.grid(row = 0, column = 0, columnspan = 4, pady=1 )
#This is what is shown in the entry box
textbox.insert(0, 0)
def numEnter(num):
if(textbox.get() == '0'):
textbox.delete(0, END)
current = textbox.get()
textbox.delete(0, END)
ak = textbox.insert(0, str(current) + str(num))
def clear():
textbox.delete(0, END)
textbox.insert(0, 0)
def allClear():
textbox.delete(0, END)
textbox.insert(0, 0)
current = 0
def add():
firstnum = textbox.get()
global f_num
global math
f_num = float(firstnum)
math = 'addition'
textbox.delete(0, END)
def subtract():
firstnum = textbox.get()
global f_num
global math
f_num = float(firstnum)
math = 'subtraction'
textbox.delete(0, END)
def multiply():
firstnum = textbox.get()
global f_num
global math
f_num = float(firstnum)
math = 'multiplication'
textbox.delete(0, END)
def divide():
firstnum = textbox.get()
global f_num
global math
f_num = float(firstnum)
math = 'division'
textbox.delete(0, END)
def squareroot():
firstnum = textbox.get()
global f_num
global math
f_num = float(firstnum)
textbox.delete(0, END)
textbox.insert(0, math.sqrt(f_num))
def pi():
if(textbox.get() == 0):
textbox.delete(0, END)
textbox.insert(0, float(math.pi))
global frst
frst = textbox.get()
def equal():
if (math == 'addition'):
second_num = textbox.get()
textbox.delete(0, END)
global ans
ans = (f_num + float(second_num))
print(type(ans))
textbox.insert(0, ans)
elif (math == 'subtraction'):
second_num = textbox.get()
textbox.delete(0, END)
textbox.insert(0, f_num - float(second_num))
elif (math == 'multiplication'):
second_num = textbox.get()
textbox.delete(0, END)
textbox.insert(0, f_num * float(second_num))
elif (math == 'division'):
second_num = textbox.get()
textbox.delete(0, END)
textbox.insert(0, f_num / float(second_num))
</code></pre>
<p>我省略了构造计算器的代码,因为我认为这是不必要的。如果你想看到任何其他部分的代码,请让我知道</p>