• python 实验3


    姓名:66

    学号:

    专业年级:2021级

    班级:  

    实验的准备阶段

    (指导教师填写)

    课程名称

    Python开发与应用

    实验名称

    函数的应用

    实验目的

    1)能够编写简单函数,掌握不定长参数和返回值的应用;

    2)掌握mapreducefilter函数中lambda函数的应用;

    实验内容

    1)函数式编程,参数和返回值的应用;

    2mapreducefilter函数的应用;

    实验类型

    (打R)

    □验证性    □演示性     R设计性      £综合性

    实验的重点、难点

    实验重点:不定长参数和返回值的应用、内置函数以及lambda编程

    实验难点:内置函数以及lambda编程

    实验环境

    Python 3.8以上版本,pycharm+anaconda等集成开发环境

    实验的实施阶段

    实验步骤及实验结果

    1、实验题目:函数式编程

    (1)编写函数,检查获取传入列表或者元组对象的所有奇数位索引对应的元素。

    def ji(list):
    
        print(list[1::2])
    
      
    
    list = [0,1,2,3,4,5]
    
    ji(list)

    (2)编写函数,判断用户传入的对象(字符串、元组、列表)长度是否大于6。

    def l(a):
       
    if len(a)>6:
           
    print("用户传入的对象(字符串、元组、列表)长度大于6")
           
    return True
        else
    :
           
    print("用户传入的对象(字符串、元组、列表)长度不大于6")
           
    return False

    a = [1,2,3,4,5,6,7]
    b = [
    1,2,3,4,5]
    l(a)
    l(b)

    (3)编写函数,检查传入列表的长度,如果大于2,将列表的前两项内容返回给调用者。

    def l(a):
       
    if len(a)>2:
           
    return a[0:2]
       
    else:
           
    print("传入对象的长度小于2")

    a = [
    1,2,3]
    b = [
    1]
    print(l(a))
    l(b)

    (4)编写函数,计算传入函数的字符串中,数字、字母、空格以及其他内容的个数,并返回

    def g(a):
        ziMu =
    0
       
    shuZi = 0
       
    kongGe = 0
       
    qiTa = 0
       
    for i in a:
           
    if ord('A')<=ord(i)<=ord('z'):
                ziMu+=
    1
           
    elif ord('0')<=ord(i)<=ord('9'):
                shuZi+=
    1
           
    elif ord(i) == ord(' '):
                kongGe+=
    1
           
    else:
                qiTa+=
    1
       
    print(f"传入的对象中\n数字个数为:{shuZi}\n字母的个数为:{ziMu}\n空格的个数为:{kongGe}\n其他内容的个数为:{qiTa}")

    a =
    "Abc 1234 !@"
    g(a)

    (5)编写函数,返回两个数字参数中较大的那个数字

    def fun5(a,b):
       
    return max(a,b)

    a =
    3
    b = 5
    print(fun5(a,b))

    (6)编写函数,接收多个数字,求和并返回。

    def fun6(*args):
        sum =
    0
       
    for i in args:
            sum+=i
       
    return sum

    print(fun6(1,2,3))

    (7)编写函数,参数为一个字符串,返回这个字符串所有子串里面构成回文串的最大子串。

    def fun7(a) :
        result =
    ''
       
    for i in range(len(a)):
           
    for j in range(i,len(a)):
                value = a[i:j+
    1]
                value1 =
    ''.join(reversed(value))
               
    if value == value1 and len(value)>len(result):
                    result = value
       
    if result == '' or len(result)<2:
           
    return '该字符串不含回文串'
       
    else:
           
    return result

    print(fun7('12345456788765400'))

    (8)编写函数,输入不定长参数,将其中是整型的全部相加,忽略非整型的参数。(提示:判断是否是整型可以使用isinstance函数)

    def fun8(*args):
        sum =
    0
       
    for i in args:
           
    if isinstance(i,int):
                sum += i
       
    return sum

    print(fun8(1,2,3,'ad','wdafd',4))

    (9)编写函数,传入函数中多个实参(均为可迭代对象,如字符串、元组、列表、集合等),将每个实参的每个元素依次加入到函数的动态参数args里面,例如传入两个参数[1, 2, 3] (10, 20)最终args为(1,2,3,10,20)

    def fun9(*a):
        args = ()
       
    for i in a:
            args +=
    tuple(i)
       
    return args

    print(fun9([1, 2, 3],(10, 20)))

    (10)编写函数,传入函数中多个实参(均为字典),将每个实参的每个元素依次加入到函数的动态参数kwargs里面,例如传入两个参数{'one':1} {'two':2}, 最终kwargs为{'one': 1, 'two': 2}。

    def fun10(*a):
        kargs = {}
       
    for i in a:
            kargs.update(i)
       
    return kargs

    print(fun10({'one':1},{'two':2}))

    (11)解一元二次方程。func(a, b, c)求x1, x2

    源代码:

    import math
    def fun11(a,b,c):
        derta = b**
    2 - 4*a*c
       
    if derta > 0:
            x1 = (-b - math.sqrt(derta)) /
    2*a
            x2 = (-b + math.sqrt(derta)) /
    2*a
           
    return '两个解:' + str(x1) + ' ' + str(x2)
       
    elif derta == 0:
            x = -b /
    2*a
           
    return '一个解:' + x
       
    else:
           
    return '无解'

    print(fun11(1,3,-4))

    列出测试数据和实验结果截图:

    1. 实验题目:sorted 函数的应用

    请使用sorted函数实现,输入一个包含若干自然数的列表,输出这些自然数降序排列后的新列表。

    源代码:

    def fun(a):
       
    return sorted(a,reverse=True)

    print(fun([1,5,9,6,3,4,7,8]))

    列出测试数据和实验结果截图:

    3、请使用map函数实现:

    1)编写程序,输入一个自然数字符串,然后输出各位数字之和。

    def fun(a):
      
    return sum(map(int,a))

    print(fun('123456789'))

    2)编写程序,输入一个包含若干整数的列表,把列表中所有整数转换为字符串,然后输出包含这些字符串的列表。

    def fun(a):
       b =
    list(map(str,a))
      
    print(b)
      
    fun([
    1,2,3])

    3)编写程序,输入两个包含若干整数的等长列表,把这两个列表看作两个向量,输出这两个向量的内积。

    源代码:

    def fun(a,b):
      
    return sum(map(lambda x,y:x*y,a,b))

    print(fun([1,2,3],[4,5,6]))

    4.请使用reduce函数实现:

    1)编写程序,输入一个字符串,输出翻转(首尾交换)的字符串。

    from functools import reduce
    def fun(a):
      
    return reduce(lambda x,y:y+x,a)

    print(fun('123456'))

    2)编写程序,输入一个包含若干整数的列表,输出这些整数的乘积。

    源代码:

    from functools import reduce
    def fun(a):
      
    return reduce(lambda x,y:x*y,a)

    print(fun([1,2,3,4]))

    5.请使用filter函数实现:

    1)编写程序,输入一个包含若干任意数据的列表,输出该列表中等价于True的元素组成的列表

    def fun(a):
       b =
    filter(lambda x:x,a)
      
    print(list(b))

    fun([
    1,0,-1])

    2)编写程序,输入一个包含若干整数的列表,输出该列表中偶数组成的列表

    源代码:

    def fun(a):
       b =
    filter(lambda x: x % 2 == 0 , a)
      
    print(list(b))

    fun([
    1,2,3,4,5,6])

    列出测试数据和实验结果截图:

    1. 使用random模块,随机生成20以内的数字,用户有五次机会从键盘输入猜测的数字,猜大提示猜大了,猜小提示猜小了,若在规定次数内猜对则退出程序,否则继续猜数字直至次数用尽(编写函数实现)。

    源代码:

    import random
    def fun():
       a = random.randint(
    0,20)#能取到末尾值,是闭区间。
      
    for i in range(5):
          guess =
    int(input('猜一下目标数字(1到20之间):'))
         
    if guess < a:
            
    print('猜小了')
         
    elif guess > a:
            
    print('猜大了')
         
    else:
            
    print('恭喜你猜对了!目标数字是',guess)
            
    return
      
    print(f"很遗憾,你没有在规定次数内猜对。目标数字是 {a}")

    fun()

    列出测试数据和实验结果截图:

    实验结果的处理阶段

    实验结果的分析与总结

    对实验结果进行分析,列出错误及解决办法,回答问题,总结实验的心得体会,以及提出改进意见。

  • 相关阅读:
    Win10编译chrome
    【043】基于51单片机的篮球比赛积分计时系统Proteus仿真
    卡尔曼滤波应用在数据处理方面的应用
    javaScript贪吃蛇
    EEG 情绪标签 - 简介
    11.数据公式中使用2个 $$ a =b $$,是什么意思?
    【Python】标注库中os.path与pathlib中Path的比较
    云服务器安装elasticsearch 以及 kibana 附详细图文(全)
    嘉曼服饰上市破发,大跌16%:公司市值37亿 刘溦家族色彩浓厚
    vue源码之视图响应式更新
  • 原文地址:https://blog.csdn.net/qq_64628470/article/details/134428480