使用python3,数字炸弹游戏规则:在一个数字范围内,有一个数字作为炸弹,谁猜中这个炸弹就被惩罚。比如范围是1~100,炸弹是60,然后猜了一个数字是30,30不是炸弹,那么现在猜数字的范围就缩小到30~100,又猜了一个数字80,80也不是炸弹,那么现在又缩小范围到30~80,每次猜不能猜边界上的值,直到有人猜中这个炸弹,然后就受到惩罚。
游戏规则了解过后,我们就开始写代码:
# coding=utf-8 # 猜数字游戏 __author__="沈老师" import random def paly(): a=random.randint(2,99) # 随机出现2到99之间的数 start,end=1,100 #初始边界1和100 while 1: b=int(input("请输入%d到%d之间的整数:"%(start,end))) if b==a: print("恭喜你中奖了") #猜中炸弹提示 break elif b>a: if b>=end: print("输入不合法,请重新输入:") #不能猜边界上和边界外的值 else: end=b else: if b<=start: print("输入不合法,请重新输入:") #不能猜边界上和边界外的值 else: start=b if __name__=='__main__': paly()
下面是运行结果
运行结果
这个运行结果没有UI界面,如果想要更高逼格一点,可以使用python自带的tkinter库设计出UI界面,然后我们做一下错误处理,只能输入正常的数字,输入错误的发出错误提示,代码如下:
# coding=utf-8
__author__="沈老师"
from tkinter import *
import tkinter.messagebox as tm
import random
def play():
a=random.randint(2,99)
start,end=1,100
for j in range(100):
try:
root=Tk()
root.title("猜数字")
Label(root,text="请输入%d到%d之间的整数:"%(start,end),font=("Arial",35)).grid(row=0,column=0)
num=Entry(root,width=20)
num.grid(row=0,column=1)
Button(root,text="Yes",command=root.quit,font=("Arial",30)).grid(row=1,column=1)
root.mainloop()
b=int(num.get())
if b==a:
tm.showinfo("提示","恭喜您猜中了")
break
elif b<start or b>end:
tm.showinfo("提示","对不起,不能输入边界外的值,请重新输入。")
elif b==start or b==end:
tm.showinfo("提示","对不起,不能输入边界上的值,请重新输入。")
elif b>a:
end=b
root.quit()
else:
start=b
root.quit()
except:
tm.showinfo("提示","您输入的不是整数,请重新输入!")
if __name__=='__main__':
play()