python猜密码游戏规则_数字——练习Python基础语法的小游戏
python猜密码游戏规则_数字——练习Python基础语法的
⼩游戏
# 数字""
数字⼩游戏,平时可以多个⼈⼀块玩。游戏规则也很简单:从0~100之间选⼀个数字,作为“”。每⼈轮流猜,数字的范围不断缩⼩,知道有⼈“踩到”为⽌。⽐如:数字为50,第⼀个⼈猜10,提⽰在“10到100”之间;第⼆个⼈猜60,提⽰
在“10到60”之间,第三个⼈猜50,遇到,游戏结束。
规则很简单,如果⼈多的时候可以⼀块玩。如果没⼈的话,那就只能⾃⼰和⾃⼰玩。于是乎,我想到⽤程序写⼀个这样的游戏出来。嗯,应该很简单......
肠粉怎么做# 从1到......
事实上,打脸来得很快,本以为很轻松就搞定的东西,我花费了⼤概2个⼩时的时间,有兴趣的⼩伙伴也可以挑战⼀下,对⾃⼰的基础语法练习有很⼤的帮助。
整理⼀下思路:
1. 这个游戏需要⼀个“”数字,这个简单,⽤random中的randint⽅法,只要指定范围,就能随机⽣成⼀个数字。
```
import random
boom = random.randint(1,100)
"""
pthon导⼊第三⽅⼯具,⽤ import 关键字
"""
```
2. 如果每次玩都可以控制的范围就好了,这个时候,函数就派上⽤场啦。
```
import random
def numb_boom(start=1,end=100):
boom = random.randint(start,end)
"""
number_boom函数,start参数默认为1,end参数默认为100
如果要更改参数值,只需在调⽤的时候指定对应的数值,如:
number_boom(14,250)
number_boom(13,34)
"""
```
3. 这个游戏要⼀直玩,简单,while True⼀直循环下去,直到达到某些条件,就跳出循环。
```
import random
def numb_boom(start=1,end=100):
boom = random.randint(start,end)
while True:
# 代码块
pass
"""
pass只是为了保证代码完整,经常⽤来整理思路⽤。
就⽬前我的经验来看,while循环很少⽤到,最常⽤的是for循环。
while True⽤不好,程序就嗝屁啦...
"""
罪恶都市怎么调飞机
```
4. 需要告诉程序,你猜的是什么数字?⼀个input函数,搞定。
```
import random
def numb_boom(start=1,end=100):
boom = random.randint(start,end)
while True:
answer = input("踩(q退出):")
"""
这⾥有⼀个新⼿都会掉进去的坑:
1、input 接受⽤户输⼊信息传给answer,answer是字符串类型数据。
1、input 接受⽤户输⼊信息传给answer,answer是字符串类型数据。
1、input 接受⽤户输⼊信息传给answer,answer是字符串类型数据。
"""
```
5. 如果不想玩啦,输⼊q退出。if条件,当输⼊的是字符串q的时候,结束死循环。```
import random
def numb_boom(start=1,end=100):
boom = random.randint(start,end)
while True:
answer = input("踩(q退出):")
if answer == "q":
print(boom,"退出游戏!")
return boom
"""
在函数中,程序执⾏到 return 的时候,会⾃动跳出循环(应该是跳出整个函数)。
如果不是在函数中,也可以使⽤ break 跳出循环。
"""
```
6. 如果调⽪⼀下,输⼊的不是数字,应该怎么办?所以程序中应该还要判断输⼊的是不是数字,如果不是,就需要继续猜。```
import random
def numb_boom(start=1,end=100):
boom = random.randint(start,end)
while True:
answer = input("踩(q退出):")
if answer == "q":
print(boom,"退出游戏!")
return boom
if not answer.isdigit():
print("调⽪,输⼊整数>_
continue
else:
answer = int(answer)
"""
这⾥的answer是字符串对象(对象都有很多⽅法),isdigit()⽅法可以⽤来识别answer是不是都是由数字组成的。
continue 在这⾥⽤的就很完美,程序执⾏到continue的时候,下⾯的代码都不执⾏,继续猜。
int(answer) :将answer转为int对象,便于⽐较boom和answer。
"""
```
7. 如果猜中了,也需要跳出死循环。
```
import random
def numb_boom(start=1,end=100):
boom = random.randint(start,end)
while True:
answer = input("踩(q退出):")
if answer == "q":
print(boom,"退出游戏!")
return boom
if not answer.isdigit():
print("调⽪,输⼊整数>_
continue
else:
answer = int(answer)
if boom == answer:
print(boom,"boom~~~~~~")
return boom
else:
# 这⾥应该最关键的部分
北京欢迎你歌词
pass
```
8. 接下来最关键的⼀步就是,boom与answer不相等的时候,应该怎么办?
# 最关键的⼀步
boom与answer不相等,应该提⽰在某个区间内,⽽这个**区间是根据answer的值去确定**。举个例⼦:
boom=50,第⼀次输⼊answer=20,那么应该提⽰在【20,100】之间;
第⼆次输⼊40,那么应该提⽰在【40,100】之间;
第三次输⼊60,那么应该提⽰在【40,60】之间;
鲁宾逊漂流记作者简介
......
直达输⼊50,boom,游戏结束。
**以上是正常的输⼊⽅式.....**
**以下是⾮正常的输⼊⽅式:**
另⼀个例⼦:
boom=50,第⼀次输⼊answer=20,那么应该提⽰在【20,100】之间;
第⼆次输⼊10,那么应该如何提⽰?应该提⽰在【20,100】,还是【10,100】。
第三次输⼊60,那么应该如何提⽰?应该提⽰在【20,60】,还是【10,60】。......
问题关键在于,**如何给出合理的提⽰?**
**现在提⽰分为2种:**
**1、根据⽤户历史输⼊数据,给出范围。**
**2、根据⽤户最近2次输⼊的数据,给出范围。**
我觉得第⼀种太死板,⼀直强制你去“踩”;第⼆种更加灵活,没有强求的意思,是⽣是死,⾃⼰掌握。
第⼀种提⽰的解决思路:
1、将⽤户输⼊的answer全部放到⼀个列表(answer_list)中,然后从列表中出最接近boom的两个数字,问题转化为**在answer_list中寻距离boom的最近两个数。**这⼀步我刚开始想得有点复杂,这⾥有⼀种简单⽅法:将boom放到answer_list中,升序排列,到boom前后的两个数字即可,完整代码如下:
```
def number_boom_v1(start=1,end=100):
boom = random.randint(start,end)
answer_list = [start,boom,end]
while True:
answer = input("踩(q退出):")
if answer == "q":
print("boom:",boom)
return boom
if not answer.isdigit():冰箱除冰的好办法
print("调⽪,输⼊整数>_
continue
else:
answer = int(answer)
answer_list.append(answer)
if boom == answer:
print(boom," ,boom~~~~~~~~")
最红的网络歌曲return boom
else:
sorted_list = sorted(answer_list)
boom_index = sorted(sorted_list).index(boom)
print("在:{0}-{1}".format(sorted_list[boom_index-1],sorted_list[boom_index+1]))
```
第⼆种提⽰的解决思路:
制作⼀个提⽰列表numb_list,当boom⼤于answer,就替换numb_list的第⼀个数字;当boom⼩于answer,就替换numb_list中的第⼆个数字。具体代码如下:
```
def number_boom_v2(start=1,end=100):
boom = random.randint(start,end)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。