• 2022年《一生一系统作业》python练习题


    1-1 用python代码实现使用列表推导式,要求生成包含10个数字6的列表。

    def t1_1():
        print('1-1: list = ', [6 for i in range(10)])
    
    • 1
    • 2

    1-2 用python代码实现列表a_list中每隔4个元素取2个,并将提取到的元素组成新列表b_list。

    def t1_2(a_list=None):
        if a_list is None:
            a_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
        b_list = [a_list[i:i + 2] for i in range(4, len(a_list), 6)]  # 先从a_list中每隔4个元素提取出2各元素组成一个二维列表
        b_list = [i for j in b_list for i in j]  # 把二维列表转换成一维列表
        print('1-2: b_list = ', b_list)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    1-3 编写程序,将列表num=[1,2,3,4,5,6,7,8,9]中的偶数变成它的平方,奇数保持不变。

    def t1_3():
        num = [1, 2, 3, 4, 5, 6, 7, 8, 9]
        for i in range(len(num)):
            if num[i] % 2 == 0:
                num[i] = num[i] * num[i]
        print('1-3: num = ', num)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    1-4 编写程序,有一列表num=[11,22,33,44,55,66,77,88,99,90],将其中所有大于66的数保存至字典的第一个键k1所对应的值中,将小于66的数保存至第二个键k2的值中。

    def t1_4():
        num = [11, 22, 33, 44, 55, 66, 77, 88, 99, 90]
        dic = {}
        list_1 = []  # 大于66的数
        list_2 = []  # 小于66的数
        for i in num:
            if i > 66:
                list_1.append(i)
            elif i < 66:
                list_2.append(i)
        dic.setdefault('k1', list_1)
        dic.setdefault('k2', list_2)
        print('1-4: dic = ', dic)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    1-5 编写程序,设计一个字典,将用户输入内容作为“键”,输出字典中对应的“值”,如果用户输入的“键”不存在,则提示“您输入的键不存在!”。

    def t1_5():
        d = {1: '一', 2: '二', 3: '三'}
        a = int(input("请输入要查询的键: "))
        if a not in list(d.keys()):
            print('用户的键不存在')
        else:
            print(f'字典中{a}键对应的值为{d.get(a)}')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    1-6 输入两个集合A和B,分别输出它们的交集、并集和差集。

    def t1_6():
        A = set(input('请输入集合A: '))
        B = set(input('请输入集合B: '))
        b = A | B  # 并集
        j = A & B  # 交集
        c = A - B  # A - B 差集
        cc = B - A  # B - A 差集
        print('1-6: ', '\n交集: ', j, '\n并集: ', b, '\nA - B 差集: ', c, '\nB - A 差集: ', cc)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    1-7 编写程序,实现删除列表重复元素的功能。

    def t1_7(a=None):
        if a is None:
            a = [1, 1, 1, 2, 2, 2, 3, 3, 3]
        a = set(a)  # 强制类型转换成集合
        a = list(a)  # 强制类型转换成列表
        print('1-7: ', a)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    1-8 编写程序,统计字符串中每个字母的出现次数(字母忽略大小写),并输出成一个字典。例如{‘a’:4,‘b’:2}。

    def t1_8():
        d = str(input("请输入有由英文字母组成的字符串:")).lower()  # 输入一串字符串,并全部转换成小写字母的形式
        c = dict(zip([i for i in d], [0 for i in range(len(d))]))  # 创建一个原来字符串中含有字母的字典,初始次数都是0。
        for st_r in d:
            c[st_r] += 1
        print(c)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    1-9 已知字符串 a = “aAsmr3idd4bgs7Dlsf9eAF”,要求如下

    • (1)将a字符串的数字取出,并输出成一个新的字符串。
    • (2)去除a字符串多次出现的字母,仅留最先出现的一个。例’abcabb’,经过去除后,输出 ‘abc’。
    • (3)将a字符串反转并输出。例:‘abc’的反转是’cba’。
    • (4)输出a字符串出现频率最高的字母。
    def t1_9():
        a = "aAsmr3idd4bgs7Dlsf9eAF"
        # (1)将a字符串的数字取出,并输出成一个新的字符串。
        def fun1():
            new_str = ""
            for i in a:
                if i.isdecimal():  # 判断单个字符是否为数字。
                    new_str += i
            print('t1_9: (1) ', new_str)
    
    # (2)去除a字符串多次出现的字母,仅留最先出现的一个。例'abcabb',经过去除后,输出 'abc'。
        def fun2():
            a_list = list(a)
            set_list = list(set(a_list))
            set_list.sort(key=a_list.index)  # 根据原来的列表的索引进行排序。
            print('t1_9: (2) ', ''.join(set_list))  # 把去重后的列表进行拼接成新的字符串
    
    # (3)将a字符串反转并输出。例:'abc'的反转是'cba'。
        def fun3():
            print('t1_9: (3) ', a[::-1])  # 使用字符串的切片操作把,步长设置为-1就可以,使字符串倒数输出
    
    # (4)输出a字符串出现频率最高的字母。
        def fun4():
            p = ([(x, a.count(x)) for x in set(a)])  # 作为列表形式统计每个字符出现次数,列表中的元素都是以元组的形式存储着。
            p.sort(key=lambda k: k[1], reverse=True)  # 使用匿名函数lambda使,列表中,都以元组中的第二个值来进行排序。
            print('t1_9: (4) ', p[0][0])
    
        fun1()
        fun2()
        fun3()
        fun4()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31

    2-1 编写程序,计算分段函数:f(x)={2x+1 x≥1 4x⁄(x-1) x<1)}

    def t2_1(x):
        if x >= 1:
            return 2 * x + 1
        else:
            return 4 * x / (x - 1)
    
    • 1
    • 2
    • 3
    • 4
    • 5

    2-2 众所周知,闰年的条件是能被4整除但不能被100整除,或者能被400整除,请编程判断某一年是否为闰年。

    def t2_2(year):
        if (year % 4 == 0 and year % 100 != 0) or year % 400 == 0:
            print("这是闰年!")
        else:
            print("这不是闰年!")
    
    • 1
    • 2
    • 3
    • 4
    • 5

    2-3 编写程序,分别用while循环和for循环计算整数1至100的和。

    def t2_3():
        # while循环
        i = 0
        sum = 0
        while i < 100:
            i = i + 1
            sum = sum + i
        print('t2_3 : while循环的值', sum)
        # for循环
        j = 0
        for i in range(1, 101):
            j = j + i
        print('t2_3 : for循环的值', j)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    2-4 编写程序,通过输入某个整数n(n>0),分别用while循环和for循环计算n!。

    def t2_4():
        n = int(input("请输入一个整数:"))
        sum = 1
        for i in range(1, n + 1):
            sum *= i
        print("t2-4: for循环的阶乘:", sum)
        sum = 1
        i = 1
        while (i <= n):
            sum *= i
            i = i + 1
        print("t2-4: while循环的阶乘:", sum)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    2-5 编写程序,计算Sn=2-4+6-8+10-12+…。

    def t2_5():
        s = 0
        for i in range(1, 51):
            if i % 2 == 0:
                s = s - 2 * i
            else:
                s = s + 2 * i
        print('t2-5: Sn = ', s)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    2-6 编写程序,通过输入a,b,c三个系数的值,计算一元二次方程ax^2+bx+c=0的解。

    def t2_6():
        import math
        a = int(input('请输入a的值: '))
        b = int(input('请输入b的值: '))
        c = int(input('请输入c的值: '))
        delta = b * b - 4 * a * c  # 求delta
        if delta >= 0:
            x1 = (-b + math.sqrt(delta)) / (2 * a)
            x2 = (-b - math.sqrt(delta)) / (2 * a)
            if x1 == x2:
                print(f"t2_6: 该方程的解为: x1 = x2 = {x1}")
            else:
                print(f"t2_6: 该方程的解为: x1 = {x1} x2 = {x2}")
        else:
            print("t2_6: 该方程的无解!")
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    2-7 编写程序,通过输入一行字符,分别统计出其中的数字、英文字母、空格和其他字符的个数。

    def t2_7():
        import re
        put_in = input('请输入一行字符串: ')
        str_list = re.findall('[a-zA-z]', put_in)  # 用正则表达式来对字符串查找内容,返回为列表。
        num_list = re.findall('[0-9]', put_in)
        space_list = re.findall(' ', put_in)
        other_list = re.findall('[^a-zA-z 0-9]', put_in)
        print(f't2-7: \n英文字母的个数为: {len(str_list)}\n空格的个数为: {len(space_list)}\n其它字符个数为: {len(other_list)}\n数字的个数为: {len(num_list)}')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    2-8 “水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个:“水仙花数”,1^3 + 5^3 + 3^3 = 153。请编写程序输出3位水仙花数。(可使用math模块中的pow()方法)

    def t2_8():
        i = int(input('请输入一个三位数: '))
        b = i // 100  # 百位数字
        s = i // 10 % 10  # 十位数字
        g = i % 10  # 个位数字
        if b * b * b + s * s * s + g * g * g== i:
            print('t2_8: 这是水仙花数!')
        else:
            print('t2_8: 这不是水仙花数!')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    2-9 编写程序计算鸡兔同笼问题,设鸡、兔共有40只,脚90只,请计算鸡、兔各有多少只。

    def t2_9():
        for j in range(0, 41):
            if 2 * j + (40 - j) * 4 == 90:
                print(f't2-9: 鸡有: {j} 个, 兔有: {40-j} 个')
    
    • 1
    • 2
    • 3
    • 4

    2-10 编写程序,输入一个小于200的整数,对其进行因式分解。例如,10=2*5。

    def t2_10():
        num = int(input('请输入一个小于200的数: '))
        x = 1
        flag = True
        while num > 1 and num < 200:
            print(f"t2-10: {num} = ", end='')
            while num != 1:
                x += 1
                while num % x == 0:
                    num /= x
                    if flag:
                        flag = False
                        print(x, end='')
                    else:
                        print(f' * {x}', end='')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    2-11 一球从100米高度自由落下,每次落地后反跳回原高度的一半,再次落下,请编写程序计算第10次落地时,共经过多少米?

    def t2_11():
        h = 100   # 高度为100米
        s = 0
        i = 1
        while i < 10:
            s += h + h / 2
            h /= 2
            i += 1
        print(f't2-11: 高度为: {s}')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    2-12 有一分数序列:2/1,3/2,5/3,8/5,13/8/,21/13….,编写程序求出这个数列的前20项之和。

    def t2_12():
        a = 2.0
        b = 1.0
        s = 0
        for i in range(1, 20 + 1):
            s += a / b
            a, b = a + b, a    # 按照斐波那契数列递归往下取数。
        print("t2-12: 前20项和为:", s)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    2-13 编写程序,求1+2!+3!+ ….+20!的和。

    def t2_13():
        s = 0
        t = 1
        for n in range(1, 21):
            t *= n
            s += t
        print(f't2-13: 1+2!+3!+ ….+20! 的值为: {s}')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    2-14 编写程序,输入一个不多于五位的正整数,计算它是几位数,并逆序打印出各位数字。

    def t2_14():
        x = int(input('请输入一个小于5位的数: '))
        a = x // 10000
        b = x % 10000 // 1000
        c = x % 1000 // 100
        d = x % 100 // 10
        e = x % 10
        if a != 0:
            print('t2-14: 该数是五位数, 其倒序为: ' + str(e) + str(d) + str(c) + str(b) + str(a))
        elif b != 0:
            print('t2-14: 该数是四位数, 其倒序为: ' + str(e) + str(d) + str(c) + str(b))
        elif c != 0:
            print('t2-14: 该数是三位数, 其倒序为: ' + str(e) + str(d) + str(c))
        elif d != 0:
            print('t2-14: 该数是二位数, 其倒序为: ' + str(e) + str(d))
        else:
            print('t2-14: 该数是个位数, 其倒序为: ' + str(e))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    2-15 编写程序,输入一个五位数,判断它是不是回文数。回文数是指个位与万位相同,十位与千位相同,如12321是回文数。

    def t2_15():
        s = input('请输入一个五位数: ')
        if s[0] == s[4] and s[1] == s[3]:
            print('t2-15: 该数是回文数!')
        else:
            print('t2-15: 该数不是回文数!')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    主函数代码如下,主要是测试以上的代码,运行结果是否符合要求。

    if __name__ == '__main__':
        # t1_1()
        # t1_2()
        # t1_3()
        # t1_4()
        # t1_5()
        # t1_6()
        # t1_7()
        # t1_8()
        # t1_9()
        # t2_3()
        # t2_4()
        # t2_6()
        # t2_5()
        # t2_7()
        # t2_8()
        # t2_9()
        # t2_10()
        # t2_11()
        # t2_12()
        # t2_13()
        # t2_14()
        # t2_15()
        pass
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
  • 相关阅读:
    信奥赛一本通题解目录(未做完)
    为什么 Python 适合初学者?如何开始学习 Python?
    可执行文件的装载与进程
    Web容器和Servlet容器、Spring和SpringMvc
    聊聊Netty那些事儿之从内核角度看IO模型
    FFmpeg--packet数据包和frame数据帧的区别
    MySQL十秒插入百万条数据
    HTTP状态码206报错
    [Prob] (Coupon collector)
    C++标准模板库(STL)-map介绍
  • 原文地址:https://blog.csdn.net/qq_52553510/article/details/126311327