一、实验目的
了解Python标准库string中的字符串常量,熟练运用标准库random中的函数,了解汉字编码格式,熟练掌握文本文件操作方法。
二、实验所用仪器(或实验环境)
Python 3.6及以上版本
三、实验基本原理及步骤(或方案设计及理论计算)
- 1.了解并搜索常用汉字的Unicode编码表;比如下面的4位十六进制数字表示的Unicode字符’\u7684\u4e00\u4e86\u662f\u6211\u4e0d\u5728\u4eba\u4eec’分别对应的汉字是“的一了是我不在人们”。了解Unicode编码,可以让我们生成想要的姓名和家庭住址。
- 2.分别实现5个函数,用于随机生成姓名(2-4个汉字)或地址(10-30个汉字),性别(男或者女),年龄(18-99),电话号码(11位),电子邮箱地址(常见域名后缀包括.com,.org,.net,.cn等,可以扩展)。
- 3.写一个main()函数,将信息写入文件 information.txt。
-
- 打印文件information.txt中的内容。
四、实验数据记录(或仿真及软件设计)
#五个函数:
def char(length):
name=""
for i in range(length):
#4E00-9FA5
name= name+chr(random.randint(0x4E00, 0x9FA5))
return name
#随机生成姓名(2-4个汉字)
print(char(random.randint(2,4)))
#随机生成地址(10-30个汉字)
print(char(random.randint(10,30)))
#性别
def sex():
all_sex=["\u7537","\u5973"]
x=random.choice(all_sex)
return x
print(sex())
#年龄
def age():
return random.randint(18,99)
print(age())
#电话号码
def phone():
phone=""
for i in range(11):
phone=phone+str(random.randint(0,9))
return phone
print(phone())
#电子邮箱
def mail(L):
qianmian=""
mail_address=["163.com","qq.com","77.cn","qw.cn","fad_a.net","15a.net","4fad5.cn"]
for i in range(0, L):
qianmian = qianmian + random.choice(string.ascii_letters + string.digits)
mail=qianmian+'.'+random.choice(mail_address)
return mail
print(mail(random.randint(4,10)))
以上运行截图:
输入到一个文件中:
num=int(input("希望生成多少个个人信息:"))
information=[]
for i in range(0,num):
s=str(char(random.randint(2,4))+","+sex()+","+str(age())+","+phone()+","+char(random.randint(10,30))+","+mail(random.randint(4,10)))+"\n"
print(s)
information.append(s)
#print(information[i])
with open("person_information.txt","w",encoding="GBK") as fp1:
string="Name Sex Age TelNo Address Email \n"
fp1.write(string)
for i in range(0,num):
fp1.write(information[i],)
截图:
五、实验结果分析及回答问题(或测试环境及测试结果)
本次实验不是很难,但是有一点疑问:
上面的这段代码在file外可以正常执行,但是
会出错,找了半天也没发现原因。
最后用列表存储绕过这个错误。