zoukankan      html  css  js  c++  java
  • Python全栈工程师(exercises)

    # # 练习:
    # #   1. 用map函数求:
    # #     1**3 + 2**3 + 3 ** 3 + .... 9**3 的和
    
    
    def add_(x):
        return x ** 3
    
    
    print(sum(map(add_, range(1, 10))))
    
    # #   2. 用map函数求:
    # #     1**4 + 2**4 + 3 ** 4 + .... 20**4 的和
    
    
    def add_(x):
        return x ** 4
    
    
    print(sum(map(add_, range(1, 21))))
    
    # # 练习:
    # #   1. 将 1 ~ 20 的偶数用filter生成可迭代对象后将可迭代对象生成的数放入到列表L中
    
    
    def ous(x):
        if x % 2 == 0:
            return True
    
    
    L = list(filter(ous, range(1, 20)))
    print(L)
    
    
    # #   2. 写一个函数is_prime(x) 判断x是否是素数
    # #     用filter函数打印出: 20 ~ 30之间的全部素数
    
    
    def is_prime(x):
        for i in range(2, x):
            if x % i == 0:
                break
        return True
    
    
    for x in filter(is_prime, range(20, 30)):
        print(x)
    
    # #     练习:
    # #   names = ['Tom', 'Jerry', 'Spike', 'Tyke']
    # #   排序的依据为字符串的反序:
    # #            'moT'   yrreJ    ekipS    ekyT
    # #   结果:
    # #     ['Spike', 'Tyke', 'Tom', 'Jerry']
    names = ['Tom', 'Jerry', 'Spike', 'Tyke']
    
    
    def fz_number(x):
        return x[::-1]
    
    
    L = sorted(names, key=fz_number)
    print(L)
    
    # # 练习:
    # #   写函数 mysum(n)用递归方式实现求和
    # #     def mysum(n):
    # #         # 用递归方式求和
    # #         ...
    # #     print(mysum(100))  # 5050
    
    
    def mysum(x):
        if x == 1:
            return 1
        return x + mysum(x - 1)
    
    
    print(mysum(100))
    
    # # 练习:
    # #   1. 已知五位朋友在一起
    # #     第五位朋友比第四位朋友大2岁
    # #     第四位朋友比第三位朋友大2岁
    # #     第三位朋友比第二位朋友大2岁
    # #     第二位朋友比第一位朋友大2岁
    # #     第一位朋友说它10岁
    # #     写程序打印出第五位朋友 和第三位朋友 的年龄
    
    
    def age_2(x):
        if x == 1:
            return 10
        return 2 + age_2(x - 1)
    
    
    print(age_2(3))
    print(age_2(5))
    
    # #   2. 已知有列表:
    # #     L = [[3, 5, 8], 10, [[13, 14], 15, 18], 20]
    # #     1) 写一个函数print_list(lst) 打印出所有元素
    # #       print(L)  # 打印 3 5 8 10 13 14 ....
    # L = [[3, 5, 8], 10, [[13, 14], 15, 18], 20]
    
    
    def print_list(lst):
        for x in lst:
            if type(x) != list:
                    print(x)
            else:
                print_list(x)
    
    
    print_list(L)
    
    # #     2) 写一个函数sum_list(lst) 返回这个列表中所有元素的和
    # #       print(sum_list(L))  # 86
    # #     注:
    # #       type(x) 可以返回一个变量的类型
    # #       如:
    # #          >>> type(20) is int # True
    # #          >>> type([1, 2, 3]) is list # True
    L = [[3, 5, 8], 10, [[13, 14], 15, 18], 20]
    
    
    def sum_list(lst):
        s = 0
        for x in lst:
            if type(x) is list:
                s += sum_list(x)
            else:
                s += x
        return s
    
    
    print(sum_list(L))
    
    
    
    #          练习:
    #   1. 输入一个圆的半径,打印出这个圆的面积
    #   2. 输入一个圆的面积,打印出这个圆的半径 
    #   (要求用math模块内的函数和数据实现)
    
    import math
    r = float(input("please inout R:"))
    s = math.pi * r ** 2
    print("面积是:", s)
    
    s = float(input("please inout S:"))
    math.sqrt(s / 2)
    print(r)
    
    
    #  练习:
    #   写一个程序,输入你的出生日期,
    #     1) 算出你已经出生多少天?
    # #     2) 算出你出生的那天是星期几?
    
    import time
    
    year = int(input("please input:"))
    month = int(input("please input:"))
    day = int(input("please input:"))
    tuple_birth = (year, month, day, 0, 0, 0, 0, 0, 0)
    x = time.mktime(tuple_birth)
    t = time.time()
    second = t - x
    print("您已经出生", second / 60 / 60 // 24, '')
    t = time.localtime(x)
    weeks = {
        0: "星期一",
        1: "星期二",
        2: "星期三",
        3: "星期四",
        4: "星期五",
        5: "星期六",
        6: "星期日"
    }
    
    print("您出生的那天是:", weeks[t[6]])
    
    
    
    # 练习:
    #   1. 请编写函数fun 其功能是计算下列多项式的和:
    #     fn = 1 + 1/1! + 1/2! + 1/3! + 1/4! + .. + 1/n!
    #     (建义用数学模块的factorial实现)
    #   求当n 等于100时,fn的值
    #   看一下fn(100)的值是什么
    import math
    
    def fun(n):
        if n == 0:
            return 1
        return 1 / math.factorial(n) + fun(n - 1)
    
    
    print(fun(100))  # 2.71828
    
    #   2. 写一个程序,以电子时钟格式:
    #     HH:MM:SS格式显示时间
    #     要求每隔一秒变化一次
    
    #   3 写函数f(n)求下多项式的和
    #   fn = 1/1 - 1/3 + 1/5 - 1/7 + 1/9 .... 1/(2*n-1)的和
    #   求当n取值为1000000时,
    #     1) 打印 f(1000000) 的值
    #     2) 打印 f(1000000) * 4的值,看看是什么
    
    # 练习:
    #   1. 猜数字游戏
    #     随机生成一个 0~100之间的一个整数,用变量x绑定
    #     让用户输入一个数y,输出猜数字的结果:
    #       1) 如果y大于x则提示: "您猜大了"
    #       2) 如果y小于x则提示: "您猜小了"
    #       3) 如果y等于生成的数x,则提供示用户"恭喜您猜对了 "并退出猜数字
    #     循环重复上述步聚,直到猜对为止。
    #     猜对了,显示用户猜数字的次数,然后退出程序
    
    # 练习:
    #   1. 写一个闹钟程序,启动时设置定时时间,
    #     到时间后打印一句"时间到...." 然后退出程序
    
    #   2. 模拟斗地主发牌,扑克牌共54张
    #       黑桃('u2660'), 梅花('u2663'), 方块('u2665'), 红桃('u2666')
    #       A2-10JQK
    #       大王、小王
    #     三个人玩,每人发17张牌,底牌留三张
    #     输入回车, 打印出第1个人的17张牌
    #     输入回车, 打印出第2个人的17张牌
    #     输入回车, 打印出第3个人的17张牌
    #     输入回车, 打印三张底牌
    #   3. 修改学生信息管理程序,将原student_info.py 拆分为模块
    #     要求:
    #       1. 主事件循环放在main.py中
    #       2. show_menu 函数放在menu.py中
    #       3. 与学生操作相关的函数放在 student_info.py中
    # 练习:
    #   写一个函数 get_score() 来获取学生成绩,
    #     要求用户输入 1~100的整数,输果输入出现异常,返此函数返回0,
    #     否则返回用户输入的成绩
    #   示例:
    #     def get_score():
    #         ...
    #     score = get_score()
    #     print("学生的成绩是:", score)
    
    # 练习:
    #   写一个函数 get_age()用来获取一个人的年龄信息
    #   此函数规定用户只能输入1~140之间的整数,如果用户输入其它的数则直接触发ValueError类型的错误通知
    #      如果用户输入的年龄大于140,则触发
    #        ValueError("年龄超出了正常值")
    #      如果用户输入的年龄小于1,则触发
    #        ValueError("年龄太小...")
    #   def get_age():
    #       ...
    #   try:
    #       age = get_age()
    #       print("用户输入的年龄是:", age)
    #   except ValueError as err:
    #       print('用户输入的不是1~140的整数,获取年龄失败')
    #       print("原因是:", err)
    
    # 练习:
    #   1. 一个球从100米高空落下,每次落地后反弹高度是原高度的一半,再落下,
    #      1) 写程序算出皮球在第10次落地后反弹高度是多高?
    #      2) 打印出球共经过多少米的路程
    
    #   2. 分解质因数, 输入一个正整数,分解质因数,
    #     如:
    #       输入: 90
    #     则打印:
    #       '90=2*3*3*5'
    #       (质因数是指最小能被原数整除的素数(不包括1))
    # 练习:
    #   有一个集合:
    #     s = {'唐僧', '悟空', '八戒', '沙僧'}
    #     用 for语句来遍历所有元素如下:
    #       for x in s:
    #           print(x)
    #       else:
    #           print('遍历结束')
    #     请将上面的for语句改写为 用while语句和迭代器实现
    # 练习:
    #   写一个生成器函数 myeven(start, stop)
    #   此函数用来生成从 start开始到stop结束(不包含)区间内的一系列偶数
    #   def myeven(start, stop):
    #       ....
    
    #   evens = list(myeven(10, 20))
    #   print(evens)  # [10, 12, 14, 16, 18]
    #   for x in myeven(21, 30):
    #       print(x)  # 22, 24, 26, 28
    
    #   L = [x**2 for x in myeven(3, 10)]
    #   print(L)  # 16 36 64
    # 练习:
    #   已知有一个列表L
    #       L = [2, 3, 5, 7]
    #     用生成器表达式从此列表中拿到数,生成 列表中数据的平方
    
    #     gen = ......  # 此处用生成器表达式实现
    #     L2 = list(gen)  # L2 = [4, 9, 25, 49]
    
    # 思考:
    #    L = [2, 3, 5, 7]
    #    L2 = [x ** 2 for x in L]  # 列表推导式
    #    it = iter(L2)
    #    print(next(it))  # 4
    #    L[1] = 10
    #    print(next(it))  # 9
     
    # 练习:
    #   写一个程序,读入任意行的文字,当输入空行时结束输入
    #   打印带有行号的输入结果:
    #     如:
    #       请输入: hello<回车>
    #       请输入: world<回车>
    #       请输入: tarena<回车>
    #       请输入: <回车> # 直接回车结束输入
    #     输出如下:
    #       第1行: hello
    #       第2行: world
    #       第3行: tarena
    
    # 练习:
    #   写一个程序,从键盘输入一段字符串存入s变量
    #     1. 将此字符串转为字节串用变量b绑定,并打印出b
    #     2. 打印字符串s的长度和字节串b的长度
    #     3. 将b字节串再转换为字符串用变量s2 绑定,判断 s2 和 s是否相同?
    
    
    # 练习:
    #   1. 写一个生成器函数primes生成素数,
    #   此生成器函数为 primes(begin, end)
    #   如: [x for x in primes(10, 20)] 将得到列表
    #      [11, 13, 17, 19]
    #   2. 写一个生成器函数,生成斐波那契数列的前n个数
    #      1 1 2 3 5 8 13
    #       def fibonacci(n):
    #           ...
    #           yield...
    #     1) 输出前20个数:
    #       for x in fibonacci(20):
    #           print(x)
    #     2) 打印前40个数的和:
    #        print(sum(fibonacci(40)))
    #   3. 写程序打印杨辉三角(只打印6层)
    #         1
    #        1 1
    #       1 2 1
    #      1 3 3 1
    #     1 4 6 4 1
    #    1 5 10 10 5 1
  • 相关阅读:
    [git] push.default is unset
    [daily][qemu][libvirt] 使用libvirt管理qemu
    [development] __attribute__((weak))是干嘛的
    [daily] 使用左右对比查看diff 格式的文件
    [daily] 主机间目录共享
    [daily][qemu][kvm] 使用virtfs在host与guest之间共享目录
    [development][thrift] RPC框架 thrift
    [daily] 像tcpdump一样监听unix domain socket
    [daily][cgroup] 使用cgroup限制进程的CPU占用
    [qemu] qemu旧的net参数已经不再可用了,新的这样用。
  • 原文地址:https://www.cnblogs.com/ParisGabriel/p/9351486.html
Copyright © 2011-2022 走看看