Python之作业(二)

Python之作业(二)

作业

  • 求100以内的奇数和
  • 求100以内斐波那契数列
    • 其数值为:1、1、2、3、5、8、13、21、34,从第三位数开始,每个数都是前两个数相加的和。
  • 求斐波那契数列第101项
  • 打印如下菱形
   *
  ***
 *****
*******
 *****
  ***
   *

1.求100以内的奇数和

需求分析:
1.需求分析:先取到100以内的所有奇数
2.求和
Python之作业(二)_第1张图片
实现方法一:
昨晚下班之后开发做题,想半天没想明白,最后想了这么个办法,太蠢了。
代码分析:
1. a = [] # a 等于 一个空列表
2. for i in range(100): # 定义一个范围,定义范围之后想办法去奇数,可以先把范围缩小一点,比如10
3. if i % 2 == 1: # if判断一下i的值模2 是不是等于1,等于1就执行下一步,这一步是取奇数。
4. a.append(i) # a中插入i每趟执行循环的值
5. print(sum(a)) # 打印的时候再求和
Python之作业(二)_第2张图片
实现方法二:
在做斐波那契数列的时候灵光一现,直接加等不就好了吗,脑子真是个好东西。
代码分析:
1. a = 0 # 定义一个变量,值是0
2. for i in range(1, 100, 2): # for 循环直接获取1到100的奇数也就是设置步长为2
3. a += i # i每趟循环的结果+=到a中
4. print(a) # 打印a的值

2.求100以内斐波那契数列

  • 斐波那契数列规律:
    • 其数值为:1、1、2、3、5、8、13、21、34
      Python之作业(二)_第3张图片
      代码分析:
      这个实现方法,其实并没有完全实现成功。
    1. a = 1 # 先定义原始值:1
    2. b = 1 # 先定义原始值:1
    3. count = 1 # 设置一个计数器,每次循环+1
    4. for i in range(10): # for 循环设置一个小点的范围10次
    5. print(count, a, b) # 循环体代码执行前先进行打印值
    6. a = a + b # 这里就是死循环的地方,想不明白如何进行赋值,主要思想是如何才能a + b = b + a
    7. b = a + b # 想半天没想出来,写了这么一个方法。
    8. count += 1

也算是另类的实现方式吧,虽然觉得不合理
1. 1 1 # 第1趟代码执行,先打印,a和b的值都是1
2. 2 3 # 第2趟代码执行,a=a+b 所以a=2,b=a+b 所以b=3,依次类推
Python之作业(二)_第4张图片
实现方法二
代码分析:
1. a = 1 # 先定义原始值:1
2. b = 1 # 先定义原始值:1
3. count = 1 # 设置一个计数器,每次循环+1
4. for i in range(100): # for 循环可以先设置一个小点的范围10次,前几次都对了再大的数也能对
5. if a < 100: # if判断 a的值是不是小于100
6. print(count, a) # 小于100进行打印
7. a, b = b, a + b # 这里就是整个代码的精髓部分了,我也没有想出来网上查了一下,但是我只看了这一步,a的值等于b,b的值等于a+b
9. count += 1 # 计数器每次执行+1

3.求斐波那契数列第101项

Python之作业(二)_第5张图片
代码分析:
1. a = 1 # 先定义原始值:1
2. b = 1 # 先定义原始值:1
3. count = 1 # 设置一个计数器,每次循环+1
4. for i in range(100): # for 循环可以先设置一个小点的范围10次,前几次都对了再大的数也能对
5. a, b = b, a + b # 第2题做出来后这道题就好做了。
6. count += 1 # 计数器每次执行+1
7. print(count, a) # 打印值,在for循环体外,只打印最后一次的结果。

4.打印如下菱形

Python之作业(二)_第6张图片
找思路时print直接打印的星号
Python之作业(二)_第7张图片
自己最终的打印结果,只能做到这样了

Python之作业(二)_第8张图片
老师的代码,我尝试进行分析一下。
代码分析:
1. n = 7 # 假定7是行数
2. e = n // 2 # e等于n//2=3,e等于3,3就是第一行的空格是3个。
3. for i in range(-e, e+1): # for循环的范围 -e, e+1,获取菱形的空格数
4. if i < 0: # if判断i的值小0
5. print(' ' * -i, end='') # 打印空格-i的值
6. print('*' * (n - 2 * -i)) # 确定号的位置
7. else:
8. print(' ' * i, end='') # 打印空格i的值
9. print(' ' * i, end='') # 确定
号的位置

示例:
在这里插入图片描述
这样我们就获取到整个菱形的空格数。

Python之作业(二)_第9张图片

你可能感兴趣的:(Python,python,开发语言)