PYTHON第二次实验

实验2.1 批量生成姓名、家庭住址、电子邮箱等随机信息

一、 实验目的

二、 实验内容

​ 编写程序,生成200个人的模拟信息,包括姓名、性别、年龄、电话号码、家庭住址、电子邮箱地址,把生成的信息写入文本文件,每行存放一个人的信息,最后再读取生成的文本文件并输出其中的信息。

三、 实验步骤

(1)首先查找百家姓:

赵钱孙李,周吴郑王。冯陈褚卫,蒋沈韩杨。朱秦尤许,何吕施张。
孔曹严华,金魏陶姜。戚谢邹喻,柏水窦章。云苏潘葛,奚范彭郎。

(2)名字:

秀娟英华慧巧美娜静淑惠珠翠雅芝玉萍红娥玲芬芳燕彩春菊兰凤洁梅琳素云莲真环雪荣爱妹霞香月莺媛艳瑞凡佳嘉琼勤珍贞莉桂娣叶璧璐娅琦晶妍茜秋珊莎锦黛青倩婷姣婉娴瑾颖露瑶怡婵雁蓓纨仪荷丹蓉眉君琴蕊薇菁梦岚苑婕馨瑗琰韵融园艺咏卿聪澜纯毓悦昭冰爽琬茗羽希宁欣飘育滢馥筠柔竹霭凝晓欢霄枫芸菲寒伊亚宜可姬舒影荔枝思丽

随机从姓氏中抽取一个与名字中随机抽取一个组成名字即可:

def name():
    #随机生成姓名
    firstname = list('赵钱孙李周吴郑王冯陈褚卫蒋沈韩杨朱秦尤许何吕施张孔曹严华金魏陶姜戚谢邹喻柏水窦章云苏潘葛奚范彭郎')
    #百家姓
    girl_name=list('秀娟英华慧巧美娜静淑惠珠翠雅芝玉萍红娥玲芬芳燕彩春菊兰凤洁梅琳素云莲真环雪荣爱妹霞香月莺媛艳瑞凡佳嘉琼勤珍贞莉桂娣叶璧璐娅琦晶妍茜秋珊莎锦黛青倩婷姣婉娴瑾颖露瑶怡婵雁蓓纨仪荷丹蓉眉君琴蕊薇菁梦岚苑婕馨瑗琰韵融园艺咏卿聪澜纯毓悦昭冰爽琬茗羽希宁欣飘育滢馥筠柔竹霭凝晓欢霄枫芸菲寒伊亚宜可姬舒影荔枝思丽')

    first=random.choice(firstname)
    second=random.choice(girl_name)
    name=first+second
    return name
def get_sex():
    #随机生成性别
    sex='女男'
    a=random.choice(sex)
    return a

随机生成任意范围的整数有两种方法:

(1)用random库中的sample()函数:

index = random.sample(range(a,b),n)

(2)用numpy库中的random.randint()函数:

index = np.random.randint(a,b,size=n)

有一个不错的博客:

如果还想做的更好一点可以参考这篇博客:

字典后面加方括号的意思(其实就是取键值,是字典的基础操作啦):

def phone_number():
    #随机生成电话号码
    first='1'
    second=random.choice('34578')
    third=str(
    {
        '3': random.randint(0, 9),  # 从0-9之间随机生成一个整数int类型
        '4': random.choice([5, 7, 9]),
        '5': random.choice([0, 1, 2, 3, 4, 5, 7, 8]),
        '7': random.choice([2, 3, 5, 6, 7, 8]),
        '8': random.randint(0, 9),
    }[second])#取second所对应的键值
    last=str(random.randint(9999999,10000000))
    number=int(first+second+third+last)
    return number
def address():
    #随即生成家庭住址
    all_address=['北京市海淀区','上海市静安区','北京市朝阳区','广州市海珠区','广州市天河区','深圳市南山区','上海市黄浦区','上海市徐汇区','上海市长宁区','上海市虹口区']
    get_add=random.choice(all_address)
    return get_add
def mail(number):
    #随即生成电子邮箱
    houzhui=['@qq.com','@gmail.com','@163.com','@126.com']#邮箱后缀
    mail_add=str(number)+random.choice(houzhui)
    return mail_add

在测试的时候,出现编码相关的警告信息:

怎么写入文件:

(参考的)

with open("douban.txt","w") as f:
        f.write("这是个测试!")
with open("个人信息.txt", "w") as f:
    for i in range(a):
        f.write(str(all_people[i]))
        f.write('\n')

读写操作的介绍:

with open('个人信息.txt','r') as f:
    for line in f:
        print(line)

有关python的主函数:

(44条消息) python main()函数_skdgyf的博客-CSDN博客

import random
import string

'''
随机生成:姓名,性别,年龄,电话,住址,邮箱
写入文本
读取文本并输出
'''

def name():
    #随机生成姓名
    firstname = list('赵钱孙李周吴郑王冯陈褚卫蒋沈韩杨朱秦尤许何吕施张孔曹严华金魏陶姜戚谢邹喻柏水窦章云苏潘葛奚范彭郎')
    #百家姓
    girl_name=list('秀娟英华慧巧美娜静淑惠珠翠雅芝玉萍红娥玲芬芳燕彩春菊兰凤洁梅琳素云莲真环雪荣爱妹霞香月莺媛艳瑞凡佳嘉琼勤珍贞莉桂娣叶璧璐娅琦晶妍茜秋珊莎锦黛青倩婷姣婉娴瑾颖露瑶怡婵雁蓓纨仪荷丹蓉眉君琴蕊薇菁梦岚苑婕馨瑗琰韵融园艺咏卿聪澜纯毓悦昭冰爽琬茗羽希宁欣飘育滢馥筠柔竹霭凝晓欢霄枫芸菲寒伊亚宜可姬舒影荔枝思丽')
    first=random.choice(firstname)
    second=random.choice(girl_name)
    name=first+second
    return name

def get_sex():
    #随机生成性别
    sex='女男'
    a=random.choice(sex)
    return a

def phone_number():
    #随机生成电话号码
    first='1'
    second=random.choice('34578')
    third=str(
    {
        '3': random.randint(0, 9),  # 从0-9之间随机生成一个整数int类型
        '4': random.choice([5, 7, 9]),
        '5': random.choice([0, 1, 2, 3, 4, 5, 7, 8]),
        '7': random.choice([2, 3, 5, 6, 7, 8]),
        '8': random.randint(0, 9),
    }[second])#取second所对应的键值
    last=str(random.randint(9999999,100000000))
    number=int(first+second+third+last)
    return number

def address():
    #随机生成家庭住址
    all_address = ['北京市海淀区', '上海市静安区', '北京市朝阳区', '广州市海珠区', '广州市天河区', '深圳市南山区', '上海市黄浦区', '上海市徐汇区', '上海市长宁区', '上海市虹口区']
    get_add = random.choice(all_address)
    return get_add

def mail(number):
    #随即生成电子邮箱
    houzhui=['@qq.com','@gmail.com','@163.com','@126.com']#邮箱后缀
    mail_add=str(number)+random.choice(houzhui)
    return mail_add

a = int(input('请输入一个数字:'))
all_people = []
for i in range(a):
    people = []
    aname = name()
    asex = get_sex()
    aphone_number = phone_number()
    aaddress = address()
    amail = mail(aphone_number)

    people.append(aname)
    people.append(asex)
    people.append(aphone_number)
    people.append(aaddress)
    people.append(amail)

    all_people.append(people)

with open("个人信息.txt", "w") as f:
    for i in range(a):
        f.write(str(all_people[i]))
        f.write('\n')

with open('个人信息.txt','r') as f:
    for line in f:
        print(line)

实验 2.2 检测密码安全强度

一、 实验目的

  • 了解标准库中string中的常量。
  • 理解密码安全强度的概念。
  • 熟练运行逻辑运算符and,并理解惰性求值的特点。
  • 熟练运行字典结构

二、 实验内容

​ 一般地,可以作为密码字符的主要有数字、小写字母、大小字母和几个标点符号。密码安全强度主要和字符串的复杂程度有关系,字符串中包含的字符种类越多,认为其安全强度越高。按照这个标准可以把安全强度等级分为强密码、中高、中低、弱密码。其中强密码表示字符串中同时含有数字、小写字母、大写字母、标点符号这四类字符,而弱密码表示字符串中仅包含4类字符串中的一种。

​ 编写程序,输入字符串,输出字符串作为密码时的安全强度。

有关python3中标准库string的使用:

有一个我觉得讲的比较好的:

有一个官方的文档教程:

dir()函数:

(45条消息) python dir()函数使用_dreamzuora的博客-CSDN博客_python中dir函数用法

isdecimal():判断给定字符串是否全为数字

isupper():判断给定的字符串是否全为大写
islower():判断给定的字符串是否全为小写

string.punctuation:找出字符串中的所有的标点(针对英文)

password=input('请输入一串密码:')
score=[0,0,0,0]
for i in password:
    if i.isdecimal():
        score[0]=1
    elif i.islower():
        score[1]=1
    elif i.isupper():
        score[2]=1
    elif i in string.punctuation:
        score[3]=1

sumall=sum(score)

if sumall==1:
    print('弱密码')
elif sumall==2:
    print('中低密码')
elif sumall==3:
    print('中高密码')
elif sumall==4:
    print('强密码')

Original: https://blog.csdn.net/qq_45831209/article/details/121877143
Author: L木木vic
Title: PYTHON第二次实验

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/758361/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球