批量生成随机信息

一、实验目的

了解Python标准库string中的字符串常量,熟练运用标准库random中的函数,了解汉字编码格式,熟练掌握文本文件操作方法。

二、实验所用仪器(或实验环境)

Python3.8

三、实验基本原理及步骤(或方案设计及理论计算)

3.1.了解并搜索常用汉字的Unicode编码表:

在unicode码中,汉字的范围是(0x4E00, 9FBF),unicode码中收录了2万多个汉字,包含很多生僻的繁体字.下面的例子为随机生成中文字符:
在这里插入图片描述
从博客找来3500个常见简体汉字的unicode编码:

https://blog.csdn.net/u011762313/article/details/47419063。

以下是部分截图,unicode_list[]后续会作为first_name的生成列表:
在这里插入图片描述

3.2.分别实现5个函数,用于随机生成姓名(2-4个汉字)或地址(10-30个汉字),性别(男或者女),年龄(18-99),电话号码(11位),电子邮箱地址(常见域名后缀包括.com,.org,.net,.cn等,可以扩展)。

在这里常用的函数是:

https://docs.python.org/3/library/random.html

random.randint(a,b),返回一个随机整数N,N为a和b之间的整数。
random.choice(seq),从非空序列seq返回一个随机元素

3.2.1:随机生成姓名(2-4个汉字):

在这里插入图片描述

3.2.2:随机生成10-30字汉字的地址:

在这里插入图片描述

3.2.3:随机生成性别:

在这里插入图片描述

3.2.4:随机生成18-99的年龄:

在这里插入图片描述

3.2.5:随机生成有效的11位电话号码:

在这里插入图片描述

3.2.6:随机生成用户部分为6-10位的电子邮箱地址(可用第三次实验所用的string.ascii_letter()和string.digits()函数):

在这里插入图片描述

3.3写一个main()函数,将信息写入文件 information.txt。

首先需要生成一个人的全部信息,定义一个message()函数:注意这里连接得是str对象,age和phone_num需要从int转为str
在这里插入图片描述
然后写main()函数,在这里每个人的信息是一行一行输入的
在这里插入图片描述

3.4打印文件information.txt中的内容。

在这里插入图片描述

四、实验数据记录(或仿真及软件设计)

程序(结果都在第三部分可见)
因为常见Unicode有3500个,直接贴上来显得篇幅累赘,可见附件代码

五、实验结果分析及回答问题(或测试环境及测试结果)

本次实验如果掌握了**random.randint()random.choice()**两个函数,其实不难,基本是循环语句。但是在本次实验中发现一个有趣的库Faker(

https://www.jianshu.com/p/20e41fc65dc8

),这个库是伪造数据生成器,里面包含这次实验所要求的模块,其中地址还是真实的,而不是我这次随机虚拟的地址。

  • 3
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是Python代码实现: ```python import random import csv # 生成随机姓名 def generate_name(): family_names = ['赵', '钱', '孙', '李', '周', '吴', '郑', '王', '冯', '陈', '褚', '卫', '蒋', '沈', '韩', '杨', '朱', '秦', '尤', '许', '何', '吕', '施', '张', '孔', '曹', '严', '华', '金', '魏', '陶', '姜', '戚', '谢', '邹', '喻', '柏', '水', '窦', '章', '云', '苏', '潘', '葛', '奚', '范', '彭', '郎', '鲁', '韦', '昌', '马', '苗', '凤', '花', '方', '俞', '任', '袁', '柳', '酆', '鲍', '史', '唐', '费', '廉', '岑', '薛', '雷', '贺', '倪', '汤', '滕', '殷', '罗', '毕', '郝', '邬', '安', '常', '乐', '于', '时', '傅', '皮', '卞', '齐', '康', '伍', '余', '元', '卜', '顾', '孟', '平', '黄', '和', '穆', '萧', '尹', '姚', '邵', '湛', '汪', '祁', '毛', '禹', '狄', '米', '贝', '明', '臧', '计', '伏', '成', '戴', '谈', '宋', '茅', '庞', '熊', '纪', '舒', '屈', '项', '祝', '董', '梁'] given_names = ['伟', '芳', '娜', '秀英', '敏', '静', '丽', '强', '磊', '军', '洋', '勇', '艳', '杰', '娟', '涛', '明', '超', '亮', '婷', '辉', '平', '鹏', '霞', '刚', '桂英', '桂芳', '建华', '玉兰', '欣', '桂林', '小红', '建国', '建军', '玉华', '晶', '玉珍', '国强', '文静', '建平', '玉梅', '欢', '瑞', '凯', '丹', '国平', '建设', '国庆', '琴'] return random.choice(family_names) + random.choice(given_names) # 生成随机性别 def generate_gender(): return random.choice(['男', '女']) # 生成随机年龄 def generate_age(): return random.randint(18, 25) # 生成随机成绩 def generate_score(): return random.randint(0, 100) # 批量生成随机信息 def batch_generate_info(num): info_list = [['姓名', '性别', '年龄', '成绩']] for i in range(num): name = generate_name() gender = generate_gender() age = generate_age() score = generate_score() info_list.append([name, gender, age, score]) return info_list # 将信息写入csv文件 def write_to_csv(info_list, filename): with open(filename, 'w', newline='') as file: writer = csv.writer(file) for row in info_list: writer.writerow(row) # 读取csv文件并将不及格同学信息存入以姓名命名的dat文件中 def read_csv_and_save_dat(): with open('info.csv', 'r') as file: reader = csv.reader(file) for row in reader: name = row[0] score = int(row[3]) if score < 60: with open(f'{name}.dat', 'a') as dat_file: dat_file.write(f'姓名:{name},性别:{row[1]},年龄:{row[2]},成绩:{row[3]}\n') # 批量生成随机信息并写入csv文件 info_list = batch_generate_info(50) write_to_csv(info_list, 'info.csv') # 读取csv文件并将不及格同学信息存入以姓名命名的dat文件中 read_csv_and_save_dat() ``` 以上代码会在当前目录下生成一个`info.csv`文件,同时根据不及格同学生成以姓名命名的dat文件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值