(第二版)零基础入门Python小甲鱼-笔记-第三章-p8

改进我们的小游戏(下)

上节课已经完成了改进游戏的2个要求,今天我们来整第三个改进需求(3.每次运行程序,答案应该是随机的),这个怎么实现呢很多人喜欢python除了喜欢它优雅简单的语法规则之外,最重要的是Python有海量的模块供你调用;

遇到问题了如何生成一个随机数值作为答案呢,有点聪明的小伙伴可能会写个程序 获取当前的这个福利彩票的中奖号码 然后柔和在一起就变成了一个随机的数值.

随机数 = 当前的福利彩票中奖号码 + 打乱糅合

这是一个办法

数学比较好的同学可能会想到采用线性同余法或者梅森旋转算法来实现,但是我们只是想做个简简单单的文字小游戏,结果写文字游戏那部分花了3分钟代码不到20行,而创建随机数那部分花了三天三夜,还用了几百行来实现不科学

life is short

Python 优势有大量的现成专业模块供你调遣

在这里有一个叫做 random 模块

它可以从一个非常专业的角度来帮你 实现一个伪随机数

咋刚刚说专业又说是伪随机数

这是因为真正的随机数只能等量子计算机诞生的那天才能实现,我们知道就目前人类的认知水平来说,只有利用量子纠缠才能够产生真正的随机数,都不重要

我们都知道有一个 random 模块 能实现随机数那就ok了,如何做?

1、我们会考虑查看Python官方自带的文档,里面的内容通常是最权威的,怎么查找呢?

Python小甲鱼论坛作业 小甲鱼python第二版_Python

打开Python IDLE Shell 中Help —> Python Docs F1 打开官方自带文档

Python小甲鱼论坛作业 小甲鱼python第二版_开发语言_02

打开索引——>输入关键字(random) 进行查看

有些童鞋可能不是看不懂英文了,只是懒得去翻译.可以下载中文文档;链接如下

链接:https://pan.baidu.com/s/1Ew1E5G16fXmPyCzFrO5j7Q 
提取码:6411

打开之后搜索输入关键字(random)进行查看如下

Python小甲鱼论坛作业 小甲鱼python第二版_开发语言_03

 可以下载收藏查看.

好了 首先要使用Python 模块 首先是需要将其导入

语法就是   import + 模块名

Python小甲鱼论坛作业 小甲鱼python第二版_python_04

 这样就导入进来了,那么random模块里面呢有个叫做randint的函数

语法: random.randint(a,b) 它有2个参数表示获取的随机整数的返回

案例
比如第一个参数是1,第二个参数是10就表示随机获得1到10之间的整数

比如第一个参数是100,第二个参数是10000就表示随机获得100到10000之间的整数

测试一下

Python小甲鱼论坛作业 小甲鱼python第二版_python_05

 alt+p 上一条语句 随机数嘛不知道它会出现什么,可以尝试以下肯定跟我屏幕上的数字不一样的,这就叫随机,修改一下100到 10000如下

Python小甲鱼论坛作业 小甲鱼python第二版_python_06

 接下来就可以解决我们的第三个问题添加随机数

首先需要导入模块对吧,接着生成一个1到10的随机数赋值给answer 且把8修改成answer 

Python小甲鱼论坛作业 小甲鱼python第二版_python_07

然后我们来测试一下 依次输入5、4、3都提示大了但是没猜中,在进行游戏的时候输入5提示大了、输入3提示小啦,输入4正确,第一次游戏和第二次游戏答案不相同.

Python小甲鱼论坛作业 小甲鱼python第二版_Python小甲鱼论坛作业_08

 源码如下

""" 用Python设计第一个小游戏 """
import random

answer = random.randint(1,10)
counts = 3
while counts > 0:
    temp = input("不妨猜一下小甲鱼现在心里想的是哪个数字:")
    guess = int(temp)
 
    if guess == answer:
        print("你是小甲鱼心里想的蛔虫嘛?")
        print("哼 猜中也是没有奖励的!")
        break
    else:
        if guess < answer:
            print("小啦")
        else:
            print("大了")
    counts = counts - 1
 
print("游戏结束 ,不玩啦^_^")

接下来给它进行一些好玩的

前面不是说random生成的随机数都是伪随机数是可以被重现的,要实现对伪随机数的攻击就要拿到种子,默认情况下random呢使用当前操作系统的时间来作为随机数的种子,可以使用random.getstate()这个函数来获取随机数的种子加工之后随机数生成器的内部状态,这时候就来测试一下.

Python小甲鱼论坛作业 小甲鱼python第二版_开发语言_09