鱼C论坛

 找回密码
 立即注册
查看: 1330|回复: 2

[已解决]004讲:练习题第二题打印星号的问题

[复制链接]
发表于 2020-9-17 17:23:42 | 显示全部楼层 |阅读模式

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

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

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里面和我完全不一致,没有任何乘积和拼接的关系,为什么可以打印出对应的结果?

-----我的答案-----
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:36:26
本帖最后由 昨非 于 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同时起到计数的作用,根部不需要那么复杂的公式
好好理解一下
如果解决了,记得给个最佳
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-9-17 18:36:26 | 显示全部楼层    本楼为最佳答案   
本帖最后由 昨非 于 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同时起到计数的作用,根部不需要那么复杂的公式
好好理解一下
如果解决了,记得给个最佳
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-9-18 10:52:08 | 显示全部楼层
昨非 发表于 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,完成了图形的打印。

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-18 15:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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