简单四则运算程序实现

功能要求

小学老师要每周给同学出300道四则运算练习题。
–这个程序有很多种实现方式:

C/C++
C#/VB.net/Java
Excel
Unix Shell
Emacs/Powershell/Vbscript
Perl
Python
–两个运算符,100 以内的数字,不需要写答案(实现)

–需要检查答案是否正确,并且保证答案在 0..100 之间(实现)

–尽可能地多设置一些条件
添加的条件:
给出的题目的结果为0--100之间的整数
在算式中出现除法运算时,除法运算能够整除


编程阶段

这次结对编程由我独自完成,我选择了python语言,Python拥有丰富的标准库和第三方库,提供了各种各样的功能模块,包括用于数学计算、随机数生成、文件操作等等,它的语法简洁,而且有很多现成的库可以直接调用,可以快速实现功能并进行测试和调试。
首先,我仔细阅读题目要求,理解老师的需求,并确定程序需要实现的功能和条件,设计生成题目和检查答案的算法。考虑如何使用随机数生成题目,如何检查答案是否正确,以及如何限制答案的范围等。

源代码

import tkinter as tk
import random

class Calculator:
    def __init__(self, master):
        self.master = master
        self.master.title("四则运算出题计算器")
        self.expression = ""
        self.answer = 0
        self.result_text = None  #结果 初始化为None
        self.create_widgets()

    def create_widgets(self):
        self.text = tk.StringVar()
        self.text.set("点击出题开始")
        self.label = tk.Label(self.master, textvariable=self.text)
        self.label.pack()

        self.entry = tk.Entry(self.master)
        self.entry.pack()

        self.check_button = tk.Button(self.master, text="检查答案", command=self.check_answer)
        self.check_button.pack()

        self.question_button = tk.Button(self.master, text="出题", command=self.generate_question)
        self.question_button.pack()

        # 新的文本框用于显示结果
        self.result_text = tk.Text(self.master, height=1, width=30)
        self.result_text.pack()

    def generate_question(self):
        num1 = random.randint(1, 50)
        num2 = random.randint(1, 10)
        num3 = random.randint(1, 3)
        operator1 = random.choice(["+", "-"])
        operator2 = random.choice(["*", "/"])
        self.expression = f"{num1} {operator1} {num2} {operator2} {num3}"
        self.answer = round(eval(self.expression), 2)
        self.text.set(self.expression)

    def check_answer(self):
        try:
            user_answer = float(self.entry.get())
            if abs(user_answer - self.answer) < 0.01:
                self.result_text.delete(1.0, tk.END)
                self.result_text.insert(tk.END, "恭喜你,答案正确!")
            else:
                self.result_text.delete(1.0, tk.END)
                self.result_text.insert(tk.END, f"答案错误,正确答案是:{self.answer}")
        except ValueError:
            self.result_text.delete(1.0, tk.END)
            self.result_text.insert(tk.END, "请输入有效的数字")

root = tk.Tk()
app = Calculator(root)
root.mainloop()

我在程序中创建了GUI界面的几个组件,包括标签、文本框、按钮以及用于显示结果的文本框。在主程序中,首先创建了一个Tkinter窗口,然后创建了一个Calculator对象,并通过调用root.mainloop()方法启动了事件循环,使程序保持运行状态,等待用户的交互。
运行程序,就可以看到界面了:

程序的核心是check_answer这个方法,它用于检查用户输入的答案是否正确。首先获取用户输入的答案,然后与程序计算得到的答案进行比较,如果两者之差小于0.01,则认为答案正确,否则认为答案错误,并在结果文本框中显示相应的提示信息。



如果没有输入,将提示用户

合作对象:自己

posted @ 2024-04-15 14:35  不想再打代码了  阅读(54)  评论(0编辑  收藏  举报