猜数字小游戏
(学习来源:b站up主 程序员在思考) 要求:输入1-1024之间的任意一位数,界面会提示输入的数字与系统生成的数字大小比较情况,直至猜中,并记录猜的次数。
新知识:
- 解决点鼠标和按回车调用函数冲突的问题,对函数传参event=None。
- inputVar.set("") # 输入框自动清空
- inputEntry.focus_set() # 输入框获得焦点
- root.bind(“< Return >”, 调用的函数名) # 回车键触发
- 正则表达式的应用,判断输入的是数字: re.match(r"\d+", inputVar.get())
代码如下:
from tkinter import *
import random
import re
target_Num = random.randint(1, 1024)
min_Num = 1
max_Num = 1024
count = 0
def Guess(event=None):
global target_Num, min_Num, max_Num, count
if inputVar.get() and re.match(r"\d+", inputVar.get()):
guess_Num = int(inputVar.get())
if min_Num <= guess_Num <= max_Num:
count += 1
if guess_Num == target_Num:
msgVar.set("恭喜你猜对了,这个数是{},一共猜了{}次".format(target_Num, count))
elif guess_Num < target_Num:
min_Num = guess_Num
msgVar.set("太小了,请输入数字{}~{}开始猜".format(min_Num, max_Num))
else:
max_Num = guess_Num
msgVar.set("太大了,请输入数字{}~{}开始猜".format(min_Num, max_Num))
else:
msgVar.set("猜数字的范围是:%d~%d" % (min_Num, max_Num))
else:
msgVar.set("请输入一个数字.")
inputVar.set("")
inputEntry.focus_set()
root = Tk()
root.title("猜数字小游戏")
root.geometry("300x150")
msgVar = StringVar()
msg_label = Label(root, textvariable=msgVar, height=3)
msgVar.set("输入数字1~1024开始猜")
msg_label.pack(pady=3)
inputVar = StringVar()
inputEntry = Entry(root, textvariable=inputVar)
inputEntry.pack()
guessButton = Button(root, text='猜', command=Guess, width=10, cursor='hand2')
guessButton.pack(pady=20)
root.bind("<Return>", Guess)
root.mainloop()
运行界面:
|