鱼C论坛

 找回密码
 立即注册
查看: 2022|回复: 12

[已解决]第004课课后题动动手2

[复制链接]
发表于 2017-4-12 13:29:17 | 显示全部楼层 |阅读模式

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

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

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
小甲鱼给出的是这个代码。
我的疑问是:为什么*和 (空格)都不用乘以i和j呢?
最佳答案
2017-4-12 13:40:03
本帖最后由 gopythoner 于 2017-4-12 13:43 编辑

你的疑问是空格和*并没有乘以i和j,但是却打印了i和j次,是吧
你看到第一行打印了7个空格和7个*,以为是空格乘以7,*乘以7对吧
其实并不是的,第一行的7个空格和7个*是分了7次循环打印的,每次只打印了一个,之所以看起来是7个放在一起了是因为print(' ', end = '')这里的end=''是表示不换行,所以会把这7个放在一起,如果你把这里的end=''去掉,就会看到每行只有一个空格和一个*
同理,其他行也是这样
那为什么打印了一行之后又开始换行呢?因为上面2个循环每次结束之后会运行一次print()这里,这里就有一个换行符
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-4-12 13:36:02 | 显示全部楼层
程序中除了外面的一个while循环,里面还有2个while循环,这两个循环都是控制空格和星号的打印次数的,当然用*代替循环也是可以的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-12 13:40:03 | 显示全部楼层    本楼为最佳答案   
本帖最后由 gopythoner 于 2017-4-12 13:43 编辑

你的疑问是空格和*并没有乘以i和j,但是却打印了i和j次,是吧
你看到第一行打印了7个空格和7个*,以为是空格乘以7,*乘以7对吧
其实并不是的,第一行的7个空格和7个*是分了7次循环打印的,每次只打印了一个,之所以看起来是7个放在一起了是因为print(' ', end = '')这里的end=''是表示不换行,所以会把这7个放在一起,如果你把这里的end=''去掉,就会看到每行只有一个空格和一个*
同理,其他行也是这样
那为什么打印了一行之后又开始换行呢?因为上面2个循环每次结束之后会运行一次print()这里,这里就有一个换行符
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-12 13:45:41 | 显示全部楼层
回答的太清楚了!
我现在感觉学起来很难啊,总觉得不会用计算机听得懂的语言来表达
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-12 15:39:37 | 显示全部楼层
pejayang 发表于 2017-4-12 13:45
回答的太清楚了!
我现在感觉学起来很难啊,总觉得不会用计算机听得懂的语言来表达

你们会觉得我给的答案很清楚是因为我也是新手,很多问题我也遇到过,但是我后来理解了,所以我知道你们想问的问题关键点在哪里
其实前面的大佬们可能已经用一句很简单的话说出了原因,只是你们不理解罢了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-13 14:58:58 | 显示全部楼层
求教,i = i - 1 是什么意思啊?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-14 11:50:27 | 显示全部楼层
gopythoner 发表于 2017-4-12 13:40
你的疑问是空格和*并没有乘以i和j,但是却打印了i和j次,是吧
你看到第一行打印了7个空格和7个*,以为是空 ...

如果把输出结果倒一下呢,即第一行打印1个空格和1个*,最后一行7个空格和7个*,代码需要怎么调整呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-14 12:02:12 | 显示全部楼层
本帖最后由 gopythoner 于 2017-4-14 12:03 编辑
fuu2200 发表于 2017-4-14 11:50
如果把输出结果倒一下呢,即第一行打印1个空格和1个*,最后一行7个空格和7个*,代码需要怎么调整呢?


可以改成下面这样,主要就是让number由之前的大到小变成小到大输出,所以可以重新定义一个number,这个number不再是你输入时候的数字,但是它最大值就是为你输入的数字,所以代码可以这样写:
  1. temp = input('请输入一个整数:')
  2. number1 = int(temp)
  3. number = 0
  4. while number<=number1:
  5.     i = 0
  6.     while i<number:
  7.         print(' ', end = '')
  8.         i = i + 1
  9.     j = 1
  10.     while j<=number:
  11.         print('*', end = '')
  12.         j = j + 1
  13.     print()
  14.     number = number + 1
复制代码

输出:
  1. 请输入一个整数: 7

  2. *
  3.   **
  4.    ***
  5.     ****
  6.      *****
  7.       ******
  8.        *******
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-14 12:04:10 | 显示全部楼层
zhhmms 发表于 2017-4-13 14:58
求教,i = i - 1 是什么意思啊?

意思是每次循环一次,i的值就减少1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-14 13:25:12 | 显示全部楼层
gopythoner 发表于 2017-4-14 12:02
可以改成下面这样,主要就是让number由之前的大到小变成小到大输出,所以可以重新定义一个number,这个n ...

你说的这个明白啦。不过再请教一下,下面这个代码也可以实现,但是i、j 底下两个while 循环还没搞懂是,为什么也能从小到大输出了?
  1. num = int(input('请输入一个数:'))
  2. x=num
  3. while num:
  4.     i = 0
  5.     while i < x-(num-1):
  6.         print(' ',end = '')
  7.         i= i + 1
  8.     j = 1
  9.     while j <= x-(num-1):
  10.         print('#',end = '')
  11.         j = j + 1
  12.     print()
  13.     num = num - 1
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-14 14:32:05 | 显示全部楼层
本帖最后由 gopythoner 于 2017-4-14 14:34 编辑
fuu2200 发表于 2017-4-14 13:25
你说的这个明白啦。不过再请教一下,下面这个代码也可以实现,但是i、j 底下两个while 循环还没搞懂是, ...


这个跟我改的那个其实是一样的,只是表达方式有一点不一样而已,
总之你要从小到大的话,中间2个while循环里面的数字就是从小到大
最外层的那个迭代对象随便是递增(我写的是递增)还是递减(你这个是递减num = num - 1)都没关系,那个不影响每次打印的个数,只影响打印的行数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-19 16:27:52 | 显示全部楼层
gopythoner 发表于 2017-4-14 12:02
可以改成下面这样,主要就是让number由之前的大到小变成小到大输出,所以可以重新定义一个number,这个n ...

我还是觉得这种循环套循环的比较麻烦,我更倾向于一种循环的:
  1. temp = input('请输入一个整数:')
  2. number = int(temp)
  3. i = 1
  4. j = 1
  5. while number:
  6.     print(' ' * i , end = '')
  7.     print('*' * i , end = '')
  8.     i += 1
  9.     print()
  10.     number -= 1
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-19 16:28:37 | 显示全部楼层
fuu2200 发表于 2017-4-14 13:25
你说的这个明白啦。不过再请教一下,下面这个代码也可以实现,但是i、j 底下两个while 循环还没搞懂是, ...

我自己是这么写的:
  1. temp = input('请输入一个整数:')
  2. number = int(temp)
  3. i = 1
  4. j = 1
  5. while number:
  6.     print(' ' * i , end = '')
  7.     print('*' * i , end = '')
  8.     i += 1
  9.     print()
  10.     number -= 1
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-17 12:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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