• Python之作业(三)


    Python之作业(三)

    练习题

    • 给出3个整数,使用if语句判断大小,并升序输出
    • 有一个列表lst = [1,4,9,16,2,5,10,15],生成一个新列表,要求新列表元素是lst相邻2项的和
    • 随机生成100个产品ID,ID格式如下
      • 顺序的数字6位,分隔符点号,10个随机小写因为字符
      • 例如:000005.xcbaaduixy

    1. 给出3个整数,使用if语句判断大小,并升序输出

    x = [1, 5, 3] #6种可能,索引:0,1,2 0,2,1 1,0,2 1,2,0 2,0,1 2,1,0
    y = []
    if x[0] > x[1]: # 条件0比1大进入
        if x[1] > x[2]: # 1大于2进入
            y = [2, 1, 0]
        else: # 1<2 2>1
            if x[0] > x[2]:
                y = [1, 2, 0]
            else: # 1<2的另一种可能
                y = [1, 0, 2]
    else: # 条件0比1小
        if x[0] > x[2]:
            y = [2, 0, 1]
        else:
            if x[1] > x[2]:
                y = [0, 2, 1]
            else:
                y = [0, 1, 2]
    
    # print([x[i] for i in y]) # 列表解析式
    print((list(x[i] for i in y))) # 生成器表达式
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    2.有一个列表lst = [1,4,9,16,2,5,10,15],生成一个新列表,要求新列表元素是lst相邻2项的和

    x = [1, 3, 5]
    y = []
    for i in range(len(x) -1):
        y.append(x[i] + x[i+1])
    
    print(y)
    # 返回结果:[4, 8]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    x = [1, 3, 5]
    y = []
    y = [x[i] + x[i+1] for i in range(len(x) -1)]
    # 列表解析式的写法
    print(y)
    # 返回结果:[4, 8]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    注释:不能被规模影响,先试3个数,3个数相邻加没问题再多也没问题了。

    x = [1, 4, 9, 16, 2, 5, 10, 15]
    y = []
    y = [x[i] + x[i+1] for i in range(len(x) -1)]
    # 列表解析式的写法
    print(y)
    # 返回结果:[5, 13, 25, 18, 7, 15, 25]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    3.随机生成100个产品ID,ID格式如下

    顺序的数字6位,分隔符点号,10个随机小写英文字符

    例如:000005.xcbaaduixy

    import random
    x = [chr(0x61 + i) for i in range(26)]
    for i in range(10):
    	print("{:0>6}.{}".format(i+1, "".join(map(str, random.choices(x, k=10)))))
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    代码分析

    需求是生成产品ID,有两部分前面是顺序的数字6位,分隔符点号,后面是10个随机小写英文字符。
    1、先取出10位连续的英文字符可以重复取。

    x = 'abcdefghijklmnopqrstuvwxyz'
    
    # 第1种:额,手敲的,因为变量设定一次多次取,手敲也不失为一种办法。
    
    • 1
    • 2
    • 3
    import string
    print(string.ascii_lowercase)
    
    # 第2种:导入string模块,使用ascii_lowercase方法获取
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    alphabet = "".join(chr(i) for i in range(0x61, 0x61+26))
    alphabet
    
    # 第3种:直接去ascii编码表的内容
    
    • 1
    • 2
    • 3
    • 4
    import random
    x = [chr(0x61 + i) for i in range(26)]
    for i in range(10):
        print("{:0>6}.{}".format(i+1, "".join(map(str, random.choices(x, k=10)))))
    
    # 这是我自己写的取值方法
    代码解析:
    1、先导入random模块
    2、定义一个x变量,内容是取Ascii码表的0x61 + i的值也就是26个字母
    3、定义一个for循环,迭代对象是range(10),按题目要求应该写range(1, 101)
    4print,format函数,第一个大括号中{:0>6}的意思是右对齐空格补零总空格最多6个,然后使用join方法连接,map变形一下,在用random
    	模块的choices方法取x的值,k=10指定取10次。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    在这里插入图片描述

  • 相关阅读:
    网页元素定位秘籍:从HTML探秘到Python自动化实战20240626
    算法 比较版本号-(同向双指针)
    力扣530 补9.12
    项目:TCP在线云词典
    转:关于征集第三批工业软件新场景新技术难题解决思路的公告
    什么是HTML?
    XTU-OJ 1215-A+B V
    pycharm安装opencv-python报错
    星上SAR实时处理调研1
    【初试404分】杭电843学长经验分享
  • 原文地址:https://blog.csdn.net/weixin_41224474/article/details/134041606