第一次作业
一.计算器代码
import tkinter as tk import math # 创建主窗口 root = tk.Tk() root.title("计算器") # 创建显示结果的文本框 result_var = tk.StringVar() result_entry = tk.Entry(root, textvariable=result_var, font=("Helvetica", 20), bd=10, insertwidth=4, width=14, borderwidth=4) result_entry.grid(row=0, column=0, columnspan=4) # 定义计算器功能 def button_click(number): current = result_var.get() result_var.set(current + str(number)) def clear(): result_var.set("") def calculate(): try: expression = result_var.get() result = eval(expression) result_var.set(result) except Exception as e: result_var.set("错误") def newton_sqrt(): try: number = float(result_var.get()) if number >= 0: guess = number while abs(guess * guess - number) > 1e-9: guess = (guess + number / guess) / 2 result_var.set(guess) else: result_var.set("无效输入") except ValueError: result_var.set("错误") # 创建按钮 button7 = tk.Button(root, text="7", padx=20, pady=20, command=lambda: button_click(7)) button8 = tk.Button(root, text="8", padx=20, pady=20, command=lambda: button_click(8)) button9 = tk.Button(root, text="9", padx=20, pady=20, command=lambda: button_click(9)) button4 = tk.Button(root, text="4", padx=20, pady=20, command=lambda: button_click(4)) button5 = tk.Button(root, text="5", padx=20, pady=20, command=lambda: button_click(5)) button6 = tk.Button(root, text="6", padx=20, pady=20, command=lambda: button_click(6)) button1 = tk.Button(root, text="1", padx=20, pady=20, command=lambda: button_click(1)) button2 = tk.Button(root, text="2", padx=20, pady=20, command=lambda: button_click(2)) button3 = tk.Button(root, text="3", padx=20, pady=20, command=lambda: button_click(3)) button0 = tk.Button(root, text="0", padx=20, pady=20, command=lambda: button_click(0)) button_add = tk.Button(root, text="+", padx=20, pady=20, command=lambda: button_click("+")) button_subtract = tk.Button(root, text="-", padx=20, pady=20, command=lambda: button_click("-")) button_multiply = tk.Button(root, text="*", padx=20, pady=20, command=lambda: button_click("*")) button_divide = tk.Button(root, text="/", padx=20, pady=20, command=lambda: button_click("/")) button_equal = tk.Button(root, text="=", padx=20, pady=20, command=calculate) button_clear = tk.Button(root, text="c", padx=20, pady=20, command=clear) button_sqrt = tk.Button(root, text="√", padx=20, pady=20, command=newton_sqrt) # 放置按钮在界面上 button7.grid(row=1, column=0) button8.grid(row=1, column=1) button9.grid(row=1, column=2) button4.grid(row=2, column=0) button5.grid(row=2, column=1) button6.grid(row=2, column=2) button1.grid(row=3, column=0) button2.grid(row=3, column=1) button3.grid(row=3, column=2) button0.grid(row=4, column=0) button_add.grid(row=1, column=3) button_subtract.grid(row=2, column=3) button_multiply.grid(row=3, column=3) button_divide.grid(row=4, column=3) button_equal.grid(row=4, column=2) button_clear.grid(row=4, column=1) button_sqrt.grid(row=5, column=0) root.mainloop()
二.牛顿迭代关键代码
def newton_sqrt():
try:
number = float(result_var.get())
if number >= 0:
guess = number
while abs(guess * guess - number) > 1e-9:
guess = (guess + number / guess) / 2
result_var.set(guess)
else:
result_var.set("无效输入")
except ValueError:
result_var.set("错误")
牛顿迭代法开方测试截图:

三.加法功能测试
加法功能流程图:

加法功能测试截图

四.减法功能测试
减法功能流程图:

减法测试截图:

五.乘法功能测试
乘法功能流程图:

乘法测试截图:

六.除法功能测试
功能流程图:

除法测试截图:

6.计算器代码

浙公网安备 33010602011771号