python基础训练 day3

python基础训练 day3

题目来源

小白打卡第三天。

  • 第一题
题目:输入三个整数x,y,z,请把这三个数由小到大输出。

看到题目,首先反映是排序算法,其次想到了python中的sorted()函数。

list_0 = []
for i in ['x', 'y', 'z']:
    you_input = int(input(f'请输入{i}'))
    list_0.append(you_input)
print(sorted(list_0))

啪的一下,很快啊!

# 运行结果
请输入x5
请输入y4
请输入z9
[4, 5, 9]

直接上sorted()是不是有点草率了。。。起不到训练效果,然后就多想了一点。定义一个新列表,在用min()函数选取list_0中的最小值,建立索引然后把老列表中最小的值去掉,在新列表中加进去。

list_0 = []
for i in ['x', 'y', 'z']:
    you_input = int(input(f'请输入{i}'))
    list_0.append(you_input)
print(list_0)
list_1 = []
for i in ['x', 'y', 'z']:
    i = min(list_0)
    list_0.pop(list_0.index(i))
    list_1.append(i)

print(list_1)

之前好像看到过排序算法的总结,查了一下,好家伙一共有10种排序算法。

一并附上:

(1)冒泡排序;(2)选择排序;(3)插入排序;(4)希尔排序;(5)归并排序;

(6)快速排序;(7)基数排序;(8)堆排序;(9)计数排序;(10)桶排序。

# 运行结果
请输入x5
请输入y4
请输入z9
[5, 4, 9]
[4, 5, 9]
  • 第二题
# 斐波那契数列。

斐波那契数列(Fibonacci sequence),又称黄金分割数列,指的是这样一个数列:1、1、2、3、5、8、13、21、34。

在学习的时候练习过,递归基操:

def feibo(n):
    if n == 1:
        return 1
    if n == 2:
        return 1
    return feibo(n-1) + feibo(n-2)
print(feibo(8))

运行结果

21

但是递归它效率太低,空间复杂度(好像是这个词来着…)太高,所以可以用另一种方法

def feibo(n):
    x1 = 1
    x2 = 1
    i = 2
    while True:
        if n == 1:
            return x1
        if n == 2:
            return x2
        x1, x2 = x2, x1+x2
        if i == n:
            return x1
        i += 1
print(feibo(8))

运行结果

21

完成第三日打卡!

世上无难事,只要肯攀登

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值