引言:Python猜数
![]()
,暂时不想修改了。
图1
# -*- coding: utf-8 -*-
"""
Created on Mon Mar 2 15:02:39 2020
@author: 参宿四今天炸了吗
"""
'''导入模块'''
import tkinter as tk
import tkinter.messagebox #弹窗提示信息
import sys
import random
import re
'''随机产生介于0~1024的整数'''
number = random.randint(0,1024)
flag = 1 #定义结束标记
num = 0 #计数
numberMax = 1024 #数值上限
numberMin = 0 #数值下限
'''创建应用程序窗口'''
root = tk.Tk()
root.title("0~1024猜字游戏") #Title
root.geometry("300x100") #设置窗口的大小
'''初始化置空'''
varNumber = tk.StringVar()
varNumber.set("")
'''
判断用户直到
猜对所用的次数
并弹出输入信息...
'''
def Judge():
if num == 1 :
tk.messagebox.showinfo(title="0~1024猜字游戏",message="LUCKLY!CONGRATULATION!nYou use it once and you get it right!nThe true number is %s."% number)
elif num < 10 :
tk.messagebox.showinfo(title="0~1024猜字游戏",message="EXCELLENT!CONGRATULATION!nYou use it {0:} times!nThe true number is {1:}.".format(num,number))
elif num < 50 :
tk.messagebox.showinfo(title="0~1024猜字游戏",message="GOOD!CONGRATULATION!nYou use it {0:} times!nThe true number is {1:}.".format(num,number))
else :
tk.messagebox.showinfo(title="0~1024猜字游戏",message="OK!nYou use it {0:} times!nThe true nuber is {1:}.".format(num,number))
'''猜数字程序'''
def Guess():
'''全局变量'''
global flag
global num
global numberMax
global numberMin
global number
while flag :
if entryNumber.get() == "" : #若输入为空
'''文本输入框上方给出提示信息'''
labelTip("Error!Please enter again.")
Guess(root) #回到窗口
else :#输入非空转化为整型
getNumber = int(entryNumber.get())
if getNumber == number : #猜对则返回出口
num += 1 #计数+1
labelTip("Congratulation!You win the game!")
Judge() #统计猜数的次数
flag = 0
elif getNumber < number : #若小于被猜数
if getNumber > numberMin:
'''大于下界则更换下界'''
numberMin = getNumber
num += 1
labelTip_Min.config(labelTip_Min,text=numberMin)
labelTip("Sorry!You guess a little number!Again...")
Guess(root) #重新猜数
else: #若大于被猜数
if getNumber < numberMax:
'''小于上界则更换上界'''
numberMax = getNumber
num += 1
labelTip_Max.config(labelTip_Max,text=numberMax)
labelTip("Sorry!You guess a big number!Again...")
Guess(root) #重新猜数
- 两个
![]()
的函数调用。
'''置空用户输入'''
def Cancle():
# 清空用户的本次输入
varNumber.set("")
'''退出程序'''
def Quit():
# 退出
root.quit()
root.destroy()
'''输入框上方给出提示信息'''
def labelTip(vText):
labelVal_Tip.config(labelVal_Tip,text=vText)
'''设置窗口中数值上下界的位置'''
line_aTip = tk.Frame(root)
labelTip_Max = tk.Label(line_aTip,text=numberMax)
labelTip_Min = tk.Label(line_aTip,text=numberMin)
labelTip_Max.pack(side = "top",fill = "x")
labelTip_Min.pack(side = "bottom",fill = "x")
line_aTip.pack(side = "left",fill = "y")
'''输入框提示信息的大小位置'''
lineQuestion = tk.Frame(root)
labelVal_Tip = tk.Label(lineQuestion,width="80")
labelVal_Tip.pack(side = "left")
lineQuestion.pack(side = "top",fill = "x")
图2 运行结果
- 设置窗口中三个
![]()
的样式。
'''设置窗口中三个Button的样式'''
#labelTip = tk.Label(root,text="Please enter an interger from 0 to 1024",justify=tk.RIGHT,width=80)
entryNumber = tk.Entry(root,width=120,textvariable=varNumber)
buttonGuess = tk.Button(root,text="START",relief=tk.RAISED,command=Guess,fg="green")
buttonCancle = tk.Button(root,text="EMPTY",relief=tk.RAISED,command=Cancle,fg="gray")
buttonQuit = tk.Button(root,text="QUIT",relief=tk.RAISED,command=Quit,fg="red")
- 设置窗口中三个
![]()
的位置排放。
'''设置窗口中三个Button的位置排放'''
#labelTip.place(x=30,y=5,width=250,height=20)
entryNumber.place(x=100,y=30,width=110,height=23)
buttonCancle.place(x=70,y=70,width=50,height=20)
buttonGuess.place(x=130,y=70,width=50,height=20)
buttonQuit.place(x=190,y=70,width=50,height=20)
-
![]()
。
labelTip("Please enter an interger from 0 to 1024")
print(number)
'''窗口运行循环'''
if __name__ == '__main__':
root.mainloop()