第一次作业

一.计算器代码

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.计算器代码

posted @ 2023-10-15 08:41  AuroraFish  阅读(52)  评论(0)    收藏  举报