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)

Python03-猜数字游戏与随机数攻击_第1张图片

 

你可能感兴趣的:(python)