Python组合数据类型 实例示例

例:随机密码生成,编写程序,在26个字母大小写和9个数字组成的列表中随机生成10个8位密码

import random

def printpassword():
    
    print("您随机生成的10个密码为:")
    
    for i in range(0, 10):#遍历10次,实现"生成10个密码的要求"
    
        nums1, nums2, nums3 = [], [], []#定义3个序列
        for i in range(97, 123):#用ACSⅡ码生成26个小写字母
            nums1.append(chr(i))
        for i in range(65, 91):#用ACSⅡ码生成26个大写字母
            nums2.append(chr(i))
        for i in range(49, 58):#用ACSⅡ码生成9个数字
            nums3.append(chr(i))

        nums1.extend(nums2)#在nums1序列尾部加入26个大写字母
        nums1.extend(nums3)#在nums1序列尾部加入9个数字
        
        originpassword = random.sample(nums1, 8)#用random()函数在nums1序列中随机生成8个字符的密码
        for item in originpassword:
            print(item, end = "")#打印每串密码
        
        print(",它们是由{}组成的".format(originpassword))#使用format()对originpassword进行格式化处理  
    
printpassword()

例:重复元素判定,编写一个函数,接受列表作为参数,如果一个元素在列表中出现了不止一次,则返回True,但不要改变原来列表的值

def judge(num):
    
    num = eval(input("请输入一个列表"))#接受一个列表,用eval()对Python表达式的方式解析并执行字符串
    newnum = []#定义一个新列表
    
    for item in num:#遍历num序列中的所有元素
        if item not in newnum:#如果一个元素不在newnum中,那么它将成为newnum中的新元素
            newnum.append(item)
            
    if len(num) != len(newnum):#比较num序列和newnum序列的长度
        print("True! 您输入的列表中有元素不止出现了一次")#如果一个元素在列表中出现了不止一次,则返回True
    else:
        print("False! 您输入的列表中没有重复元素")#否则返回False
    
judge(num)

例:采用集合的无重复性改编任务2的程序,获得一个更快更简洁的版本

def judge(num):
    
    num = eval(input("请输入一个列表"))#接受一个列表,用eval()对Python表达式的方式解析并执行字符串
    
    if len(num) != len(set(num)):#采用集合的无重复性对原列表去重,从而比较长度
        print("True! 您输入的列表中有元素不止出现了一次")#如果一个元素在列表中出现了不止一次,则返回True
    else:
        print("False! 您输入的列表中没有重复元素")#否则返回False

judge(num)

例题来自《Python语言程序设计基础(第二版)》崇天等 著——第六章程序练习题

关于文章内容若有疑问,批评指正的建议或优化方法,欢迎私信或在文章下方回帖😊

专栏将会有间断更新,欢迎关注,和七月一起进步,今天七月在本专栏第二次打卡啦

创建这个专栏的初衷和目的:

1.关于代码段的不足之处合理采纳大家的建议,督促自己的学习及反思

2.和初学Python的小白们交流讨论学习路上的困惑与学习的tips,和大家共同进步

文末给大家推荐一个python快速上手的好办法:找个项目从头到位复现一遍,相信你在这个过程中会有更多的思考,加深对python语法的理解~

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值