iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python实现斐波那契数列的多种写法总结
  • 893
分享到

Python实现斐波那契数列的多种写法总结

2024-04-02 19:04:59 893人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

目录1.for循环2.while循环3.使用递归4.递归+for循环5.递归+while循环6.递归+定义函数+for循环7.指定列表趣方程求解pandas 每日一练斐波那契数列&m

斐波那契数列——经典例子,永不过时!!!

1.for循环

def fibonacci1(n):
    a, b = 0, 1
    for i in range(n):
        a, b = b, a+b
        print(a)


fibonacci1(3)

def fib1(w):
    a, b = 1, 1
    for i in range(w-1):
        a, b = b, a+b
    return a
​​​​​​​
print(fib1(3))

[^1]刚好得出这个位置的数

2.while循环

def fibnaqi2(m):
    a, b = 0, 1
    i = 0
    while i < m:
        print(b)
        a, b = b, a+b
        i += 1

fibnaqi2(4)

[^1]刚好得出这个位置的数

3.使用递归

def fib2(q):
    if q == 1 or q == 2:
        return 1
    return fib2(q-1)+fib2(q-2)
​​​​​​​
print(fib2(9))

4.递归+for循环

def fibnacci3(p):
    lst = []
    for i in range(p):
        if i == 1 or i == 0:
            lst.append(1)
        else:
            lst.append(lst[i-1]+lst[i-2])
    print(lst)

fibnacci3(5)

5.递归+while循环

def fibnacci4(k):
    lis = []
    i = 0
    while i<k:
        if i == 0 or i == 1:
            lis.append(1)
        else:
            lis.append(lis[i-2]+lis[i-1])
        i += 1
    print(lis)

fibnacci4(6)

6.递归+定义函数+for循环

def fibnacci5(o):
    def fn(i):
        if i < 2:
            return 1
        else:
            return (fn(i-2)+fn(i-1))
    for i in range(o):
        print(fn(i))
​​​​​​​
fibnacci5(8)

7.指定列表

def fib3(e):
    if e == 1:
        return [1]
    if e == 2:
        return [1, 1]
    fibs = [1, 1]
    for i in range(2, e):
        fibs.append(fibs[-1]+fibs[-2])
    return fibs

print(fib3(12))

趣方程求解

题目描述

二次方程式 ax**2 + bx + c = 0 (a、b、c 用户提供,为实数,a ≠ 0)

# 导入 cmath(复杂数学运算) 模块
import cmath

a = float(input('输入 a: '))
b = float(input('输入 b: '))
c = float(input('输入 c: '))

# 计算
d = (b ** 2) - (4 * a * c)

# 两种求解方式
sol1 = (-b - cmath.sqrt(d)) / (2 * a)
sol2 = (-b + cmath.sqrt(d)) / (2 * a)

print('结果为 {0} 和 {1}'.fORMat(sol1, sol2))

pandas 每日一练

# -*- coding = utf-8 -*-
# @Time : 2022/7/26 21:48
# @Author : lxw_pro
# @File : pandas -8 练习.py
# @Software : PyCharm

import pandas as pd
import numpy as np

df = pd.read_excel('text5.xlsx')
print(df)

print()

程序运行结果如下:

   Unnamed: 0 Unnamed: 0.1  project  ...           test_time       date      time
0           0     00:00:00   python  ... 2022-06-20 18:30:20 2022-06-20  18:30:20
1           1            1     Java  ... 2022-06-18 19:40:20 2022-06-18  19:40:20
2           2            2        C  ... 2022-06-08 13:33:20 2022-06-08  13:33:20
3           3            3    Mysql  ... 2021-12-23 11:26:20 2021-12-23  11:26:20
4           4            4    linux  ... 2021-12-20 18:20:20 2021-12-20  18:20:20
5           5            5     Math  ... 2022-07-20 16:30:20 2022-07-20  16:30:20
6           6            6  English  ... 2022-06-23 15:30:20 2022-06-23  15:30:20
7           7            7   Python  ... 2022-07-19 09:30:20 2022-07-19  09:30:20
[8 rows x 7 columns]

41、将test_time列设置为索引

print(df.set_index('test_time'))

​​​​​​​print()

程序运行结果如下:
                    Unnamed: 0 Unnamed: 0.1  ...       date      time
test_time                                     ...                     
2022-06-20 18:30:20           0     00:00:00  ... 2022-06-20  18:30:20
2022-06-18 19:40:20           1            1  ... 2022-06-18  19:40:20
2022-06-08 13:33:20           2            2  ... 2022-06-08  13:33:20
2021-12-23 11:26:20           3            3  ... 2021-12-23  11:26:20
2021-12-20 18:20:20           4            4  ... 2021-12-20  18:20:20
2022-07-20 16:30:20           5            5  ... 2022-07-20  16:30:20
2022-06-23 15:30:20           6            6  ... 2022-06-23  15:30:20
2022-07-19 09:30:20           7            7  ... 2022-07-19  09:30:20
[8 rows x 6 columns]

42、生成一个和df长度相同的随机数dataframe

df1 = pd.DataFrame(pd.Series(np.random.randint(1, 10, 8)))
print(df1)

​​​​​​​print()

程序运行结果如下:

   0
0  1
1  3
2  2
3  7
4  7
5  3
6  5
7  1

43、将上一题生成的dataframe与df合并

df = pd.concat([df, df1], axis=1)
print(df)

​​​​​​​print()

程序运行结果如下:

   Unnamed: 0 Unnamed: 0.1  project  ...       date      time  0
0           0     00:00:00   Python  ... 2022-06-20  18:30:20  1
1           1            1     Java  ... 2022-06-18  19:40:20  3
2           2            2        C  ... 2022-06-08  13:33:20  2
3           3            3    mysql  ... 2021-12-23  11:26:20  7
4           4            4    Linux  ... 2021-12-20  18:20:20  7
5           5            5     Math  ... 2022-07-20  16:30:20  3
6           6            6  English  ... 2022-06-23  15:30:20  5
7           7            7   Python  ... 2022-07-19  09:30:20  1
[8 rows x 8 columns]

44、生成新的一列new为popularity列减去之前生成随机数列

df['new'] = df['popularity'] - df[0]
print(df)

​​​​​​​print()

程序运行结果如下:

  Unnamed: 0 Unnamed: 0.1  project  popularity  ...       date      time  0  new
0           0     00:00:00   Python          95  ... 2022-06-20  18:30:20  1   94
1           1            1     Java          92  ... 2022-06-18  19:40:20  3   89
2           2            2        C         145  ... 2022-06-08  13:33:20  2  143
3           3            3    Mysql         141  ... 2021-12-23  11:26:20  7  134
4           4            4    Linux          84  ... 2021-12-20  18:20:20  7   77
5           5            5     Math         148  ... 2022-07-20  16:30:20  3  145
6           6            6  English         146  ... 2022-06-23  15:30:20  5  141
7           7            7   Python         149  ... 2022-07-19  09:30:20  1  148
[8 rows x 9 columns]

45、检查数据中是否含有任何缺失值

jch = df.isnull().values.any()
print(jch)    # 运行结果为:False

​​​​​​​print()

46、将popularity列类型转换为浮点数

fds = df['popularity'].astype(np.float64)
print(fds)

​​​​​​​print()

程序运行结果如下:

0     95.0
1     92.0
2    145.0
3    141.0
4     84.0
5    148.0
6    146.0
7    149.0
Name: popularity, dtype: float64

47、计算popularity大于100的次数

cs = len(df[df['popularity'] > 100])
print(cs)    # 运行结果为:5

​​​​​​​print()

48、查看project列共有几种学历

ckj = df['project'].nunique()
print(ckj)    # 运行结果为:7

​​​​​​​print()

49、查看每科出现的次数

ckc = df.project.value_counts()
print(ckc)

print()

程序运行结果如下:

Python     2
Java       1
C          1
MySQL      1
Linux      1
Math       1
English    1
Name: project, dtype: int64

50、提取popularity与new列的和大于136的最后3行

df1 = df[['popularity', 'new']]
hh = df1.apply(np.sum, axis=1)
res = df.iloc[np.where(hh > 136)[0][-3:], :]
print(res)

程序运行结果如下:

   Unnamed: 0 Unnamed: 0.1  project  popularity  ...       date      time  0  new
5           5            5     Math         148  ... 2022-07-20  16:30:20  3  145
6           6            6  English         146  ... 2022-06-23  15:30:20  5  141
7           7            7   Python         149  ... 2022-07-19  09:30:20  1  148
[3 rows x 9 columns]

到此这篇关于Python实现斐波那契数列的多种写法总结的文章就介绍到这了,更多相关Python斐波那契数列内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Python实现斐波那契数列的多种写法总结

本文链接: https://www.lsjlt.com/news/119678.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python实现斐波那契数列的多种写法总结
    目录1.for循环2.while循环3.使用递归4.递归+for循环5.递归+while循环6.递归+定义函数+for循环7.指定列表趣方程求解pandas 每日一练斐波那契数列&m...
    99+
    2022-11-11
  • python实现斐波那契数列
    斐波那契数列的发明者是意大利数学家昂纳多.斐波那契(Leonardo Fibonacci)。斐波那契数列又被称为黄金分割数列,或兔子数列。它指的是这样一个数列:0 1 1 2 3 5 8 13 21 34 ....在数学上,斐波那契数列以递...
    99+
    2023-01-31
    数列 python
  • java实现斐波那契数列的三种方法
    斐波那契数列(Fibonacci sequence)的定义:斐波那契数列指的是这样一个数列 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,...
    99+
    2017-12-03
    java 斐波那契数列 方法
  • Python怎么实现斐波那契数列
    这篇文章主要介绍“Python怎么实现斐波那契数列”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python怎么实现斐波那契数列”文章能帮助大家解决问题。1、递归方法输出斐波那契数列第n个元素的值2...
    99+
    2023-06-28
  • python3斐波那契数列的实现
    def fib(num): a,b=1,1 while a<num: print(a,end=' ') a,b=b,a+b def fib_tump(...
    99+
    2023-01-31
    数列
  • python实现斐波那契数列的方法示例
    介绍 斐波那契数列,又称黄金分割数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、……在数学上,斐波纳契数列以如下递归的方法定义: F(0)=0,F(1)=1,F(n)=F(n-1)+F(n...
    99+
    2022-06-04
    数列 示例 方法
  • 怎么使用python实现斐波那契数列
    这篇文章主要介绍“怎么使用python实现斐波那契数列”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么使用python实现斐波那契数列”文章能帮助大家解决问题。斐波那契数列(Fibonacci s...
    99+
    2023-06-27
  • JavaScript输出斐波那契数列的实现方法
    目录题目分析基础解法初级递归递归优化总结题目 有这么一道题目需要我们来解答: 试输出斐波那契数列的前10项,即 1、1、2、3、5、8、13、21、34、55。 ...
    99+
    2022-11-12
  • Python中怎么实现一个斐波那契数列
    本篇文章给大家分享的是有关Python中怎么实现一个斐波那契数列,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1、递归方法输出斐波那契数列第n个元素的值2、用迭代器和生成器获取...
    99+
    2023-06-02
  • python递归函数斐波那契数列怎么实现
    斐波那契数列是一个数列,其中每个数字是前两个数字的和,即F(n) = F(n-1) + F(n-2)。递归函数可以用来实现斐波那契数...
    99+
    2023-09-26
    python
  • java中斐波那契数列的简单实现方法
    斐波那契数列指的是:数列的后项等于前两项的和,代码中我们用a[i]=a[i-1]+a[i-2]实现。典型兔子生小兔问题古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对,假设每对小兔子都不死,编程...
    99+
    2021-03-23
    java教程 java 斐波那契数列 实现方法
  • c语言斐波那契数列算法怎么实现
    斐波那契数列是指每个数都是前两个数之和的数列,即F(0) = 0,F(1) = 1,F(n) = F(n-1) + F(n-2)(n...
    99+
    2023-10-30
    c语言
  • 求第n个斐波那契数的几种方法(python)
    求第n个斐波那契数也可以使用多种方法,以下是几种基于 Python 的实现: 使用递归函数计算第n个斐波那契数 def fib(n): if n ...
    99+
    2023-10-28
    python numpy 开发语言
  • Python/R语言如何分别实现斐波那契数列
    这篇文章主要为大家展示了“Python/R语言如何分别实现斐波那契数列”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Python/R语言如何分别实现斐波那契数列”这篇文章吧。1、年龄计算有 5 ...
    99+
    2023-06-29
  • Python/R语言分别实现斐波那契数列的示例详解
    目录前言1、年龄计算1.1 图解问题1.2 代码解决1.3 实验小结2、斐波那契数列2.1 图解问题2.2 代码实现2.3 实验小结总结前言 此专栏为python与R语言对比学习的文...
    99+
    2022-11-13
  • MATLAB算法技巧和实现斐波那契数列的解决思路
    目录MATLAB算法技巧和实现斐波那契数列题目要求题目一:公倍数的应用题目二:斐波那契数列的应用解题思路代码实现运行结果总结MATLAB算法技巧和实现斐波那契数列 这篇博客主要说一下...
    99+
    2022-12-16
    MATLAB斐波那契数列 MATLAB算法
  • Python递归和生成器实现斐波那契数列有什么区别
    这篇文章主要讲解了“Python递归和生成器实现斐波那契数列有什么区别”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python递归和生成器实现斐波那契数列有什么区别”吧!前言斐波那契数列,...
    99+
    2023-06-27
  • C#实现变量交换、斐波那契数列、质数、回文方法合集
    目录交换两个变量的方法使用C#中的第三个变量交换两个数字不使用第三个变量交换数字的方法不使用第三个变量交换字符串的方法斐波纳奇数列如何从斐波那契数列中找到第N个斐波那契数列编号?质数...
    99+
    2022-11-13
  • C语言中斐波那契数列的三种实现方式(递归、循环、矩阵)
    目录一、递归二、循环三、矩阵《剑指offer》里讲到了一种斐波那契数列的 O(logN) 时间复杂度的实现,觉得挺有意思的,三种方法都记录一下。 一、递归    ...
    99+
    2022-11-13
  • Python实现求解斐波那契第n项的解法(包括矩阵乘法+快速幂)
    斐波那契数列 首先我们来定义一下斐波那契数列: 即数列的第0项: 算法一:递归 递归计算的节点个数是O(2ⁿ)的级别的,效率很低,存在大量的重复计算。 比如: f(...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作