基本使用

python内置的有random 模块,可以生成随机的数字。
基本的使用方式,跟其他 open ,print 不太一样,需要 import 导入。

  1. import random
  2. # 生成一个 0-1 之间的随机小数
  3. n = random.random()
  4. print(f"随机小数 {n}")
  5. # 生成随机的1-10 之间的整数
  6. n1 = random.randint(1,10)
  7. print(f"10以内的随机数字:{n1}")
  8. # 生成随机的1-10 之间的随机小数
  9. print(n*n1)
  • random() 生成随机的小数
  • randint(1,10) 1-10 之间随机整数。

image.png

生成随机手机号

生成130 -139 号段的手机号

  1. import random
  2. # 生成130 -139 号段的手机号
  3. phone = random.randint(13000000000,13999999999)
  4. print(phone)

image.png

生成多个号段的手机号

比如支持的手机号号段

  1. pre_phone= ["130","131","132","133","134","135","136","137","138","139",
  2. "170","172","179",
  3. "150","151","155","156",
  4. "188",
  5. "199"]

根据上面提供的号段来生成随机的手机号码。

分析

确定前三位

手机号的前三位已经确定,可以从 pre_phone 列表中随机取一个值。
借助 len() 获取列表的长度。
使用random 生成一个随机的索引,通过索引值获取前缀。

  1. import random
  2. pre_phone= ["130","131","132","133","134","135","136","137","138","139",
  3. "170","172","179",
  4. "150","151","155","156",
  5. "188",
  6. "199","190"]
  7. # len统计 list 的长度
  8. count = len(pre_phone) # 19
  9. print(f"列表中总共有{count}个值")
  10. # 随机去取一个号段, 可以通过随机索引
  11. index = random.randint(0,count-1) #生成随机的索引值, 索引值最大不能为19,
  12. print(f"随机抽取一个索引 {index}")
  13. print(f"对应的值为{pre_phone[index]}")

随机生成后8位

前三位可以通过随机的方式获取,后8位数字 也可以通过随机的方式来获取。
使用 for 循环 循环 8次,每次生成0-9 之间的一个数字。

import random
phone_8 = ""
for i in range(8): # 循环8次
    n = random.randint(0,9)  # 每次循环生成一个0-9随机数字
    phone_8 = phone_8+ str(n)  # 字符串进行拼接
#循环执行完毕
print(f"后8位{phone_8}")

image.png

生成的数据组合

将前3位和后8位 拼接 在一起就形成了11位的电话。

import random
pre_phone= ["130","131","132","133","134","135","136","137","138","139",
            "170","172","179",
            "150","151","155","156",
            "188",
            "199"]
# len统计 list 的长度
count = len(pre_phone)  # 19
print(f"列表中总共有{count}个值")
# 随机去取一个号段, 可以通过随机索引
index = random.randint(0,count-1) #生成随机的索引值, 索引值最大不能为19,
print(f"随机抽取一个索引 {index}")
print(f"对应的前3位为{pre_phone[index]}")

# 将前三位数据 保存到变量中
phone_3 = pre_phone[index]
# 后8位
phone_8 = ""
for i in range(8): # 循环8次
    n = random.randint(0,9)  # 每次循环生成一个0-9随机数字
    phone_8 = phone_8+ str(n)  # 字符串进行拼接
#循环执行完毕
print(f"后8位{phone_8}")
# 将字符串拼接在一起
phone = phone_3+phone_8
print(f"生成随机电话号码: {phone}")

扩展

随机生成 n 个手机号 并写入到文件中

import random

# 随机生成n个值
n = random.randint(1,10000)
# 定义空的列表,专门用来存放生成的手机号
all_phone = []
# 循环 n次
for i in range(n):
    # 每次循环,生成一个随机的手机号
    phone = random.randint(13000000000,13999999999)
    # 将生成的随即号码放在列表中
    all_phone.append(phone)
# 循环结束,查看生成的所有手机号。
print(all_phone)
# 将生成所有手机号码 存放到文件中
with open('data.txt',mode='w',encoding='utf8') as f:
    # 循环所有的手机号码
    for p in all_phone:
        # 写入文件
        f.write(f'{p}\n')

import random

n = random.randint(1,100)
all_phone = []
for i in range(n):
    phone = random.randint(13000000000,13999999999)
    all_phone.append(phone)
# 随机密码的个数
m = random.randint(1,100)
# 定义空的列表存放生成的密码
all_passwd = []
# 循环m次
for i in range(m):
    # 每次生成一个密码
    passwd = random.randint(100000,999999)
    # 将密码保存到列表中
    all_passwd.append(passwd)


print(all_phone)
# 查看所有的密码
print(all_passwd)

with open('data.txt',mode='w',encoding='utf8') as f:
    for p in all_phone:
        # 循环每个密码
        for p2 in all_passwd:
            # 写入到文件中
            f.write(f'{p},{p2}\n')