猫史档案馆


【Python作品分享】口算程序 【作品秀】

用户:MathinChinaMathinChina查看:0 回复:1 评论:0 创建时间:2020-08-23T23:08:38


【作品展示】

center_image

 

【作品介绍】

1.这是一个口算程序,利用了random,tkinter。

2.部分来自Github。

3.下面可以退出!

 

【作品源代码】

#!/usr/bin/env python3

import random
import tkinter as tk

# 随机生成一个口算题及其正确结果的函数
def genOneExercise():
	opt = random.randint(0, 1)  # 在0和1中随机取一个值
	if opt == 1:	# 如果随机得到的是 1,我们就生成加法口算题
		a = random.randint(1, 99)	# 注意这里是 99
		b = random.randint(1, 100-a)	# 这是保证百以内加法的地方
		result = a + b
		#return a, opt, b, result
		return " {a} + {b} = ".format(a=a, b=b), result
	else:			# 如果随机得到的是 0,我们就生成减法口算题
		a = random.randint(1, 100)
		b = random.randint(1, 100)
		if a > b:
			result = a - b
			# 和上篇文章里代码比, 此处已把返回数据格式简化
			return " {a} - {b} = ".format(a=a, b=b), result
		else:
			result = b - a	# 这里是避免出现减数不够的地方
			# 和上篇文章里代码比, 此处已把返回数据格式简化
			return " {a} - {b} = ".format(a=b, b=a), result


class MyApp(tk.Frame):
    def __init__(self, master=None):
        super().__init__(master)

        self.counter = 0
        self.result = None

        self.master = master

        self.pack()
        self.create_widgets()
    def create_widgets(self):
        self.tip = tk.StringVar()
        self.tip.set("准备好了?")
        self.question = tk.Label(self, textvariable=self.tip, justify="right")
        self.question.grid(row=0, column=0, sticky=tk.E)

        self.input = tk.IntVar()
        self.answer = tk.Entry(self, textvariable=self.input, state="disabled")
        self.answer.bind('',self.enterConfirm)
        self.answer.grid(row=0, column=1, sticky=tk.W)

        self.btnStart = tk.Button(self, text="开始", command=self.clickStart)
        self.btnStart.grid(row=0, column=2, sticky=tk.W)
		
        self.confirm = tk.Button(self, text="确定", fg="red", command=self.clickConfirm)
        self.confirm.grid(row=0, column=2, sticky=tk.W)
        self.confirm.grid_remove()
		
        self.his = tk.StringVar()
        self.his.set("history items")
        self.history = tk.Text(self, bg='green', height=50)
        self.history.grid(row=1, columnspan=3)
		
        self.quit = tk.Button(self, text="退出", fg="red", command=self.master.destroy)
        self.quit.grid(row=3, column=0, columnspan=3)
	
	
    def clickStart(self):
        txt, self.result = genOneExercise()
        self.tip.set(txt)
        self.input.set("")
		
        self.btnStart.grid_remove()
        self.answer['state'] = 'normal'
        self.confirm.grid()
	
    def clickConfirm(self):
        self.counter = self.counter + 1
        v = self.input.get()
        if v == self.result:
            his = "({i}), {q} {a}  对\n".format(i=self.counter, q=self.tip.get(),a=v)
        else:
            his = "({i}), {q} {a}  错\n".format(i=self.counter, q=self.tip.get(),a=v)
        self.history.insert('end', his )
		
        txt, self.result = genOneExercise()
        self.tip.set(txt)
        self.input.set("")
	    
    def enterConfirm(self,event):
        self.counter = self.counter + 1
        v = self.input.get()
        if v == self.result:
	        his = "({i}), {q} {a}  对\n".format(i=self.counter, q=self.tip.get(),a=v)
        else:
	        his = "({i}), {q} {a}  错\n".format(i=self.counter, q=self.tip.get(),a=v)
        self.history.insert('end', his )
		
        txt, self.result = genOneExercise()
        self.input.set("")
        self.tip.set(txt)

if __name__ == "__main__":
	root = tk.Tk()
	app = MyApp(master=root)
	app.master.title("口算程序")
	app.mainloop()

 

【提示】

部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:

https://python.codemao.cn


回复

上一页1 页 / 共 1下一页
不知道该叫啥的一只萌新不知道该叫啥的一只萌新

sofa~~

点赞0


评论