第三周
图形输出:
菱形
a = int(input())
c=a
b=a -----为了便于后面循环打印使用,暂时将a的值暂时存放在临时变量c和b中
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,自顶向下,模块化,配置化,应用开发的四个步骤