作品演示
猜数字游戏,逻辑上比较简单,需要考虑一些用户输入的特殊情况的处理,如超过猜测数字范围以及用户输入的不是数字而是其他符号时候的处理。需要考虑问题考虑的周全一些。本例中用户答对后如果继续输入的特殊情况并未考虑,感兴趣的朋友可以想一想自己完善。里面涉及到了简单的正则表达式的应用,感兴趣的朋友可以自己网上找资料学习。
python 代码
from tkinter import *
# 引入错误弹框取个别名mesbox
import tkinter.messagebox as mesbox
import random
# python自带正则表达式库
import re
# 目标数字
maxNum = 100
targetNumber = random.randint(1, maxNum)
minNum = 1
count = 0
# 因为绑定了回车按键所以要传入一个参数默认空
def guess(event=None):
global maxNum, minNum, count
# 判断是否有输入以及通过正则表达书判断输入的是否是数字
if inputVar.get() and re.match(r'\d+', inputVar.get()):
guessNum = int(inputVar.get())
inputVar.set('')
if minNum <= guessNum <= maxNum: # 输入检测 输入的数是否在目标范围内不再的话给出提示
count += 1 # 有效计数猜测次数
if guessNum == targetNumber:
mesVar.set('恭喜你答对了,你一共猜了{}次'.format(count))
elif guessNum < targetNumber:
minNum = guessNum
mesVar.set('猜小了,请输入{}-{},继续猜'.format(minNum, maxNum))
else:
maxNum = guessNum
mesVar.set('猜大了,请输入{}-{},继续猜'.format(minNum, maxNum))
else:
mesbox.showerror(title='错误', message='输入的数字要在{}-{}范围内!'.format(minNum, maxNum))
else:
inputVar.set('')
mesbox.showerror(title='错误', message='只能输入数字!')
root = Tk()
root.title('猜数字游戏')
root.geometry("300x200")
# 绑定键盘回车键
root.bind('<Return>', guess)
# 定义说明文本
mesVar = StringVar()
mesVar.set('请输入{}-{}之间的数字进行猜数字游戏'.format(minNum, maxNum))
messageLabel = Label(root, textvariable=mesVar, font='微软雅黑 12')
messageLabel.pack(pady=30)
# 定义输入框
inputVar = StringVar()
inputEntry = Entry(root, textvariable=inputVar, font='微软雅黑 14')
inputEntry.pack(pady=10)
# 定义执行按钮 事件绑定guess函数
guessButton = Button(root, text='猜', width=10, command=guess, cursor='hand2')
guessButton.pack(pady=10)
root.mainloop()
0 评论 最近
没有评论!