鱼C论坛

 找回密码
 立即注册
查看: 1115|回复: 7

[已解决]第4讲课后作业,动动手第2个作业,实在看不明白,求解答

[复制链接]
发表于 2019-2-13 09:19:51 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
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('',end = '')   #为什么要打印空格?
2、 j = number
    while j:
为什么要赋值j,而且还要循环?



求大佬们解答,谢谢!
最佳答案
2019-2-13 10:14:00
本帖最后由 jackz007 于 2019-2-13 10:19 编辑

1、语句:
  1. print(' ' , end='')
复制代码

     其作用是实现在屏幕当前光标位置输出一个空格字符不换行,连续多次执行的效果就是向屏幕上输出多个连在一起的空格字符。那么,同理,语句:
  1. print('*' , end='')
复制代码

     的作用自然是在屏幕当前光标位置输出一个 '*' 字符不换行,多次执行的道理与前面相同。

2、语句:
  1.     j = number
  2.     while j:
  3.         print('*', end = '')
  4.         j = j - 1
复制代码

    这是一个相对独立的功能块,其目的是利用循环向屏幕连续输出由 number 指定个数的 '*' 字符。
    j 是循环变量,其作用自然是控制循环次数,语句 j = number 是在为循环变量赋初值,而语句 j = j - 1 的作用则是在为已打印输出的字符进行倒计数,直到为 0 循环终止。   
111.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-2-13 09:26:14 | 显示全部楼层
首先你要好好审题,它贴出的效果图是前面空格和后面*号相同,所以需要在前面打印空格。
后面J重新赋值也是为了实现打印和空格相同个数*号的目的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2019-2-13 09:27:18 | 显示全部楼层
1、你注意看题目要求,下图中根据你输入的整数,是要打印空格的。
2、循环j的原因是:j是由number赋值而来,你输入的数字是几,j就是几。循环它的目的是每一次循环可以打印一个‘*’。
033020k3eoeyvppljjyyp1.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2019-2-13 09:56:46 | 显示全部楼层
YiMingC 发表于 2019-2-13 09:27
1、你注意看题目要求,下图中根据你输入的整数,是要打印空格的。
2、循环j的原因是:j是由number赋值而来 ...

哦哦,知道了。
再请教一下,倒数第二行的print(),为什么只有它在着,才能按顺序排列下来,拿掉这个print(),得到的结果就只有1行?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-2-13 10:07:33 | 显示全部楼层
Adviser、 发表于 2019-2-13 09:56
哦哦,知道了。
再请教一下,倒数第二行的print(),为什么只有它在着,才能按顺序排列下来,拿掉这个pri ...

应该是print()函数默认输出后换行的吧。。。前面循环里的print有end=‘’没有换行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-2-13 10:09:04 | 显示全部楼层
1、print('',end = '')   代表此程序不换行,换行的话,就不整齐了。你可以试试看把这句去掉。

2、不循环j的话,哪来的*号呢?每循环一次j,j就减少1.一直循环到j为0退出当前循环。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-2-13 10:14:00 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jackz007 于 2019-2-13 10:19 编辑

1、语句:
  1. print(' ' , end='')
复制代码

     其作用是实现在屏幕当前光标位置输出一个空格字符不换行,连续多次执行的效果就是向屏幕上输出多个连在一起的空格字符。那么,同理,语句:
  1. print('*' , end='')
复制代码

     的作用自然是在屏幕当前光标位置输出一个 '*' 字符不换行,多次执行的道理与前面相同。

2、语句:
  1.     j = number
  2.     while j:
  3.         print('*', end = '')
  4.         j = j - 1
复制代码

    这是一个相对独立的功能块,其目的是利用循环向屏幕连续输出由 number 指定个数的 '*' 字符。
    j 是循环变量,其作用自然是控制循环次数,语句 j = number 是在为循环变量赋初值,而语句 j = j - 1 的作用则是在为已打印输出的字符进行倒计数,直到为 0 循环终止。   
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-2-13 10:40:32 | 显示全部楼层
本帖最后由 YiMingC 于 2019-2-13 10:41 编辑
Adviser、 发表于 2019-2-13 09:56
哦哦,知道了。
再请教一下,倒数第二行的print(),为什么只有它在着,才能按顺序排列下来,拿掉这个pri ...


你可以到python中documentation里查一下,print()里end参数默认是换行符,而你打印的时候可以设置这个参数:end= ‘’,这样就可以不换行。
F$NUQQ9(~06PKG%WO93AXWK.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-13 23:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表