第三周

图形输出:

菱形

a = int(input())

c=a 

b=a                            -----为了便于后面循环打印使用,暂时将a的值暂时存放在临时变量cb

for i in range(1,a+1):  -----第一层循环打印三角形

    print("  "*(c-1),"*"*(2*i-1))-----随着行的增加,打印c-1个空格(我这里用的两个空格),2*i-1*

    c=c-1-----每增加一行,空格减少一个

if(i==a): -----临界条件,接下来打印倒三角

    for y in range(1,a):-----循环打印倒三角

        print("  "*y,"*"*(2*b-3))-----随着行增加,打印y个空格,2*b-3*

        b=b-1 -----每增加一行,*号减少

 

文件处理:

 

 

递归函数:

#----------------汉诺塔-----------------#

# 如果有n个圆盘,所需移动的步数为 2^n-1

i = 0# 定义一个函数给4个参数n是圆盘的个数,a代表A柱子,b,c 函数里面的是形式参数

def move(n,a,b,c):

    # 把变量i全局化,如果不全局化,只可访问读取不能进行操作修改

    global i

    if n==1:

        i += 1

        print('移动第',i,'',a,'-->',c)

    else:

        # 1.A柱上n-1个圆盘移动到B柱上

        move(n-1,a,c,b) # 传的才是实际参数

        # 2.A柱上最大的移动到C柱子上

        move(1,a,b,c)

        # 3.B柱子上n-1个圆盘移动到C柱子上

        move(n-1,b,a,c)    

move(4,'A','B','C')

移动第 1 次 A --> B
移动第 2 次 A --> C
移动第 3 次 B --> C
移动第 4 次 A --> B
移动第 5 次 C --> A
移动第 6 次 C --> B
移动第 7 次 A --> B
移动第 8 次 A --> C
移动第 9 次 B --> C
移动第 10 次 B --> A
移动第 11 次 C --> A
移动第 12 次 B --> C
移动第 13 次 A --> B
移动第 14 次 A --> C
移动第 15 次 B --> C

程序方法学:

计算思维与程序设计:

逻辑思维:推理与演绎,数学为代表,A-->B B--->C   A--->C

实证思维:实验与验证,物理为代表 引力波<-实验

计算思维:设计与构造,计算机为代表,汉诺塔递归

计算思维:Computional Thinking 抽象问题的计算过程,利用计算机自动化求解,计算机思维是基于计算机的思维方式

计算生态:竞争发展,相互依存,快速更迭

用户体验:进度展示,异常处理

IPO,自顶向下,模块化,配置化,应用开发的四个步骤

 

posted @ 2019-03-23 20:40  pypypy  阅读(329)  评论(0编辑  收藏  举报