2024-01-14 19:09:32 | 我爱编程网
如下所示。
数学中有个著名的斐波那契数列(Fibonaccisequence),又称黄金分割数列,数学家列昂纳多·斐波那契(LeonardodaFibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,这个数列中第一个数为0,第二个数为1,其后的每一个数都可由前两个数相加得到,如下所示:
0,1,1,2,3,5,8,13,21,34,
在数学上,斐波那契数列以如下被以递推的方法定义:F(1)=1,F(2)=1,F(n)=F(n-1)F(n-2)(n>=3,n∈N*)在现代物理、准晶体结构、化学等领域,斐波纳契数列都有直接的应用,在本文中我们通过Python来实现这个神奇的斐波那契数列。
计算斐波那契数列的核心就是循环进行a,b=b,a+b
如此循环计算,直到b的值大于n,然后输出a与b即可。
n=int(input('input "n":'))
a, b = 1, 1
while b<=n:
....a, b = b, a+b
print('{} {}'.format(a, b))
Python函数的参数类型主要包括必选参数、可选参数、可变参数、位置参数和关键字参数,本文介绍一下他们的定义以及可变数据类型参数传递需要注意的地方。
必选参数(Required arguments)是必须输入的参数,比如下面的代码,必须输入2个参数,否则就会报错:
其实上面例子中的参数 num1和num2也属于关键字参数,比如可以通过如下方式调用:
执行结果:
可选参数(Optional arguments)可以不用传入函数,有一个默认值,如果没有传入会使用默认值,不会报错。
位置参数(positional arguments)根据其在函数定义中的位置调用,下面是pow()函数的帮助信息:
x,y,z三个参数的的顺序是固定的,并且不能使用关键字:
输出:
在上面的pow()函数帮助信息中可以看到位置参数后面加了一个反斜杠 / ,这是python内置函数的语法定义,Python开发人员不能在python3.8版本之前的代码中使用此语法。但python3.0到3.7版本可以使用如下方式定义位置参数:
星号前面的参数为位置参数或者关键字参数,星号后面是强制关键字参数,具体介绍见强制关键字参数。
python3.8版本引入了强制位置参数(Positional-Only Parameters),也就是我们可以使用反斜杠 / 语法来定义位置参数了,可以写成如下形式:
来看下面的例子:
python3.8运行:
不能使用关键字参数形式赋值了。
可变参数 (varargs argument) 就是传入的参数个数是可变的,可以是0-n个,使用星号( * )将输入参数自动组装为一个元组(tuple):
执行结果:
关键字参数(keyword argument)允许将任意个含参数名的参数导入到python函数中,使用双星号( ** ),在函数内部自动组装为一个字典。
执行结果:
上面介绍的参数可以混合使用:
结果:
注意:由于传入的参数个数不定,所以当与普通参数一同使用时,必须把带星号的参数放在最后。
强制关键字参数(Keyword-Only Arguments)是python3引入的特性,可参考: 使用一个星号隔开:
在位置参数一节介绍过星号前面的参数可以是位置参数和关键字参数。星号后面的参数都是强制关键字参数,必须以指定参数名的方式传参,如果强制关键字参数没有设置默认参数,调用函数时必须传参。
执行结果:
也可以在可变参数后面命名关键字参数,这样就不需要星号分隔符了:
执行结果:我爱编程网
在Python对象及内存管理机制中介绍了python中的参数传递属于对象的
引用传递
(pass by object reference),在编写函数的时候需要特别注意。
先来看个例子:
执行结果:
l1 和 l2指向相同的地址,由于列表可变,l1改变时,l2也跟着变了。
接着看下面的例子:
结果:
l1没有变化!为什么不是[1, 2, 3, 4]呢?
l = l + [4]表示创建一个“末尾加入元素 4“的新列表,并让 l 指向这个新的对象,l1没有进行任何操作,因此 l1 的值不变。如果要改变l1的值,需要加一个返回值:
结果:
下面的代码执行结果又是什么呢?
执行结果:
和第一个例子一样,l1 和 l2指向相同的地址,所以会一起改变。这个问题怎么解决呢?
可以使用下面的方式:
也可以使用浅拷贝或者深度拷贝,具体使用方法可参考Python对象及内存管理机制。这个问题在Python编程时需要特别注意。
本文主要介绍了python函数的几种参数类型:必选参数、可选参数、可变参数、位置参数、强制位置参数、关键字参数、强制关键字参数,注意他们不是完全独立的,比如必选参数、可选参数也可以是关键字参数,位置参数可以是必选参数或者可选参数。
另外,python中的参数传递属于对象的
引用传递
,在对可变数据类型进行参数传递时需要特别注意,如有必要,使用python的拷贝方法。
参考文档:
--THE END--
python怎么编写代码1、首先在Window上在安装Python时,已经已经安装了默认的交互式编程客户端,提示窗口:在python提示符中输入以下文本信息,然后按Enter键查看运行效果。2、然后,通过脚本参数调用解释器开始执行脚本,直到脚本执行完毕。当脚本执行完成后,解释器不再有效。所有Python文件将以 .py 为扩展名。将以下的源代码拷贝至test.py文件中。3、然
画爱心的python代码我已经很努力了,但是要真的很好看爱心可能有点困难(除了贴图,但这毕竟不好,对吧)。以下为Python代码:fromturtleimport*speed(0)#速度,觉得太快可以调到1(1慢10快0最快)tracer(2)#显示速度,觉得太快可以调到1(同上)hideturtle()#隐藏画笔setup(500,500)#500×5
我的世界如何写代码以下是按要求改动的代码:编写代码以制作我的世界(Minecraft)模组是一项既有趣又有挑战性的任务。首先,你需要选择一个编程语言来编写Minecraft模组。目前,最常用的语言是Lua,因为Minecraft的开发者也使用它来编写游戏逻辑。如果你熟悉Python,也可以尝试使用Python编写模组,但Lua更为常见。一、获取Minecraft
python怎么运行代码?工具/原料pythonpycharm截图工具WPSIDLE方法/步骤1、在电脑左下角开始菜单,输入框中输入cmd,找到终端并打开2、在终端命令行输入python,进入到python环境,可以直接输入python代码,按回车执行3、在开始菜单,找到安装好的python,展开并选择IDLE(Python3.864-bit)4、打开IDL
Python中怎么调用C代码?Python中调用C代码方法Python是一门较为简单的编程语言,如今很多小学都已经开始教授python了,可见它的热度之高。Python提供了高效的高级数据结构,还能简单有效地面向对象编程。而如果你是零基础想要自学Python的话,那么就建议你进行专业系统的视频课程学习!为帮助广大Python学习爱好者提升,精选到了几套专业优质的Python自学视频课程,学
pythonnumpy怎么按列获取数据Numpy可以使用reshape()函数进行矩阵重排列,默认按行排列(C语言风格),通过修改order参数可以改为按列排列(Fortran风格)。参考例子:In[1]:importnumpyasnpIn[2]:a=np.array([[1,2,3],[4,5,6]])In[3]:printa[[123][456]]...python进行数据库查询时怎
编程猫怎么复制代码编程猫可以通过ctrlC进行复制。编程猫是中国本土领先的编程教育企业,面向7到16岁青少儿,专注研发适合中国儿童的编程教学体系。编程猫平台以“寓教于乐”为理念,设计了一整套适用幼儿(3-8岁)、少儿(9-13岁)学生的在线编程教育课程。学生可在编程猫平台设计游戏、软件、动画和故事等,在编程过程中培养孩子的逻辑思维和动手创造能力,目标是为学生们提供科
怎么把python程序变成代码1.1安装所需要的Python库在Python中,将代码转成可以执行的程序需要安装库pyinstaller。本人的运行环境是macOS,打开终端然后输入(如果是Windows用户,打开AnacondaPrompt),然后输入如下代码:(/usr/local/anaconda3)liuxiaowei@MacBookAirpython_exe%pipin
2024-01-01 09:58:48
2024-01-02 22:06:16
2024-01-01 04:24:22
2023-12-23 12:08:32
2023-09-13 13:02:53
2024-01-08 06:28:32