Python random和json模块

一、random模块

Python random 模块主要用于生成随机数。该模块实现了各种分布的伪随机数生成器。比如:随机生成验证码等

random 模块属于标准库,无需进行安装,导入即可使用。

import random

# 查看 random 模块中的内容
print(dir(random))

1、random() 函数

random() :返回随机生成的一个实数,它在半开放区间 [0,1) 范围内,包含 0 但不包含 1。

import random

num1 = random.random()  # 0.2739237072907895
print(num1)
print(random.random())  # 0.8903373291990494

2、seed() 函数

我们调用 random.random() 生成随机数时,每一次生成的数都是随机的。

当我们预先使用 random.seed(x) 设定好种子之后,其中的 x 可以是任意数字,比如10。

然后再调用 random()时生成的随机数将会是同一个。

import random

random.seed()
print("使用默认种子生成随机数:", random.random())
print("使用默认种子生成随机数:", random.random())

random.seed(10)
print("使用整数 10 种子生成随机数:", random.random())
random.seed(10)
print("使用整数 10 种子生成随机数:", random.random())

random.seed("hello", 2)
print("使用字符串种子生成随机数:", random.random())

在这里插入图片描述

3、randrange()函数

randrange():返回指定范围内的随机数。基本语法如下:
random.randrange(start, stop, step)

参数:

  • start – 可选, 一个整数,指定开始值,默认值为 0。
  • stop – 必需, 一个整数,指定结束值。
  • step – 可选, 一个整数,指定步长,默认值为 1。
import random

# 随机返回一个 1 到 10 之间的一个奇数
num = random.randrange(1, 9, 2)
print(num) # 5

4、randint() 方法

randint():方法返回指定范围内的整数。
randint(start, stop) 等价于 randrange(start, stop+1)。

import random

print(random.randint(1, 9))

5、uniform()方法

uniform(a,b):返回a,b之间的随机浮点数,若a<=b则范围[a,b],若a>=b则范围[b,a] ,a和b可以是实数。

import random

print(random.uniform(10, 20))  # 13.00577371222787

二、json模块

Python json模块主要是对 JSON 数据进行编解码。

json模块使用相对简单,只有四个方法dump()、load()、dumps()、loads()。

  • dumps():对数据进行编码。将python对象转换成json对象,生成的是字符串。
  • loads():对数据进行解码。将json字符串解码成python对象。
  • dump():对数据进行编码。将python对象转换成json对象,生成一个fp的文件流,和文件相关。
  • load():对数据进行解码。将json文件解码成python对象。

注意:方法加s与不加s的区别,加s针对json字符串,不加s针对json文件。

1、类型转化对照表

在 json 的编解码过程中,Python 的原始类型与 json 类型会相互转换,具体的转化对照如下:

(1)Python 编码为 JSON 类型转换对应表:

在这里插入图片描述

(2)JSON 解码为 Python 类型转换对应表:

在这里插入图片描述

2、字符串转换

import json

# 1. 将 Python 字典类型转换为 JSON 对象
data_dict = {
    
    "key2": "value2", "key1": 18, "key3": "http://www.baidu.com"}

# 默认转换的json数据是无序的。如果将参数sort_keys改为True, 则会根据key值将数据进行排序。
json_str1 = json.dumps(data_dict)
json_str2 = json.dumps(data_dict, sort_keys=True)

print("Python 原始数据:", repr(data_dict))
print("JSON 对象1:", json_str1)
print("JSON 对象2:", json_str2)

print("--------------------")

# 2. 将 JSON 对象转换为 Python 字典
data2 = json.loads(json_str1)

print("Python 数据2:", repr(data2))
print("data2['key1']: ", data2['key1'])
print("data2['key3']: ", data2['key3'])

在这里插入图片描述

3、文件流转换

import json

data = {
    
    "key2": "value2", "key1": 18, "key3": "http://www.baidu.com"}

# 1.序列化:将 Java 对象转换成字节流,即写入 JSON数据
with open('demo3.json', 'wt') as f:
    json.dump(data, f)

# 2.反序列化:将字节流转换成 Java 对象,即读取文件数据
with open('demo3.json', 'rt') as f:
    data = json.load(f)
    print(data, type(data)) 
    # {'key2': 'value2', 'key1': 18, 'key3': 'http://www.baidu.com'} <class 'dict'>

– 求知若饥,虚心若愚。

猜你喜欢

转载自blog.csdn.net/qq_42402854/article/details/129160916