输出行数
每一行会输出一个数字
第一行会输出1
第二行会输出2
。。。
第五行会输出5
输出符号,符号数量与行号保持一致
例如第2行出2个符号,第6行出6个符号
用到了
字符串*整数
的功能
实现符号的先递增再增减
找规律
对于总行数为5行的情况
第123行,符号的数量与行号是保持一致的。第1行打一个符号,第2行打二个符号,第3行打三个符号
第45行,符号的数量会在之前的基础上减一。第4行输出的符号会在第3行输出的符号数量上减1,第5行输出的符号会在第4行输出的符号数量上减1
第几行打印几个星星的实现
目标:
第一行,输出1
第二行,输出2
第三行,输出3
第四行,输出2
第五行,输出1
现实步骤
通过循环,先把行号输出出来
变量current_row是行号的一个变量
观察输出的规律
我们自己发现,对于总的行数为五行的情况
第123行,分别打印123个符号
第45行,符号就开始递减了
控制符号数量的变量,诞生, print_num
因为符号与行号不是一一对应的关系
所以我们不能够用当前是第几行的行号,例如当前是第4行,我们不能以数字4作为打印符号的数量(因为第4行的时候,我们应该打印2个符号)
由于上面的原因,我们需要一个变量print_num,用于控制符号打印几个。
有了这个变量,我们通过
print (符号*print_num, end='')
的方式,可以输出多个符号
因此,根据我们发现的规律
只需要让第一二三行的时候,print_num 与行号 current_num 相等就可以
第四,五行的时候,print_num 较之前的自己的值,相减1,就可
这是一个要么增,要么减的两种情况
所以我们可以使用二路分支来解决
current_row = 1 # 变量,代表第几行
while current_row <= 5:
if current_row <= 3:
print_num = current_row
else:
print_num -= 1
print('第%d行,符号有%d个' %(current_row, print_num))
current_row += 1
根据数字3,打印3个符号,在一行
print('0'*3, end='')
升级用变量n,打印n个符号在一行
n = 4
print('0'*n, end='')
确认代码的功能
上面的代码具有一个功能
就是打印输出一些符号,这些符号在同一行
符号的数量由变量n来决定
n的值为3,打印三个,n的值为50,打印五十个
对打印的代码进行再次修改
print_num = 4
print('0'*print_num, end='')
通过控制print_num变量
可以控制符号打印几个
再次核对功能
print_num = 4
print('0'*print_num, end='')
这两行代码的功能
是打印多个符号,当前的符号是0,当前打印符号的数量是由变量print_num来定的
print_num的值为多少
那么就会打印多少个0
所以
我们如果希望控制一行打印几个0,只需要对print_num进行数值的修改就好
打印单行多个符号的代码,上阵,使生效
current_row = 1 # 变量,代表第几行
print_num = 1
while current_row <= 5:
if current_row <= 3:
print_num = current_row
else:
print_num -= 1
# print_num = 4
print('0' * print_num, end='')
print('第%d行,符号有%d个' %(current_row, print_num))
current_row += 1
圈圈先变少,后变多
功能已实现
下一步,公式化
五行,变七行,变N行,让代码活起来
变七行
current_row = 1 # 变量,代表第几行
print_num = 1
while current_row <= 7:
# while current_row <= 5:
if current_row <= 4:
# if current_row <= 3:
print_num = current_row
else:
print_num -= 1
# print_num = 4
print('0' * print_num, end='')
print('第%d行,符号有%d个' %(current_row, print_num))
current_row += 1
找到转折点
1234567,这串数字中找4
12345,这串数字中找3
123,这串数字中找2
经过对三组数字的寻找规律发现,有多种办法可以找到中间的数字
1,最大数加一后,除二
7+1= 8 8/2 = 4
5+1=6 6/2 =3
3+1 = 4 4/2 = 2
公式可归纳为
最中间的数 =(最大数+1)/2
2,最大数直接除2,取整数位,再加1
7/2 = 3.5 取3 3+1 = 4
5/2 = 2.5 取2 2+1 = 3
3/2 = 1.5 取1 1+1 = 2
公式可归纳为
最中间的数 = int(最大值/2) +1
最中间的数 = 最大值//2 +1