福建建设银行网站,网页设计html期末考试,德州做网站建设的公司哪家好,3g免费网站前面分享的四道题目如下#xff1a;
Python-100 | 练习题 01 列表推导式Python-100 练习题 02Python-100 练习题 03 完全平方数Python-100 练习题 04 判断天数
这次是分享 Python-100 例的第五和第六题#xff0c;分别是排序和斐波那契数列问题#xff0c;这两道题目…前面分享的四道题目如下
Python-100 | 练习题 01 列表推导式Python-100 练习题 02Python-100 练习题 03 完全平方数Python-100 练习题 04 判断天数
这次是分享 Python-100 例的第五和第六题分别是排序和斐波那契数列问题这两道题目其实都是非常常见的问题特别是后者一般会在数据结构的教程中讲述到递归这个知识点的时候作为例题进行介绍的。 Example-5 排序 题目输入三个整数 x,y,z请把这三个数由小到大输出。 思路
考虑令 x 保存最小的数值即先令 x 分别和 yz 作比较通过比较后x变成最小值接着 y 和 z 比较即可完成排序
代码实现
代码实现上有两种一种就是手动实现排序过程另一种就是采用内置函数。
def sort_numbers_1():x int(input(integer:\n))y int(input(integer:\n))z int(input(integer:\n))print(input numbers: x%d, y%d, z%d % (x, y, z))if x y:x, y y, xif x z:x, z z, xif y z:y, z z, yprint(sorted: x%d, y%d, z%d % (x, y, z))# 利用列表的内置函数 sort()
def sort_numbers_2():l []for i in range(3):x int(input(integer:\n))l.append(x)print(original list:, l)l.sort()print(sorted:, l)测试样例如下
# sort_numbers_1()运行结果
integer:
1
integer:
0
integer:
5
input numbers: x1, y0, z5
sorted: x0, y1, z5# sort_numbers_2() 运行结果
integer:
1
integer:
0
integer:
5
original list: [1, 0, 5]
sorted: [0, 1, 5]Example-6 斐波那契数列 题目斐波那契数列 思路
斐波那契数列Fibonacci sequence又称黄金分割数列指的是这样一个数列0、1、1、2、3、5、8、13、21、34、…
数学上的定义如下
n0: F(0)0
n1: F(1)1
n2: F(n)F(n-1)F(n-2)代码实现
需要输出斐波那契数列的第 n 个数实现方法如下既可以通过迭代实现也可以利用递归实现
# 采用迭代循环实现
def fib1(n):a, b 1, 1# n 必须大于等于 2for i in range(n - 1):a, b b, a breturn a# 递归实现
def fib2(n):if 0 n 2:return 1else:return fib2(n - 1) fib2(n - 2)如果是需要输出给定个数的所有斐波那契数列代码如下
# 输出指定个数的斐波那契数列
def fib_array(n):if n 1:return [1]if n 2:return [1, 1]fibs [1, 1]for i in range(2, n):fibs.append(fibs[-1] fibs[-2])return fibs测试结果如下
a1 fib1(10)
a2 fib2(10)
fibs fib_array(10)
print(fib1 result, a1)
print(fib2 result, a2)
print(fib array, fibs)# 输出结果
# fib1 result 55
# fib2 result 55
# fib array [1, 1, 2, 3, 5, 8, 13, 21, 34, 55]另外这里更推荐采用迭代实现斐波那契数列而不是递归做法主要是递归实现一方面是调用函数自身而函数调用是有时间和空间的消耗这会影响效率问题另一方面是递归中很多计算都是重复的它本质上是将一个问题分解成多个小问题这些多个小问题存在相互重叠的部分也就会出现重复计算的问题。
这里选择 n30计算两种方法使用的时间结果如下
start time.time()
a1 fib1(30)
print(fib1 cost time: , time.time() - start)
print(fib1 result, a1)
start2 time.time()
a2 fib2(30)
print(fib2 cost time: , time.time() - start2)
print(fib2 result, a2)输出结果如下
fib1 cost time: 0.0
fib1 result 832040
fib2 cost time: 0.39077210426330566
fib2 result 832040可以看到递归实现所需要的时间明显大于迭代实现的方法。
因此尽管递归的代码看上去更加简洁但从实际应用考虑需要选择效率更高的迭代实现方法。 小结
今天分享的两道题目就到这里如果你有更好的解决方法也可以在下方留言谢谢。 欢迎关注我的微信公众号–机器学习与计算机视觉或者扫描下方的二维码大家一起交流学习和进步 往期精彩推荐
Python-100 练习系列
Python-100 | 练习题 01 列表推导式Python-100 练习题 02Python-100 练习题 03 完全平方数Python-100 练习题 04 判断天数
机器学习系列
机器学习入门系列1–机器学习概览机器学习入门系列(2)–如何构建一个完整的机器学习项目(一)机器学习数据集的获取和测试集的构建方法特征工程之数据预处理上特征工程之数据预处理下特征工程之特征缩放特征编码特征工程(完)常用机器学习算法汇总比较(上常用机器学习算法汇总比较(中
Github项目 资源教程推荐
[Github 项目推荐] 一个更好阅读和查找论文的网站[资源分享] TensorFlow 官方中文版教程来了必读的AI和深度学习博客[教程]一份简单易懂的 TensorFlow 教程[资源]推荐一些Python书籍和教程入门和进阶的都有[Github项目推荐] 机器学习 Python 知识点速查表