python第四讲,有几个小问题没用搞明白,求大神指教!
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
在这组代码中,从i = number - 1
while i:
print(' ', end = '')
i = i - 1
j = number
while j:
print('*', end = '')
j = j - 1
print()
number = number - 1
没有搞明白是什么意思,i= number - 1 ,这里的 - 号代表什么意思,1又是代表什么意思? number减去一 减号,就是number减去1然后把值给i 小甲鱼的铁粉 发表于 2020-10-31 15:46
减号,就是number减去1然后把值给i
那 print(' ', end =' ')这又是什么意思呢,这段代码中除了前三行能理解是什么意思,后面的都没法理解! 摩擦哥 发表于 2020-10-31 15:59
那 print(' ', end =' ')这又是什么意思呢,这段代码中除了前三行能理解是什么意思,后面的都没 ...
print函数的默认是输出括号里面的内容后再自动输出一个换行,因为print里面的参数end默认为"\n",也就是换行,将end=‘’,就是不让print自动换行 小甲鱼的铁粉 发表于 2020-10-31 16:01
print函数的默认是输出括号里面的内容后再自动输出一个换行,因为print里面的参数end默认为"\n",也就是 ...
那老师你能在帮我讲解一下,这一段代码运行的整个逻辑吗 ?我还是有点不太懂,小甲鱼老师的课上好像没有讲过这一段。有点摸不着头脑 ! 摩擦哥 发表于 2020-10-31 16:27
那老师你能在帮我讲解一下,这一段代码运行的整个逻辑吗 ?我还是有点不太懂,小甲鱼老师的课上好像没有 ...
这个代码的目的是锻炼自己的使用循环嵌套的能力,题目的要求是输出这样一个形状,比如说我输入6,就输出这个形状
请输入一个整数:6
******
*****
****
***
**
*
先分析这个图形, 一共有三部分,①行数②空格③*号
所以可以用三个循环制作这个图形
while number:
这一句代码就是用来控制行的,不同的行的输出结果不同
i = number - 1
while i:
print(' ', end = '')
i = i - 1
然后每行都通过这个循环输出空格,如果一共有6行,number的值是6,第一行是5个空格,第二行是4个...
j = number
while j:
print('*', end = '')
j = j - 1
然后每行通过这个循环输出*号,如果一共有6行,number的值是6,第一行就有6个*号,第二行是5个....
print()
每输出完一行再使用一个print()输出换行
最后
number = number - 1
知道number=0时,退出 本帖最后由 一抹心尘 于 2020-11-2 12:31 编辑
楼主的问题出自旧版4讲动动手2题的答案。
i= number - 1 ,这里的 - 号代表减法,就是数学中的减法,
所以这里就是减1,然后再把值赋给前面的 i .
我给你再把这个代码用通俗的语言描述以下。
temp = input('请输入一个整数:')
number = int(temp)
这个就很常规,就是输入。
while number:
i = number - 1
当 你输入的数值 为真 也就是不为0时,判断成立 ,
此时将你输入的数值减去1 ,再将它的值赋给 i .
while i:
print(' ', end = '')
i = i - 1
当 你前面赋的值 i 为真,也就是不等于0时,判断为真, 执行语句
打印一个空格,在打印语句执行完毕之后,j紧挨着结束,因为print ()它的默认参数结束时它是一个换行符,你如果不以 end = ''
结束, 它就换行了。然后打印的空格数比你输入的值少一个空格。如果没有,这些星星就不会打印在同一行,就不会是在星星的前面是空格,而是在星星上面全是空行。
不去掉:
********
*******
******
*****
****
***
**
*
去掉:
********
*******
******
*****
****
***
**
*
然后就是把i 的值减1 赋值给新的 i ,再就是把 number 的值赋给 j 。注意这里的 number变量就是你一开始输入的数值,这前面没有对它做任何值的变动,改变量没有变化。
while j:
print('*', end = '')
j = j - 1
当 j 为真时,也就是不为0 时,判断为真,执行语句。
打印一个星星,同上,以一个空格结束,而不是换行。
j 的 值 减去1 再赋给 j 。
这里有j 也就是你输入的值为多少,就打印多少个星星,因为它是从j = number 算起的,j 的值每真一次就打印一个星星,然后再减去1 ,继续循环,直到j 为0 判断为否,不再进入循环体。
看到这里就很明显了,这就是两个循环体,
先执行第一个,因为i = number 也就是比你输入的值要小1 ,所以打印的空格数比你输入值少一个空格,然后加了end = '' 不再是默认的换行符,
所以打印在同一行所有的空格,且紧挨着打印,然后再是执行第2个循环体,第2个循环体以j = number ,那么自然打印的就是你输入值的星星数,你输入多少,打印多少
同样的以end = '' 结束,则紧挨着循环打印星星,不会换行。
最后的print()是换行的意思,因为这里面没有说明,就是默认 end = '\n' 也就是换行符。
number = number - 1 表示,运行完一次2个循环之后,将输入的数值number - 1 再赋值给新的number ,那么重新进入判断时,数字就比上次小1 了。如果还符合判断为真 ,那就继续打印
打印的空格和星星都比上次少1 ,如果为假,即此时的number = 0 就判断为假,结束。
所以综上所述,打印的最终结果就是,前面比你输入值要少1的空格,后面是你输入值的星星数,到小一行空格和星星数依次递减,直至为0 。
谢谢大佬详细的解释了print()和end=‘’的意思,以及while 0:跳出循环
页:
[1]