004讲课后题 有一点不太明白
动动手第二题为了输出这个
请输入一个整数:8
********
*******
******
*****
****
***
**
*
则应该:
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
在这个循环里 i最开始为number-1=7 的话print(' ',end = '') 表示连着输出7个空格
但是这一讲的前面课后第一题
i = 10
while i:
print('我爱鱼C!')
i = i - 1
表示的却是现i = 10,执行print('我爱鱼C!'),打印出我爱鱼C!,再执行 i = i - 1
得i =9,执行 print('我爱鱼C!'),打印出我爱鱼C!,再执行 i = i - 1
得i =8,执行 print('我爱鱼C!'),打印出我爱鱼C!,再执行 i = i - 1
.
.
.
.
这样循环,当 i = 0 时退出循环
如果按照上一个题的逻辑 应该是 当i=10的时候 执行的是输出10个我爱鱼C,当i=9的时候执行输出9个我爱鱼C啊????
原题是这个上面打错了
请输入一个整数:8
********
*******
******
*****
****
***
**
* i控制空格数,j控制“*”
Number-1是规律,有number个‘*’,就有number-1个空格
两个while 的逻辑没有什么不同啊,到底想问什么。。 “如果按照上一个题的逻辑 应该是 当i=10的时候 执行的是输出10个我爱鱼C,当i=9的时候执行输出9个我爱鱼C。。。。。。”
楼主差矣,是每次循环只打印 1 个 "我爱鱼C",整个循环过程总共打印出 10 个 "我爱鱼C"。 jackz007 发表于 2019-12-5 22:20
“如果按照上一个题的逻辑 应该是 当i=10的时候 执行的是输出10个我爱鱼C,当i=9的时候执行输出9个 ...
想问问 同样最后一步 是i-1
为什么第一个 在下一个i-1循环之前 是直接打出了7个空格 下一个循环前面打出6个空格
而第二个题 在下一个i-1循环之间 只打出了 一个我爱鱼C 下一个循环还是只打出一个我爱鱼C
啊 WXF666 发表于 2019-12-5 22:13
i控制空格数,j控制“*”
Number-1是规律,有number个‘*’,就有number-1个空格
两个while 的逻辑没有什 ...
可能我上面说的太罗嗦了
想问问 同样最后一步 是i-1
为什么第一个 在下一个i-1循环之前 是直接打出了7个空格加星号下一个循环前面打出6个空格加星号
而第二个题 在下一个i-1循环之间 只打出了 一个我爱鱼C 下一个循环还是只打出一个我爱鱼C
明明是一样的流程 第一道题加起来一共打了7+6+5+4+3+2+1个空格 而第二道题一共只打了10个我爱鱼C
啊 有始有终 发表于 2019-12-5 22:35
可能我上面说的太罗嗦了
想问问 同样最后一步 是i-1
为什么第一个 在下一个i-1循环之前 是直接打出了7 ...
不一样,第一个有end =‘’,不用换行就可以直接继续在后面打印,你第二个while的print后面加上end= ‘’试试就知道了
有始有终 发表于 2019-12-5 22:35
可能我上面说的太罗嗦了
想问问 同样最后一步 是i-1
为什么第一个 在下一个i-1循环之前 是直接打出了7 ...
第一道题是双层循环,与第二题不同,第二题是单层循环。 尝试回答你帖子中的这个疑问:“如果按照上一个题的逻辑 应该是 当i=10的时候 执行的是输出10个我爱鱼C,当i=9的时候执行输出9个我爱鱼C啊????”
我运行代码后得到的结论是,的确会打印出10个"我爱鱼C!"。
另外说实话没有太明白你的问题。。建议首先总结抛出你的问题,比如“你认为... 实际结果...我的疑问是...”
修改代码加入了print当前i值如下,希望能帮上忙。
i = 10
while i:
print('我爱鱼C!')
print('此时i值为:', i, '进入下一次循环')
i = i - 1
我理解的是while i和while j都是一个单独的循环,当while i循环一直运行直至不满足条件后才会进行while j循环,所以才会是多个*而不是一个* 本帖最后由 陌上酒 于 2019-12-28 13:21 编辑
第一个课后题里面再给i赋值的时候就已经是‘i = number -1’了,
所以这个循环
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 = 10
while i:
print('我爱鱼C!')
i = i - 1
表示的却是现i = 10,执行print('我爱鱼C!'),打印出我爱鱼C!,再执行 i = i - 1
得i =9,执行 print('我爱鱼C!'),打印出我爱鱼C!,再执行 i = i - 1
得i =8,执行 print('我爱鱼C!'),打印出我爱鱼C!,再执行 i = i - 1
=========================================
以上 如果你想当i=10的时候 执行的是输出10个我爱鱼C,当i=9的时候执行输出9个我爱鱼C,那么就要改成print('我爱鱼C!'*i) i=int(input("请输入一个整数:"))
while i>0:
print(" "*i+"*"*i)
i=i-1
我的代码是这样的,觉得更加简洁一点。
页:
[1]