Skip to content

Latest commit

 

History

History
258 lines (173 loc) · 5.42 KB

073-188927-随机数字_random_随机来源.sy.md

File metadata and controls

258 lines (173 loc) · 5.42 KB
show version enable_checker
step
1.0
true

随机数字运算

回忆上次内容

  • 上次了解的是
    • 整型数字类变量
    • integer
    • 前缀为i

图片描述

  • 整型变量 和 字符串变量 不同
    • 整型变量 是 直接存储二进制形式的
    • 可以用 int()函数
      • 将 2进制形式的 字符串
        • 转化为 十进制整数
  • int()函数
    • 接受两个变量
      1. 待转化的字符串
      2. 字符串使用的进制
      • int("101001",2)

图片描述

  • 可以得到一个随机的整数吗?🤔

随机数

  • 网站登陆的 验证码 就是随机数

图片描述

  • 验证码 是随机生成的
  • 如果 不随机的话 就容易被人 破解
  • 那 python 可以 生成随机数吗?

搜索

图片描述

  • 搜索到 random.randint函数
  • 去游乐场 一探究竟

随机游乐

  • 导入 random 包
    • 然后查询 random.randint 的 帮助

图片描述

  • 看起来 random.randint
    • 有两个参数
    • 随机数产生的范围 在两个数之间

图片描述

  • 包括两个边界端点
    • 返回值类型是整数
  • 去试试

具体使用

  • 确实可以返回数字
    • 左右两个端点都能到达

图片描述

  • 确实找到了这random包
    • 就像当时 找到 自定义的
      • get_fruits
      • process
      • out
    • 一样
  • 可以离开游乐场
    • 去写 py 程序了
    • 先尝试一下 生成随机数

胡乱尝试

  • vi random.py

图片描述

  • 保存并运行

出错了

  • 注意红框中的

    • 报错信息
  • random模块

    • 来自于 /home/shiyanlou/random.py
    • 这不是系统的random包

图片描述

  • 回忆之前的程序

引入包名

  • 在主控程序main.py中
    • 试图导入input.py
  • 文件的名字input.py
    • 和系统中的要用的函数名input
      • 起冲突了
      • 无法调用函数 了

图片描述

  • 要注意 标识符撞车的问题
    • 包名
    • 类名
    • 函数名
    • 变量名
    • 文件名
  • 系统的random包
    • 本该在哪里呢?

查找软件包的位置

  • 搜索

图片描述

尝试

  • 注意file前后都是
    • 下划线
    • dunder
    • double underline

图片描述

  • 找到了 random模块 的位置

    • /usr/lib/python3.8/random.py
  • 找到了 random模块 的位置

    • /usr/lib/python3.8/random.py

导入过程

  • 程序会在本地先找 random.py

    • 找到了 本地这个文件
      • /home/shiyanlou/random.py
  • 就再找了

    • 真正需要导入的
      • /usr/lib/python3.8/random.py
        • 就无法导入了
  • 当前文件夹的random.py 中

    • 找不到 randint 函数
    • 所以就报错了
  • 出了错

    • 是我们前进的见证
    • 慢慢 找到原因
    • 就要修改

程序改名

  • 把本地的random.py改名
    • 改为 random_add.py
mv random.py random_add.py
  • 将random.py的文件名
    • 改为 random_add.py

图片描述

  • 目前状态
    • random.py消失了
    • 可以看到 random_add.py

修改文件

import random
i_left = random.randint(1,9)
i_right = random.randint(1,9)
i_sum = i_left + i_right
print(i_left, "+", i_right, "=", i_sum)
  • 修改代码

图片描述

  • 保存并运行

改个名字

  • 测试成功
    • 真的是 十以内随机加法

图片描述

  • 随机函数 可以产生 固定数值吗?

事无绝对

  • 如果上限和下限 被钳位住
    • 那么随机数 也就是固定的数值 了

图片描述

  • 如果下限高于上限呢?

胡乱尝试

图片描述

  • 程序报错

搜索

  • 在/usr/lib/python3.8/random.py
    • 反向搜索
    • /empty range for randrange

图片描述

  • 真的找到了抛出异常的位置

位置

  • 按n查找下一个匹配
    • 可以找到具体报错的位置 226 行

图片描述

  • 天哪 😱
    • 随机也是有章可循的
    • 随机数 也是 算法计算得到的结果

总结

  • 这次主要是 随机数的生成

    • 使用 random包中的 randint(a,b)函数
    • 生成[a,b]范围中的整数
      • 包括 a,b
  • 这真的可以 生成随机数

    • 你感到随机 带来的快乐了 么?
    • 如果我想生成 6位数字密码 可以么?🤔

图片描述

  • 下次再说 👋