66 函数精彩案例

news2024/9/24 1:14:58

1 编写函数,接收任意多个实数,返回一个元组,其中第一个元素为所有参数的平均值,其他元素为所有参数中大于平均值的实数。

def func(*parameter):
    avg = sum(parameter) / len(parameter)  # 平均值
    g = [i for i in parameter if i > avg]  # 列表推导式
    return (avg,) + tuple(g)


print(func(12, 8, 45, 22, 76, 89, 15))

在这里插入图片描述

2 编写函数,接收字符串参数,返回一个元组,其中第一个元素为大写字母个数,第二个元素为小写字母个数。

def func(s):
    get = [0, 0]
    for i in s:
        if i.islower():
            get[1] += 1
        elif i.isupper():
            get[0] += 1
    return tuple(get)


print(func('Bee Keepers Take Honey From Their Hives'))

在这里插入图片描述

3 编写函数,接收包含 n 个 整数的列表 s 和一个整数 k(0 ≤ k < n)作为参数返回新列表。处理规则为:将列表 s 中下标 k (不包括 k)之前的元素逆序,下标 k (包括 k)之后的元素逆序,然后将整个列表 s 中的所有元素逆序。(将列表循环左移 k 位的算法实现)

def func(s, k):
    x = s[k - 1::-1]
    y = s[:k - 1:-1]
    return list(reversed(x + y))


v = [28, 31, 30, 29, 16, 21]
print(func(v, 3))

在这里插入图片描述

def func(s, k):
    temp = s[:]
    for i in range(k):
        # pop(0)操作在列表首部删除元素,这会引起大量元素的移动
        temp.append(temp.pop(0))
    return temp


v = [28, 31, 30, 29, 16, 21]
print(func(v, 3))

在这里插入图片描述

# 使用切片可以直接实现,可以达到最快的速度
def func(s, k):
    return s[k:] + s[:k]


v = [28, 31, 30, 29, 16, 21]
print(func(v, 3))

在这里插入图片描述

Python 标准库 collections 提供的双端队列可以直接实现循环左移位和右移位,更加灵活方便。

from collections import deque

v = [28, 31, 30, 29, 16, 21]
Q = deque(v)  # 创建双端队列
Q.rotate(3)  # 循环右移位
print(Q)
Q.rotate(-3)  # 循环左移位
print(Q)

1

4 编写函数,接受一个整数 t 作为参数,打印杨辉三角前 t 行。

def yanghui_triangle(t):
    print([1])
    line = [1, 1]
    print(line)
    for i in range(2, t):
        get = []
        for j in range(0, len(line) - 1):
            get.append(line[j] + line[j + 1])
        line = [1] + get + [1]
        print(line)


yanghui_triangle(7)

在这里插入图片描述

5 编写函数,接收两个正整数作为参数,返回一个元组,其中第一个元素为最大公约数,第二个元素为最小公倍数。

def func(x, y):
    z = x * y
    while x % y != 0:
        x, y = y, x % y
    return y, z // y


print(func(18, 24))

在这里插入图片描述

Python 标准库 fractions 中提供了 gcd() 函数用来计算最大公约数。标准库 math 也提供了计算最大公约数的函数 gcd()。

def func(x, y):
    import math
    i = math.gcd(x, y)
    return i, (x * y) // i


print(func(18, 24))

在这里插入图片描述

6 编写函数,计算形如 a+aa+aaa+aaaa+…+aaa…aaa 的表达式的值,其中 a 为小于 10 的自然数。

# C
def func(v, n):
    get, t = 0, 0
    for i in range(n):
        t = t * 10 + v
        get += t
    return get


print(func(3, 4))

在这里插入图片描述

# Pythonic
def func(v, n):
    v = str(v)
    get = sum(eval(v * i) for i in range(1, n + 1))
    return get


print(func(3, 4))

在这里插入图片描述

7 编写函数,模拟二分查找。

def binarySearch(s, v):
    low = 0
    high = len(s) - 1
    while low <= high:
        mid = (low + high) // 2
        if v == s[mid]:
            return mid
        elif v > s[mid]:
            low = mid + 1
        elif v < s[mid]:
            high = mid - 1
    return False


from random import randint

s = [randint(0, 20) for i in range(10)]
s.sort()
print(s)
print(binarySearch(s, 18))
print(binarySearch(s, 8))

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1989675.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

哈萨克语驾考学习软件求推荐?

哈语驾考APP专门为哈萨克族考驾照的学员提供了科目一科目四题库在线练习和模拟考试&#xff0c;是一款哈汉双语版本的驾考学习APP。软件内可同时切换哈萨克语题库和语言文字&#xff0c;有多种学习模式。题库同步车管所考题&#xff0c;通过率高。包含了科一、科四模拟考试、路…

PP 8 创建工艺路线

事务代码&#xff1a;CA01(注&#xff1a;定额工艺路线&#xff1a;CA21(重复制造)) 组和组计数器确定唯一工艺路线 创建一个组 把组分配给物料 物料有多个工艺路线 可以把组分给多个物料 如果打上删除标识&#xff0c;工艺路线无效

前端(四):前后端分离开发(YAPI的使用)

一、引入 1、前后端混合开发&#xff08;早期&#xff09;&#xff1a;将前端、后端、数据库混杂在一起写&#xff0c;前后前全部在一个工程中。沟通成本高、分工不明确、不便于管理、不便于维护和扩展。 2、前后端分离开发&#xff1a;前端工程和后端工程&#xff0c;为了前…

设计模式之拦截器模式

目录 1.概述 2.结构 3.java实现示例 4.常见实现框架 5.C实现拦截器模式 6.拦截器和过滤器的异同 7.应用场景 8.优缺点 9.总结 1.概述 拦截器模式&#xff08;Interceptor Pattern&#xff09;是一种在请求被处理之前或之后自动执行代码的设计模式。它允许开发者在方法…

【自动驾驶】ubuntu20.04安装完整ROS的Noetic版本

目录 安装过程换源及安装注意&#xff1a;三级目录 安装过程 1.配置ubuntu的软件和更新 配置ubuntu的软件和更新&#xff0c;允许安装不经认证的软件。 首先打开“软件和更新”对话框&#xff0c;在设置菜单中的&#xff0c;关于&#xff0c;软件更新。 打开后按照下图进行配…

字符串左旋(c语言)

1.字符串左旋 //实现一个函数&#xff0c;可以左旋字符串的k个字符 例如&#xff1a;ABCD左旋字符串的1个字符BCDA ABCD左旋字符串的2个字符CDAB 2.第一步我们先输入k&#xff08;scanf&#xff09;,将第一位进行储存&#xff0c;然后其他位先前走一位&#xff0c;然后将第一…

分布式事务一站式解决方案-Seata

分布式事务一站式解决方案- 分布式事务一站式解决方案分布式事务产生背景三个概念Seata下载和安装实际业务模拟演示不加 GlobalTransactional 注解&#xff0c;正常操作下单不加 GlobalTransactional 注解&#xff0c;下单过程出异常或者超时了加 GlobalTransactional 注解&…

Shell定时上传日志到HDFS

Shell定时上传日志到HDFS 一、任务需求二、实现思路三、具体实现流程3.1 规划文件上传目录3.2 开发 shell 脚本3.3 授予 shell 可执行权限3.4 手动执行查看3.4 定时执行 shell 脚本 一、任务需求 公司在线服务器每天都会产生网站运行日志&#xff0c;为了避免志文件过大&#…

WPF学习笔记

WPF WPF&#xff08;Windows Presentation Foundation&#xff0c;Windows呈现基础&#xff09;是微软推出的基于Windows 的用户界面框架&#xff0c;属于.NET Framework 3.0的一部分。它提供了统一的编程模型、语言和框架&#xff0c;真正做到了分离界面设计人员与开发人员的…

学习STM32(6)-- STM32单片机ADCDAC的应用

1 引 言 深入了解并掌握STM32F103单片机在模拟数字转换&#xff08;ADC&#xff09;和数字模拟转换&#xff08;DAC&#xff09;应用方面的功能和操作。学习如何配置STM32F103的ADC模块&#xff0c;实现模拟信号到数字信号的精确转换&#xff1b;同时&#xff0c;探索DAC模块…

【AI学习】[2024北京智源大会]具身智能:具身智能关键技术研究:操纵、决策、导航

具身智能关键技术研究&#xff1a;操纵、决策、导航 董 豪 | 北京大学助理教授 依然是边看边做些记录 这张图的重点是在说&#xff0c;我们的大脑&#xff0c;也是不同的部分处理不同的功能。这里面有些功能&#xff0c;比如视觉、听觉理解等功能&#xff0c;LLM已经具备&…

一键浪漫的回忆:微软开源的修复工具!!【送源码】

项目介绍 “Bringing-Old-Photos-Back-to-Life”是一款由微软开发的创新软件解决方案&#xff0c;它利用人工智能技术来修复和增强老旧照片的质量。这款工具可以解决老旧照片中常见的问题&#xff0c;如褪色、低分辨率以及物理损坏&#xff08;如划痕和撕裂&#xff09;。通过采…

分析 Vue3 Effect 函数看响应式依赖收集和触发更新过程

先给一个简单的实例&#xff0c;分析依赖收集和更新的过程 let obj { name: "hefeng6500", age: 10, flag: true }const state reactive(obj);effect(() > {app.innerHTML state.name state.age })setTimeout(() > {state.age 20 }, 1000)reactive 函数只…

吴恩达:如何系统学习机器学习?

最近在知乎圆桌里看到吴恩达的回答&#xff0c;【如何系统学习机器学习&#xff1f;】颇为惊喜&#xff0c;仿佛看到了知乎刚成立时的样子&#xff0c;请各个行业大佬来分享专业知识。 该回答目前已经有三千多赞&#xff0c;评论区也相当火爆&#xff0c;一片膜拜之声。 吴恩…

java学习19VUE

VUE NPM npm的全称是Node Package Manager 中文名为Node.js包管理器&#xff0c;是一个NodeJS包管理和分发工具&#xff0c;已经成为了非官方的发布Node模块(包)的标准。NPM可以方便地从一个全球的代码库中获取并安装Node.js模块&#xff0c;这些模块可以用于构建应用程序、…

开发框架DevExpress XAF v24.2产品路线图预览——增强跨平台性

DevExpress XAF是一款强大的现代应用程序框架&#xff0c;允许同时开发ASP.NET和WinForms。XAF采用模块化设计&#xff0c;开发人员可以选择内建模块&#xff0c;也可以自行创建&#xff0c;从而以更快的速度和比开发人员当前更强有力的方式创建应用程序。 DevExpress XAF是一…

Python 之Scikit-learn(二) -- Scikit-learn标准化数据

在机器学习中&#xff0c;数据标准化是一项关键的预处理步骤。标准化&#xff08;Standardization&#xff09;是将数据转换为具有均值为0和标准差为1的分布。这样可以确保特征在相同的尺度上&#xff0c;有助于提升某些机器学习算法的性能和稳定性。 Scikit-learn提供了一个简…

一篇教会搭建ELK日志分析平台

日志分析的概述 日志分析是运维工程师解决系统故障&#xff0c;发现问题的主要手段日志主要包括系统日志、应用程序日志和安全日志系统运维和开发人员可以通过日志了解服务器软硬件信息、检查配置过程中的错误及错误发生的原因经常分析日志可以了解服务器的负荷&#xff0c;性…

Date类型的字段序列化成JSON字符串

我们发现收到的响应结果里面有一个参数为&#xff1a; 我们收到的时间字符串格式是由JSON序列化框架来决定的。 spring将JAVA数据类型的序列和反序列化为JSON字符串是依赖jackson(com.fasterxml.jackson.core:jackson-core)库来实现的。 Date类型的字段在序列化成JSON字符串时…

【人工智能】人工智能与机器学习的相关介绍

文章目录 人工智能的发展历程人工智能与机器学习关系图谱数据处理机器学习ML和深度学习DL的区别人工智能按照学习方式划分监督学习算法无监督学习算法总结 人工智能的发展历程 重要的时间点了解一下&#xff1a; 早在1950年人工智能就已经开始兴起 1997年deep blue战胜了人类国…