004讲:练习题第二题打印星号的问题
-----小甲鱼的答案-----
temp = input('请输入一个整数:')
number = int(temp)
while number:
i = number - 1
while i:
print(' ', end = '')
i = i - 1
j = number
while j:
print('*', end = '')
j = j - 1
print()
number = number - 1
小甲鱼的答案为什么可以打出空格和星号的组合,我的答案虽然也可以打出,但是思路完全不一样 没有理解,需要前辈们指点一下疑问:
1. 在print里面和我完全不一致,没有任何乘积和拼接的关系,为什么可以打印出对应的结果?
-----我的答案-----
print('-------------------------第四课小游戏课后习题----------------------------')
temp = input("请输入一个整数:") #要求用户输入一个整数
n = int(temp) #命名变量为n,将用户输入的整数赋值与n
m = 0 #命名判断变量为m,初始值为0
if n > m: #判断n是否大于m
m = m + 1 #如若n>m,则m+1,并打印字符串,打印规则:n-m个空格和n-m+1个*号
print(" " * (n - m) + '*'* (n - m + 1) )
else: #如若n<=m,则直接打印*号,结束
print('*')
while n != m: #判断n是否与m相等
if n > m: #如若n>m,则m+1,并按照规则打印,继续判断m是否符合循环条件
m = m + 1
print(' '* (n - m) + '*'* (n - m + 1) )
else: #否则打印*号
print('*')
本帖最后由 昨非 于 2020-9-17 18:41 编辑
temp = input('请输入一个整数:')
number = int(temp)
while number: #外循环
i = number - 1
while i:#这层循环4到0内循环前半部分
print(' ', end = '')#每行打印空格
i = i - 1
j = number #这层循环5到0
while j:
print('*', end = '')#每行打印*号(在空格后)内循环后半部分
j = j - 1
print()
number = number - 1
见注释,之所以能实现是因为i和j同时起到计数的作用,根部不需要那么复杂的公式
好好理解一下
如果解决了,记得给个最佳 昨非 发表于 2020-9-17 18:36
见注释,之所以能实现是因为i和j同时起到计数的作用,根部不需要那么复杂的公式
好好理解一下
如果解决 ...
我明白了。最主要的是内部两个是循环的问题,之前没理解是由于我把整体只看成一个循环了,没有注意i 和 j的循环结果。谢谢。
首先,当number不等于0时执行内循环,
内循环有两个:
第一个关于i,第一次number = 8初次执行i的内循环,因此进入以后 i的值为7,在i的循环末尾的 i - 1,也就执行了7,6,5,4,3,2,1共7次,打印了七个空格,第8次由于 i = 0 跳出循环,第一个内循环的第一次循环结束;
第二个关于j,第一次j=number=8,进入j的内循环以后,j = 8,通过末尾的公式,j=j-1,执行了8,7,6,5,4,3,2,1 共8次,打印了8个*号,第二个内循环的第一次循环结束;
*号会打印在空格后面是因为j 循环在i的下面,后执行
以此类推,在外循环执行的number= number - 1 整体循环就完成了8次,分别是number等于8 7 6 5 4 3 2 1,完成了图形的打印。
页:
[1]