利用Python写猜数字游戏
import random
from tkinter import *
time = 0 # 尝试次数
num = random.randint(100, 999) # 随机生成的数字
max_num = 999
min_num = 100
def click():
# 防止输入非数字
try:
user = int(float(entry_num.get())) # 获取在输入框输入的数字
# 利用global把局部变量变为全局变量,目的是实时更新次数和范围
global time
global max_num
global min_num
if user == num:
time += 1
if time <= 5:
# 尝试次数的显示
# 更新label
label2.config(text='很棒,尝试次数为:%s' % time)
label3.config(text='恭喜!!')
elif 5 < time < 10:
label2.config(text='还行,尝试次数为:%s' % time)
label3.config(text='恭喜!!')
else:
label2.config(text='加油老铁,尝试次数为:%s' % time)
label3.config(text='恭喜!!')
elif user > num:
time += 1
max_num = user
label2.config(text='当前范围[%s,%s]' % (min_num, max_num))
label3.config(text='大了哦!')
else:
time += 1
min_num = user
label2.config(text='当前范围[%s,%s]' % (min_num, max_num))
label3.config(text='小了哦!')
except ValueError:
label3.config(text='输入无效,请输入数字!')
# 创建窗口
app = Tk()
app.title('猜数字游戏')
# 不让随意调整窗口大小
app.resizable(0, 0)
label1 = Label(app, text='输入 100~999 的任意整数\n', font=('幼圆', 20, 'bold'))
label1.pack(pady=8)
label2 = Label(app, text='当前范围[100,999]', font=('幼圆', 15, 'bold'))
label2.pack()
label3 = Label(app, fg='red', font=('幼圆', 13, 'bold'))
label3.pack(pady=8)
# 输入框
entry_num = StringVar() # 这即是输入框中的内容
Entry(app, textvariable=entry_num, bd=5, font='幼圆', fg='blue', width=20).pack()
Button(app, text='确定', command=click, width=20, height=3).pack(side=LEFT, padx=25)
Button(app, text='退出程序', command=app.quit, width=20, height=3).pack(side=RIGHT, padx=25)
# 窗口大小
app.geometry('400x300')
app.mainloop()