Python03-猜数字游戏与随机数攻击

游戏要求:

  1. 用户猜错给出提示
  2. 提供多次机会
  3. 猜中退出
  4. 每次游戏答案为随机数,不固定答案

实现1-3要求python代码如下:

"""猜数字游戏"""
count = 0
while count < 3:
    temp = input("猜猜数字")
    guess = int(temp)
    if guess == 8:
        print("猜中啦")
        break
    else:
        if guess < 8:
            print("小啦")
        else:
            print("大啦")
        count = count + 1
print("游戏结束")

以上代码为循环次数为三次,更改为不限次一直猜,更改如下:

"""猜数字游戏"""

while 1:
    temp = input("猜猜数字")
    guess = int(temp)
    if guess == 8:
        print("猜中啦")
        break
    else:
        if guess < 8:
            print("小啦")
        else:
            print("大啦")
print("游戏结束")

 目前的游戏中答案是8,是固定的,我们把答案设置成随机数,代码如下图:

"""猜随机数"""

import random //导入随机函数
answer = random.randint(1,10) //在1-10取随机数
while 1:
    temp = input("输入一个随机数:")
    guess = int(temp)
    if guess == answer:
        print("猜中啦")
        break
    else:
        if guess < answer:
            print("小啦")
        else:
            print("大啦")
print("游戏结束")
    

        random模块生成伪随机数,其可以被重现,真正的随机数只能由量子纠缠原理的量子计算机实现,实现伪随机数的攻击,要拿到它的种子,默认情况下random使用操作系统下的系统时间来作为随机数种子,这里使用random.getstate()获取随机数生成器的内部状态,如下两图,这也就是彩票内部的可以重现。

import random
random.randint(1,10)
x = random.getstate()
print(x)    //获得时间戳,随机数内部规则
random.randint(1,10)
random.randint(1,10)
random.randint(1,10)
random.setstate(x)    //重现上述的随机数
random.randint(1,10)
random.randint(1,10)
random.randint(1,10)

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值