• Python全栈工程师 (exercises)


      ParisGabriel
     
                           Python人工智能从入门到精通
     
     
     
     
                           week summer   exercises
                        
     
    一周练习题
    # # 练习:
    # #   已知有列表:
    # #     L = [3, 5]
    # #     1) 用索引和切片等操作,将原列表改变为:
    # #     L = [1, 2, 3, 4, 5, 6]
    
    L = [3, 5]
    L[0: 2]
    L = [1, 2, 3, 4, 5, 6]
    print(L)
    
    #################################################################
    
    # #     2) 将列表反转,删除最后一个元素后打印此列表
    # #        ...
    # #        print(L)  # [6, 5, 4, 3, 2]
    
    L = [6, 5, 4, 3, 2]
    L.reverse()
    del L[-1]
    print(L)
    #################################################################
    
    # #        练习:
    # #   1. 写程序,让用户输入一些整数,当输入-1时结束输入,将这些数存于列表L中
    # #     1)  打印用户共输入了几个数?
    # #     2)  打印您输入的数的最大数是多少
    # #     3)  打印您输入的数的最小数是多少
    # #     4)  打印您输入的这些数的平均值是多少?
    
    L = []
    while True:
        a = int(input("please input -1 over :"))
        if a == -1:
            break
        L.append(a)
        print(len(L))
        print(max(L))
        print(min(L))
        print(sum(L) / len(L))
    #################################################################
    
    # # 练习:
    # #   输入多行文字,存入列表中,
    # #   每次输入回车后算一行
    # #     任意输入多行,当输入回车(即输入空行时结束输入)
    # #   1) 按原输入内容在屏幕上输出内容
    # #   2) 打印出您共输入了多少行文字
    # #   3) 打印出您共输入了多少个字符
    
    L = []
    i = 0
    while True:
        a = input("please input '' over:")
        if a == "":
            break
        L.append(a)
        i += len(a)
    
    for x in L:
        print(x)
    print(len(L))
    print(i)
    
    #################################################################
    
    # 练习:
    #   1. 有字符串"hello"
    #     请用此字符串生成:
    #       'h e l l o' 和 'h-e-l-l-o'
    #     答案:
    #       s = "hello"
    #       a = ' '.join(s)  # a = 'h e l l o'
    # #       b = '-'.join(s)  # b = 'h-e-l-l-o'
    
    a = "hello"
    print(" ".join(a))
    print("-".join(a))
    #################################################################
    
    # #   2. 写一个程序,让用户输入很多正整数,当输入小于零的数时结束输入,
    # #     1) 打印这些数中最大的一个数
    # #     2) 打印这些数中第二大的一个数
    # #     3) 删除最小的一个数
    # #     4) 打印剩余数的和
    
    L = []
    while True:
        a = int(input("please input -1 over:"))
        if a < 0:
            break
        L.append(a)
    L.sort()
    print(max(L))
    print(L[1])
    del L[-1]
    print(sum(L))
    
    #################################################################
    
    # # 练习:
    # #   用列表推导式生成1~100内奇数的列表
    # #   结果是: [1, 3, 5, 7, ..... 99]
    
    # #   L = [x for x in range(1, 100, 2)]
    
    L = [x for x in range(1, 100, 2)]
    #################################################################
    
    # #   示例:
    # #     生成1~00内的奇数的列表:
    # #   L = [x for x in range(1, 100) if x % 2 == 1]
    
    L = [x for x in range(1, 100) if x % 2 != 0]
    #################################################################
    
    # # 练习:
    # #   生成一个数值为 1 ~ 9的平方的列表,去掉所有的奇数的平方
    # #     L = [x**2 for x in range(1, 10)]
    
    L = [x ** 2 for x in range(0, 10, 2)]
    #################################################################
    
    # #     # L = [4, 16, 36, 64]
    # #     练习:
    # #   1. 已知有一个字符串
    # #      s = '100,200,300,500,800'
    # #      将其转化为整数的列表存于L列表中
    # #      L = [100, 200, 300, 500, 800]
    
    s = '100,200,300,500,800'
    L = []
    for x in s:
        L.append(s)
    print(L)
    
    #################################################################
    
    # #   2. 生成前40个斐波那契数(Fibonacci)
    # #       1  1  2  3  5  8  13  .....
    # #       要求将这些数保存在列表中
    # #       打印这些数
    
    L = [1, 1]
    while True:
        a = L[0] + L[1]
        L.append(a)
        if len(L) == 40:
            break
    print(L)
    #################################################################
    
    # #   3. 有一些数存于列表中:
    # #     L = [1, 3, 2, 1, 6, 4, 2, ..... 98, 82]
    # #     将列表中出现的数字存入到另一个列表L2中
    # #       要求: 重复出现多次的数字在L2列表中只保留一份(去重)
    
    L = [1, 3, 2, 1, 6, 4, 2, 98, 98, 82]
    L2 = []
    for x in L:
        if x not in L2:
            L2.append(x)
    print(s)
    #################################################################
    
    # #       写程序,实现以下要求:
    # #   1) 将如下数据形成一个字典seasons:
    # #     '键'    '值'
    # #      1      '春季有1, 2, 3月'
    # #      2      '夏季有4, 5, 6月'
    # #      3      '秋季有7, 8, 9月'
    # #      4      '冬季有10,11,12月'
    # #   2) 让用户输入一个整数,代表一个季度,
    # # 打印这个季度对应的信息,如果用户输入的信息不在字典内,则打印信息不存在
    
    d = {1: '春季有1, 2, 3月',
            2: '夏季有4, 5, 6月',
            3: '秋季有7, 8, 9月',
            4: '冬季有10,11,12月'}
    a = int(input("please input :"))
    for x in d:
        if a == x:
            print(d[a])
    else:
        print("no")
    #################################################################
    
    # # 练习:
    #   输入一段字符串,打印出这个字符串中出现过的字符的出现次数
    #   如:
    #     输入:
    #       abcdabcaba
    #     打印:
    #       a: 4次
    #       b: 3次
    #       d: 1次
    #       c: 2次
    #     注:
    #        不要求打印的顺序
    
    a = input("please input string:")
    d = {}
    for x in a:
        if x in d:
            d[x] += 1
        else:
            d[x] = 1
    for i in d:
        print(i, d[i])
    #################################################################
    
    # #        练习:
    # #   有字符串的列表如下:
    # #     L = ['tarena', 'xiaozhang', 'tyke']
    # #     用上述列表生成如下字典:
    # #       d = {'tarena': 6, 'xiaozhang': 9, 'tyke':4}
    # #     注:
    # #       字典的值为键的长度
    
    L = ['tarena', 'xiaozhang', 'tyke']
    d = {x: len(x) for x in L}
    print(d)
    #################################################################
    
    # #       练习:
    # #   1. 已知有两个等长的列表 list1  和 list2
    # #   以list1中的元素为键,以list2中的元素为值,生成相应的字典
    # #   list1 = [1001, 1002, 1003, 1004]
    # #   list2 = ['Tom', 'Jerry', 'Spike', 'Tyke']
    # #   生成的字典为:
    # #     {1001: 'Tom', 1002:'Jerry', .....}
    
    list1 = [1001, 1002, 1003, 1004]
    list2 = ['Tom', 'Jerry', 'Spike', 'Tyke']
    d = {list1[x]: list2[x] for x in range(len(list1))}
    print(d)
    #################################################################
    
    # 集合练习:
    #   经理有: 曹操,刘备,孙权
    #   技术员有: 曹操,孙权,张飞,关羽
    #   用集合求:
    #     1) 即是经理,也是技术员的有谁?
    #     2) 是经理,但不是技术员的人员都有谁?
    #     3) 是技术员,不是经理的都有谁
    #     4) 张飞是经理吗?
    #     5) 身兼一职的人都有谁?
    #     6) 经理和技术员共有几个人?
    
    L = {"曹操", '刘备', "孙权"}
    L1 = {"曹操", "孙权", "张飞", "关羽"}
    print(L & L1)
    print(L - L1)
    print(L1 - L)
    if "张飞" in L:
        print("yes")
    else:
        print("no")
    print(L1 ^ L)
    print(len(L1 | L))
    
    #################################################################
    
    # 练习:
    #   任意输入一些数字,存于列表L中。当输入负数时结束输入
    #   1) 打印这些数的和 
    #   2) 打印这些数有多少种(去重)
    #   3) 除重复的数字后,打印这些剩余数字的和
    
    #   提示,可以用集合去重
    
    L = []
    while True:
        a = int(input("please input integer:"))
        if a < 0:
            break
        L.append(a)
    print(sum(L))
    s = {x for x in L}
    print(len(s))
    print(sum(s))
    
    #################################################################
    
    #   练习:
    #   1. 写一个函数myadd, 此函数中的参数列表里有两个参数x, y
    #     此函数的功能是打印 x + y 的和
    
    #     def myadd(....):
    #         ....  # 注: .... 部是是我们要填写代码的地方
    
        # myadd(100, 200)  # 300
        # print("ABC", "123")  # ABC123
    
    
    def myadd(x, y):
        print(x + y)
    myadd(100, 200)
    print("ABC", "123")
    
    #################################################################
    
    
    # #   2. 写一个函数 mysum, 传入一个参数x代表终止整数,
    # #      打印出 1 + 2 + 3 + 4 + ..... + x的和
    # #     def mysum(x):
    # #         ....
    
    def mysum(x):
        i = 0
        for x in range(x + 1):
            i += x
        print(i)
    mysum(100)
    mysum(4)
    #################################################################
    
    # # 练习:
    # #   1. 写一个函数 mymax, 给函数传递两个参数,返回两个实参中最大的一个
    # #     def mymax(a, b):
    # #          ....
    
    #     v = mymax(100, 200)
    #     print('v =', v)  # v = 200
    #     print(mymax('ABC', 'abc'))  # abc
    
    def mymax(a, b):
        if a > b:
            return a
        else:
            return b
    v = mymax(100, 200)
    print('v =', v)
    print(mymax('ABC', 'abc'))
    #################################################################
    
    # #   2. 写一个函数 input_number
    # #       def input_number():
    # #           ....
    # #       此函数用来获取用户循环输入的整数,当用户输入负数时结束输入。
    # #       将用户输入的数字以列表的形式返回,再用内建函数max, min, 
    # #       sum取出户输入的最大值,最小值及和
    # #       L = input_number()
    # #       print(L)  # 打印此列表
    # #       print("用户输入的最大数是:", max(L))
    # #       print("用户输入的最小数是:", min(L))
    # #       print("用户输入的数的和是:", sum(L))
    
    def input_number():
        L = []
        while True:
            number = int(input("please input:"))
            if number < 0:
                break
            L.append(number)
        return L
    L = input_number()
    print(L)  # 打印此列表
    print("用户输入的最大数是:", max(L))
    print("用户输入的最小数是:", min(L))
    print("用户输入的数的和是:", sum(L))
    #################################################################
    
    # # 练习:
    # #    1. 写一个函数 print_odd, 打印从begin开始,到end结束(不包含end)内的全部的奇数
    # #       def print_odd(begin, end):
    # #           ....
    
    def print_odd(begin, end):
        for x in range(begin, end):
            if x % 2 == 1:
                print(x)
    print_odd(1, 10)
    
    print_odd(10, 20)
    
    #################################################################
    
    # #    2. 定义两个函数:
    # #       sum3(a, b, c) 用于返回三个数的和
    # #       pow3(x)  用于返回x的三次方
    # #       用以上函数计算:
    # #         1. 计算1的立方 + 2的立方 + 3的立方的和
    # #           即:  1**3 + 2**3 + 3**3的和 
    # #         2. 计算1 + 2 + 3 的和的立方,
    # #           即:(1+2+3)**3
    
    def sum3(a, b, c):
        return a + b + c
    def pow3(x):
        return x ** 3
    sum3(pow3(1), pow3(2),pow3(3))
    pow3(sum3(1, 2, 3))
    #################################################################
    
    #  练习:
    #   写一个函数minmax(a, b, c)  有三个参数,这回这三个参数中的最小值和最大值,
    #   要求,形成元组,最小值在前,最大值在后,如:
    
    #   def minmax(a, b, c):
    #       ...
    #   t = minmax(11, 33, 22)
    #   print(t)  # (11, 33)  # <<< 打印元组
    #   xiao, da = minmax(6, 5, 4)
    # #   print('最小值:', xiao, '最大值:', da)
    
    def minmax(a, b, c):
        z = a
        if z < b:
            z = b
        if z < c:
            z = c
        x = a
        if x > b:
            x = b
        if x > c:
            x = c
        return (x, z)
    t = minmax(11, 33, 22)
    print(t)
    xiao, da = minmax(6, 5, 4)
    print('最小值:', xiao, '最大值:', da)
    
    #################################################################
    
    # # 练习:
    # #   写一个函数 myadd, 此函数可以计算两个数的和,也可以计算三个数的和
    
    # #   def myadd(......):
    # #      ....
    # #   print(myadd(10, 20))  # 30
    # #   print(myadd(100, 200, 300))  # 600
    
    def myadd(a, *args):
        for x in args:
            a += x
        return a
    print(myadd(100, 200))
    print(myadd(100, 200, 300))
    
    
    #################################################################
    
    # #   2. 写一个函数,print_odd, 此函数可以传递一个实参,也可以传递两个实参,当传递一个实参时代表结束值
    # #   当传递两个实参时,第一个实参代表起始值,第二个实参代表结束值
    # #      打印出以此区间内的全部奇数,不包含结束数:
    
    # #   print_odd(10)  # 1 3 5 7 9
    # #   print_odd(11, 20)  # 11 13 15 17 19    
    
    def print_odd(a, b=None):
        for x in range(a, b):
            if x % 2 != 0:
                print(x)
    
    print_odd(10)
    print_odd(11, 20)
    #################################################################
    
    # #   练习:
    # #   写一个函数, mysum可以传入任意个实参的数字,返回所有实参的和
    
    #   def mysum(*args):
    #      ...
    #   print(mysum(1, 2, 3, 4))  # 10
    #   print(mysum(10, 20, 30))  # 60
    
    def mysum(*args):
        i = 0
        for x in args:
            i += x
        return i
    print(mysum(1, 2, 3, 4))
    print(mysum(10, 20, 30))
    #################################################################
    
    # # 练习:
    # #   写一个函数,mymax类似于 内键的函数max
    # #     详见:
    # #       >>> help(max)
    # #    仿造 max 写一信mymax函数,功能与max完全相同
    # #    (要求不允许调用max函数)
    # #    print(mymax([6, 8, 3, 5]))  # 8
    # #    print(mymax(100, 200))  # 200
    # #    print(mymax(1, 3, 5, 9, 7))  # 9
    
    def mymax(a, *args):
        if args is None:
            x = a[0]
            for i in a:
                if x > a[i]:
                    x = a[i]
            return x
        else:
            x = a
            for i in args:
                if x > i:
                    x = i
            return x
    print(mymax([6, 8, 3, 5]))
    print(mymax(100, 200))
    print(mymax(1, 3, 5, 9, 7))
    #################################################################
    
    # # 练习:
    # #   创建一个全局变量 L = []
    # #   写一个函数:
    # #     def input_number():
    # #         ....
    # #     此函数每次调用将从键盘读入一些数字追加到列表L中 
    # #   如:
    # #     L = []
    # #     def input_number():
    # #         ....
    # #     input_number()
    # #     print(L)  # [ .... 这些是您从键盘输入的数..]
    
    L = []
    def input_number():
        while True:
            number = int(input("pleae inout bumber:"))
            if number < 0:
                break
            L.append(number)
    
    #################################################################
    
    # # 练习:
    # #   1. 写一个函数isprime(x) 判断x是否为素数。如果是素数,返回True,否则返回False
    
    def isprime(x):
        for i in range(2, x):
            if x / i % 0:
                return False
                break
            else:
                return True
    #################################################################
    
    # #   2. 写一个函数prime_m2n(m, n) 返回从m开始,到n结束(不包含n)范围内的素数,返回这些素数的列表并打印
    # #     如:
    # #       L = prime_m2n(5, 10)
    # #       print(L)  [5, 7]
    
    def prime_m2(m, n):
        L = []
        for x in range(m, n):
            if isprime(x) is True:
                L.append(x)
        return L
    
    L = prime_m2(2, 5)
    print(L)
    #################################################################
    
    # #   3. 写一个函数pimes(n) 返回小于n的全部素数的列表,并打印这些素数
    # #     如:
    # #       L = primes(10)
    # #       print(L)  # [2, 3, 5, 7]
    # #     1) 打印100 以内的全部素数
    # #     2) 打印200 以内的全部素数的和
    
    
    def pimes(n):
        prime_m2(2, n)
    L = pimes(10)
    print(L)  # [2, 3, 5, 7]
    #################################################################
    
    # #   4. 编写函数 fn(n) 此函数返回下列级数的和:
    # #       fn(n) = 1/(1*2) + 1/(2*3) + .... 
    # #       + 1/(n*(n-1)) 的和
    # #     print(fn(100))
    
    def fn(n):
        i = 0
        for x in range(n):
            i += x / (x + 1)
    print(fn(100))
    #################################################################
    
    #           练习:
    #   写一个函数叫hello(name),部分代码如下:
    #   count = 0
    #   def hello(name):
    #       print('你好', name)
    #       ... 此处代码省略,需要同学们自己填写
    #       ... 此处代码需要改变全局变量来记录此函数曾经被调用过多少次.
    count = 0
    def hello(name):
        print("hello", name)
        count += 1
    hello('小张')
    hello('小李')
    print('hello 函数被调用', count, '')  # 2次
    
    #################################################################
    
    #   练习:
    #   1. 写一个lambda 表达式,判断这个数的2次方+1是否能被5整除,如果能被整除返回True, 否则返回False
    #      例:
    #         fa = lambda x: .....
    #         print(fa(2))  # True
    #         print(fa(4))  # False
    
    fa = lambda x: (x ** 2 + 1) / 5 % 0
    print(fa(2))
    print(fa(4))
    #################################################################
    
    #   2. 写一个lambda表达式,求两个变量的最大值
    #      例如:
    #         def mymax(x, y):
    #            ...
    #         mymax = lambda ...
    #         print(mymax(100, 200))  # 200
    mymax = lambda x, y: x if x > y else y
    print(mymax(100, 200))  # 200
    #################################################################
    
    # 练习:
    #   1. 给出一个整数n,写一个函数myfac来计算n!(n的阶乘)
    #     n! = 1 * 2 * 3 * 4 * ..... * n
    #     如:
    #       print(myfac(5))  # 120
    def myfac(n):
        x = 0
        for i in range(1, n + 1):
            x = i * (i + 1)
        return x
    print(myfac(5))
    #################################################################
    
    
    #   2. 给出一个整数n,写一个函数计算myfn(n):
    #       1 + 2**2 + 3**3 + .... + n**n的和
    #     如:
    #       print(myfn(10)) # ???
    
    def myfn(n):
        i = 1
        for x in range(2, n + 1):
            i += x ** x
        return i
    print(myfn(10))
    #################################################################
    
    #   3. 完全数:
    #      1 + 2 + 3 = 6 (6为完全数)
    #      1,2,3都为6的因数(因数是能被一个数x整除的整数为y,则y为x的因数)
    #      1 x 6 = 6
    #      2 x 3 = 6
    #      完全数是指除自身以外的所有因数相加之和等于自身的数
    #      求 4~5个完全数并打印出来
    #      答案:
    #        6
    #        28
    #        496
    #        ......
    
    def wq_bumber(x):
        s = 0
        for i in range(1, x):
            if x % i == 0:
                s += i
        if s == x:
            return True
        else:
            return False
    i = 0
    x = 0
    while i < 4:
        x += 1
        if wq_bumber(x) is True:
            print(x)
            i += 1

    一共39到题  写了 3个多小时 ............

  • 相关阅读:
    QTimer::singleShot
    Qt 建立带有子项目的工程
    Qt GlobalColor及其显示
    QT自定义图形项中的boundingRect()和shape()函数的理解
    QT setZValue() 函数
    C++中explicit的作用及用法
    QT中foreach的使用
    QT代码封装成dll和lib文件及使用
    Qt智能指针QScopedPointer
    Qt的四个常见的图像叠加模式
  • 原文地址:https://www.cnblogs.com/ParisGabriel/p/9314791.html
Copyright © 2020-2023  润新知