Loading...
墨滴

浅唱与高歌

2021/09/22  阅读:32  主题:橙心

Python学习13

斐波那契数列

含义

一列数,第0项是0,第11,之后的第2项开始,每一项都是前面两个数的和

项:0 1 2 3 4 5 6 7 ...
值:0 1 1 2 3 5 8 13 ...

练习

  • 要求:获取用户输入的项数num,计算前num+1项斐波那契数列
# 项:0 1 2 3 4 5 6 7 ...
# 值:0 1 1 2 3 5 8 13 ...
num = int(input('请数入需要计算第几项:'))
n0 = 0
n1 = 1
count = 2
# 从之后的数字开始计算
if num < 0:
    print('请输入一个非负整数。')
elif num == 0:
    print(f'斐波那契数列:{n0}')
elif num == 1:
    print(f'斐波那契数列:{n0} {n1}')
else:
    print(f'斐波那契数列:{n0} {n1}', end=' ')
    while count <= num:
        # 计算当前位置数
        n2 = n0 + n1
        print(n2, end=' ')
        # 更新数据
        n0, n1 = n1, n2
        count += 1
   
# 运行结果:
请数入需要计算第几项:10
斐波那契数列:0 1 1 2 3 5 8 13 21 34 55  

百钱买百鸡

题目:

  • 一共有100元钱,需要买100只鸡
  • 公鸡3元,母鸡1元,小鸡0.5元
  • 问:100元买100鸡,一共有多少种方案

分析:

  • 100元全买公鸡:最多33只
  • 100元全买母鸡:最多100只
  • 100元全买小鸡:最多200只
  • 判断条件:
  • 1、是否买了100只;
  • 2、是否花费100元

题解:

num = 0
count = 0
for GJ in range(034):
    for MJ in range(0101):
        for XJ in range(0201):
            # 判断是否买了100只
            # 判断是否花费100元
            if GJ + MJ + XJ == 100 and GJ * 3 + MJ * 1 + XJ * 0.5 == 100:
                print(f'公鸡{GJ}只, 母鸡{MJ}只, 小鸡{XJ}只')
                num += 1
            count += 1
print(f'共{num}种购买方案')
print(f'程序共运行了{count}次')
   
# 运行结果:
公鸡0只, 母鸡100只, 小鸡0
公鸡1只, 母鸡95只, 小鸡4
公鸡2只, 母鸡90只, 小鸡8
公鸡3只, 母鸡85只, 小鸡12
公鸡4只, 母鸡80只, 小鸡16
公鸡5只, 母鸡75只, 小鸡20
公鸡6只, 母鸡70只, 小鸡24
公鸡7只, 母鸡65只, 小鸡28
公鸡8只, 母鸡60只, 小鸡32
公鸡9只, 母鸡55只, 小鸡36
公鸡10只, 母鸡50只, 小鸡40
公鸡11只, 母鸡45只, 小鸡44
公鸡12只, 母鸡40只, 小鸡48
公鸡13只, 母鸡35只, 小鸡52
公鸡14只, 母鸡30只, 小鸡56
公鸡15只, 母鸡25只, 小鸡60
公鸡16只, 母鸡20只, 小鸡64
公鸡17只, 母鸡15只, 小鸡68
公鸡18只, 母鸡10只, 小鸡72
公鸡19只, 母鸡5只, 小鸡76
公鸡20只, 母鸡0只, 小鸡80
21种购买方案
程序共运行了690234

代码优化:

  • 上面程序共三层循环,运行了690234
  • 优化思想:若公鸡和母鸡的数量确定后,小鸡的数量用100减去他两的数量即可,因此三层循环变成了两层循环
num = 0
count = 0
for GJ in range(034):
    for MJ in range(0101):
        XJ = 100- GJ-MJ
        # 判断是否买了100只
        # 判断是否花费100元
        if GJ + MJ + XJ == 100 and GJ * 3 + MJ * 1 + XJ * 0.5 == 100:
            print(f'公鸡{GJ}只, 母鸡{MJ}只, 小鸡{XJ}只')
            num += 1
        count += 1
print(f'共{num}种购买方案')
print(f'程序共运行了{count}次')
   
# 运行结果:
公鸡0只, 母鸡100只, 小鸡0
公鸡1只, 母鸡95只, 小鸡4
公鸡2只, 母鸡90只, 小鸡8
公鸡3只, 母鸡85只, 小鸡12
公鸡4只, 母鸡80只, 小鸡16
公鸡5只, 母鸡75只, 小鸡20
公鸡6只, 母鸡70只, 小鸡24
公鸡7只, 母鸡65只, 小鸡28
公鸡8只, 母鸡60只, 小鸡32
公鸡9只, 母鸡55只, 小鸡36
公鸡10只, 母鸡50只, 小鸡40
公鸡11只, 母鸡45只, 小鸡44
公鸡12只, 母鸡40只, 小鸡48
公鸡13只, 母鸡35只, 小鸡52
公鸡14只, 母鸡30只, 小鸡56
公鸡15只, 母鸡25只, 小鸡60
公鸡16只, 母鸡20只, 小鸡64
公鸡17只, 母鸡15只, 小鸡68
公鸡18只, 母鸡10只, 小鸡72
公鸡19只, 母鸡5只, 小鸡76
公鸡20只, 母鸡0只, 小鸡80
21种购买方案
程序共运行了3434

关注公众号小徐的快乐学习时光
一起学习、一起交流
!!!坚持!!!

浅唱与高歌

2021/09/22  阅读:32  主题:橙心

作者介绍

浅唱与高歌