- A+
这篇文章主要给大家介绍了利用Python实现斐波那契数列的几种方法,文中通过示例代码介绍的非常详细,对大家的学习或者使用Python具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
斐波那契数列——经典例子,永不过时!!!
1.for循环
1
2
3
4
5
6
7
8
|
def fibonacci1(n): a, b = 0 , 1 for i in range (n): a, b = b, a + b print (a) fibonacci1( 3 ) |
或
1
2
3
4
5
6
7
|
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循环
1
2
3
4
5
6
7
8
9
|
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.使用递归
1
2
3
4
5
6
|
def fib2(q): if q = = 1 or q = = 2 : return 1 return fib2(q - 1 ) + fib2(q - 2 ) print (fib2( 9 )) |
4.递归+for循环
1
2
3
4
5
6
7
8
9
10
|
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循环
1
2
3
4
5
6
7
8
9
10
11
12
|
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循环
1
2
3
4
5
6
7
8
9
10
|
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.指定列表
1
2
3
4
5
6
7
8
9
10
11
|
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)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
# 导入 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 每日一练
1
2
3
4
5
6
7
8
9
10
11
12
13
|
程序运行结果如下:
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列设置为索引
1
2
3
|
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
1
2
3
4
|
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合并
1
2
3
4
|
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列减去之前生成随机数列
1
2
3
4
|
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、检查数据中是否含有任何缺失值
1
2
3
4
|
jch = df.isnull().values. any () print (jch) # 运行结果为:False print () |
46、将popularity列类型转换为浮点数
1
2
3
4
|
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的次数
1
2
3
4
|
cs = len (df[df[ 'popularity' ] > 100 ]) print (cs) # 运行结果为:5 print () |
48、查看project列共有几种学历
1
2
3
4
|
ckj = df[ 'project' ].nunique() print (ckj) # 运行结果为:7 print () |
49、查看每科出现的次数
1
2
3
4
|
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行
1
2
3
4
|
df1 = df[[ 'popularity' , 'new' ]] 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实现斐波那契数列的多种写法总结的文章就介绍到这了