python 函数例子_Python3函数之例子

1.分别使用递归、循环和生成器求菲波那切数列

递归:

def fib_rec(n):

if n == 0:

return 1

if n == 1:

return 1

return fib_rec(n-1) + fib_rec(n-2)

fib_rec(5)

循环:

def fib_loop(n):

lst = []

for i in range(n+1):

if i == 0 or i == 1:

lst.append(1)

else:

lst.append(lst[-1] + lst[-2])

return lst.pop()

fib_loop(5)

def fib_loop2(n):

a, b = 1, 1

for i in range(n+1):

if i == 0 or i == 1:

a, b = 1, 1

else:

a, b = b, a+b

return b

fib_loop2(5)

生成器:

def fib_gen():

i = 0

a, b = 1, 1

while True:

if i == 0 or i == 1:

yield 1

else:

a, b = b, a+b

yield b

i += 1

def fib(n):

gen = fib_gen()

for _ in range(n):

next(gen)

return next(gen)

fib(5)

2.写一个函数,实现对整数的排序,默认升序排序,不能使用任何内置函数和第三方库

fun1:

def sort_int(lst, asc=True):

sort_lst = []

while lst:

i = None

min_int = None

for i in lst:

if min_int is None:

min_int = i

else:

if min_int > i:

min_int = i

lst.remove(min_int)

if asc:

sort_lst.append(min_int)

else:

sort_lst.insert(0, min_int)

return sort_lst

fun2:

def sort(lst, reverse=False):

dst = []

for n in lst:

for i, e in enumerate(dst):

if not reverse:

if n < e:

dst.insert(i, n)

break

else:

if n > e:

dst.insert(i, n)

break

else:

dst.append(n)

return dst

3.写一个函数,把整数转化为罗马数字,输入为1到3999之间的任意数字

def int2rom(n):

if n < 1 or n > 3999:

print('input error.')

return 0

rom_lst = [' ',

'I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX',

'X', 'XX', 'XXX', 'XL', 'L', 'LX', 'LXX', 'LXXX', 'XC',

'C', 'CC', 'CCC', 'CD', 'D', 'DC', 'DCC', 'DCCC', 'CM',

'M', 'MM', 'MMM']

rom = ''

bit = n % 10

ten = (n % 100) // 10

hun = (n % 1000) // 100

tho = n // 1000

if tho != 0:

rom += rom_lst[27 + tho]

if hun != 0:

rom += rom_lst[18 + hun]

if ten > 0:

rom += rom_lst[9 + ten]

if bit > 0:

rom += rom_lst[bit]

return rom

3.2写一个函数,把整数转化为罗马数字,输出为1到3999之间的任意数字

def roman2int(src):

convert_map = {

'I':1,

'V':5,

'X':10,

'L':50,

'C':100,

'D':500,

'M':1000

}

# MDCCCXCIX

# XICXCCCDM

# +10 -1 +100 -10 +100 +100 +100 +500 +1000

# 1899

roman = src.upper()[::-1]

prev = 0

lst = []

for x in roman:

i = convert_map[x]

if i < prev:

lst.append(-1 * i)

else:

lst.append(i)

prev = i

return sum(lst)

roman2int('MDCCCXCIX')

4.写一个函数,求两个字符串的最长公共子串

例如输入:I love Python 和 Python is a simple language,输出为Python

def psubstring_long(x, y):

f = []

max_len = 0

idx = 0

for i, a in enumerate(x):

f.append([])

for j, b in enumerate(y):

if a != b:

f[i].append(0)

else:

if i == 0 or j == 0:

f[i].append(1)

else:

f[i].append(f[i-1][j-1] + 1)

if max_len < f[i][j]:

max_len = f[i][j]

# idx = max_len - (i+1)

idx = i + 1 - max_len

return x[idx: idx + max_len]

psubstring_long('babcdf', 'xxaabcaac')

5.动态规划

总长n,step表示一次可选步数,总共多少种走法

ret = 0

tmp = []

solution = []

def recursion(n, tmp, step=3):

global ret

if n == 0:

solution.append('===')

solution.extend(tmp)

ret += 1

return 0

for i in range(1, step+1):

if n > i-1:

tmp.append(i)

recursion(n-i, tmp, step)

tmp.pop(-1)

return ret

print(recursion(3, [], 3), solution)

4 ['===', 1, 1, 1, '===', 1, 2, '===', 2, 1, '===', 3]

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

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

相关文章

java jcsh执行linux命令,java jcsh执行linux命令

java jcsh执行linux命令[2021-02-03 01:26:29] 简介:php去除nbsp的方法&#xff1a;首先创建一个PHP代码示例文件&#xff1b;然后通过“preg_replace("/(\s|\&nbsp\;| |\xc2\xa0)/", " ", strip_tags($val));”方法去除所有nbsp即可。推荐&#xff…

python目标检测答案_入门指南:用Python实现实时目标检测(内附代码)

全文共6821字&#xff0c;预计学习时长20分钟 来源&#xff1a;Pexels 从自动驾驶汽车检测路上的物体&#xff0c;到通过复杂的面部及身体语言识别发现可能的犯罪活动。多年来&#xff0c;研究人员一直在探索让机器通过视觉识别物体的可能性。 这一特殊领域被称为计算机视觉 (C…

sql md5函数_【学习笔记】常见漏洞:SQL注入的利用与防御

第 21 课 SQL注入的利用与防御课程入口(付费)个人背景李&#xff0c;本科&#xff0c;电子信息工程专业&#xff0c;毕业一年半&#xff0c;有JavaScript的&#xff0c;PHP&#xff0c;Python的语言基础&#xff0c;目前自学网络安全中。SQL注入的利用与防御01 SQL盲注1.1 S…

管理linux的快捷键,Linux快捷键及系统管理命令(1)

快捷键&#xff1a;ctrlU&#xff1a;快速删除光标前所有字符内容。ctrlK&#xff1a;快速删除从当前光标到行尾的所有字符内容。ctrlL&#xff1a;快速清空当前屏幕中显示的内容&#xff0c;只在左上角显示命令提示符。ctrlC&#xff1a;取消当前命令行的编辑&#xff0c;并切…

docker -v 覆盖了容器中的文件_浅谈docker中宿主机和容器之间互相copy文件的两种方式,欢迎补充...

在dokcer的日常使用过程中&#xff0c;我们可能会遇到将宿主机内文件/目录copy到容器内&#xff0c;或者将容器的文件/目录copy到宿主机中&#xff0c;下面我们就来简单的谈一下关于这种情况的两种操作。1、Docker cp命令&#xff1a;用于容器与主机之间的数据copy语法&#xf…

线性代数第九版pdf英文_斯坦福CS229机器学习课程的数学基础(线性代数)翻译完成...

文章转载自公众号 机器学习初学者 &#xff0c; 作者 机器学习初学者Stanford cs229 manchine learning课程&#xff0c;相比于Coursera中的机器学习有更多的数学要求和公式的推导&#xff0c;课程全英文&#xff0c;基础材料部分还没有翻译。这个基础材料主要分为线性代数和概…

用python读取股票价格_Python读取文件并给出股票价格

我使用的是ystockquote&#xff0c;可以找到here。基本上&#xff0c;我有一个包含我所有股票符号的文件&#xff0c;然后我用python将其笔下并显示每只股票的价格。以下是我目前为止的代码&#xff1a;import ystockquote def intro(): # Here you enter the name of your fil…

ppc linux 性能,用profile和oprofile监视视linux性能!

profile使用&#xff1a;profile功能是架构无关的&#xff0c;可以用来监视linux内核的4项功能&#xff0c;即&#xff1a;11 #define CPU_PROFILING 112 #define SCHED_PROFILING 213 #define SLEEP_PROFILING 314 #define KVM_PROFILING 4要想找开profile功能&#xff0c…

bisect git 使用_Git使用过程中的一些常见场景问题总结

之前在公司内部推Git&#xff0c;写了一份git使用教程&#xff0c;后来又在团队内部做了一次分享&#xff0c;内容是关于Git使用过程中经常会遇到的一些场景&#xff0c;并有了这份总结。git基础基于feature的工作流添加忽略文件 .gitignore (http://gitignore.io/)基于develop…

c 多文件全局变量_C语言开发单片机为什么大多数都采用全局变量的形式?

点击上方蓝字关注我哦&#xff5e;01前言全局变量简直就是嵌入式系统的戈兰高地。冲突最激烈的双方是1. 做控制的工程师 2. 做非嵌入式的软件工程师。02做控制的工程师特点他们普遍的理解就是“变量都写成全局该有多方便”。我之前面试过一个非常有名的做控制实验室里出来的PhD…

linux耳机插拔检测,Android应用开发之耳机插拔处理两种方式

本文将带你了解Android应用开发[RK3288][Android6.0] 耳机插拔处理两种方式&#xff0c;希望本文对大家学Android有所帮助。[RK3288][Android6.0] 耳机插拔处理两种方式。Platform: RockchipOS: Android 6.0Kernel: 3.10.92系统对耳机插拔处理的方式有两种&#xff0c;一种…

医学图像处理_专刊征稿|医学图像处理中的认知计算

认知科学是20世纪世界科学标志性的新兴研究门类&#xff0c;它作为探究人脑或心智工作机制的前沿性尖端学科&#xff0c;已经引起了全世界科学家们的广泛关注。认知计算代表一种全新的计算模式&#xff0c;它包含信息分析&#xff0c;自然语言处理和机器学习领域的大量技术创新…

python 如何判断一个函数执行完成_Python 函数为什么会默认返回 None?

&#x1f446; “Python猫” &#xff0c;一个值得加星标的公众号Python 有一项默认的做法&#xff0c;很多编程语言都没有——它的所有函数都会有一个返回值&#xff0c;不管你有没有写 return 语句。 本文出自“Python为什么”系列&#xff0c;在正式开始之前&#xff0c;我们…

中美线径对照表_中国线径与英美德线规对照表

德DIN*线径(mm)实际截面(mm2)标准截面(mm2)线号线径(mm)线号线径(mm)线径(mm)7/012.712.56/011.7854/011.68411.298.52001005/010.9733/010.40411.21078.5400804/010.1610963.6200633/09.4492/09.26692/08.839850.27005008.2308.253817.627.139.59004027.0117.3487.16.331.1700…

不在 sudoers 文件中。此事将被报告_快餐包装中检出致癌物质?麦当劳、汉堡王回应!...

薯条汉堡、雪碧可乐已然成为大家的用餐首选之一一周吃了两次以上的人相信也不在少数可最近一则“麦当劳、汉堡王等快餐包装中检出致癌物质”的消息却让许多人吓出了一身冷汗而且迅速登上热搜榜…近日&#xff0c;环保组织的一份报告称&#xff0c;美国当地麦当劳McDonald’s、汉…

lichee linux nfs,SPI Flash 系统编译

在一些低成本应用场景&#xff0c;需要在SPI flash上启动系统&#xff0c;这需要对Uboot和系统镜像做些适配。本文介绍SPI Flash镜像的制作过程。这里 使用 MX25L25645G, 32M SPI flash 作为启动介质&#xff0c;规划分区如下&#xff1a;分区序号分区大小分区作用地址空间及分…

tensorflow越跑越慢_tensorflow如何解决越运行越慢的问题

这几天写tensorflow的时候发现随着迭代的次数越来越多&#xff0c;tensorflow跑的速度越来越慢。查找才发现是tensorflow不断的给之前的图里加节点&#xff0c;导致占用的内存越来越大&#xff0c;然后我尝试了网上的各种方法&#xff0c;终于发现了一个靠谱的方法&#xff0c;…

propertysource注解_Java开发必须掌握的 20+ 种 Spring 常用注解

作者&#xff1a;IT_faquir链接&#xff1a;https://blog.csdn.net/IT_faquir注解本身没有功能的&#xff0c;就和xml一样。注解和xml都是一种元数据&#xff0c;元数据即解释数据的数据&#xff0c;这就是所谓配置。本文主要罗列Spring|SpringMVC相关注解的简介。Spring部分1.…

linux协议栈劫持,Linux系统优化之TCP协议栈优化-基本篇1

因为在做爬虫分布式系统的过程中&#xff0c;涉及到了一些linux系统优化方面的知识&#xff0c;所以来总结一下&#xff0c;我们会对linux的不同模块做相关的基本优化&#xff0c;这篇文章主要讲述的是关于tcp协议栈的参数优化。1.机器环境Linux EOS01 2.6.32-358.el6.x86_64 #…

datapumpdir oracle_oracle_datapump创建外部表案例

一、datapump创建外部表&#xff0c;数据来源于内部实体表 --首先创建 scott.countries实体表&#xff0c;用于做实验 SQLgt; create table scott.cou一、datapump创建外部表&#xff0c;数据来源于内部实体表--首先创建 scott.countries实体表&#xff0c;用于做实验SQL> c…