793578477 发表于 2020-6-29 01:23:16

python基础:关于while循环语句的问题

本帖最后由 793578477 于 2020-6-29 01:25 编辑

各位鱼友大哥: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
1.在小甲鱼老师的课后习题中一行代码不明白呢print()这行代码在这个小游戏中起什么作用呢?一般print()不是要加引号吗?
2.自己开始编写了一个程序,有些漏洞,为什么运行了一次之后print一行就不再运行了呢?temp = input('请输入一个整数:')
number = int(temp)
while number:
    i = number - 1
    while i:
      print(' ', end = '')
      i = i - 1
    while number:
      print('*', end = '')
      number = number - 1


感谢各位鱼油大哥帮助指点{:9_221:}

WindRoa 发表于 2020-6-29 02:08:37

print函数有个内置参数默认值是’/n’

所以那个print()是用来换行的


WindRoa 发表于 2020-6-29 02:10:19

那个内置参数就是那个end,这点在函数快查分类里面有

小甲鱼的铁粉 发表于 2020-6-29 07:57:03

    while number:
      print('*', end = '')
      number = number - 1
这是你的第二个while number循环,里面你设置了number = number - 1,导致number = 0 时会退出这个循环, 但此时的number的值已经是0,也就是说你的第一个while number
number = int(temp)
while number:
也就是这个就执行了一次就退出了,
正确的做法应该向甲鱼老师那样引入一个新变量j,代替number去进行第二个while循环,这样你number的值就只能在主循环里改变了
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

小甲鱼的铁粉 发表于 2020-6-29 07:57:54

小甲鱼的铁粉 发表于 2020-6-29 07:57
这是你的第二个while number循环,里面你设置了number = number - 1,导致number = 0 时会退出这个循环,...

这样,就是你上面发的答案一样
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

Twilight6 发表于 2020-6-29 08:06:11

本帖最后由 Twilight6 于 2020-6-29 08:07 编辑




print 有个默认参数end = '\n'是等于换行符的,也就是起到换行的效果,你循环过程中的两个 print 将 end = ' '空格了所以不换行,这里两个循环打印的都是你单行的内容

而这行打印完成了这一行当然就需要我们换行 所以我们这个时候单独 print 就是表示只打印一个默认参数 end='\n' 换行符

而且 print 没有要求一定要传入参数哈



2.自己开始编写了一个程序,有些漏洞,为什么运行了一次之后print一行就不再运行了呢?

因为你的第一个循环条件是while number 而你循环内部的第二个循环条件也是while number 导致你第一次循环时候在第二个while number循环过程将你number 先减到 0 了

外部的大循环 因为你number = 0 导致条件不成立而退出循环 所以只会循环打印一行,你也可以这样写:

temp = input('请输入一个整数:')
number = int(temp)
for i in range(number):
    print(' '*(number-1)+'*'*number)
    number -= 1



793578477 发表于 2020-6-29 08:26:40

小甲鱼的铁粉 发表于 2020-6-29 07:57
这是你的第二个while number循环,里面你设置了number = number - 1,导致number = 0 时会退出这个循环,...

感谢鱼油大哥指点{:9_221:}

793578477 发表于 2020-6-29 08:27:41

Twilight6 发表于 2020-6-29 08:06
print 有个默认参数end = '\n'是等于换行符的,也就是起到换行的效果,你循环过程中的两个 print 将...

感谢鱼油大哥指点\爱心{:5_91:}

小甲鱼的铁粉 发表于 2020-6-29 08:27:57

793578477 发表于 2020-6-29 08:26
感谢鱼油大哥指点

{:10_297:}不用客气

793578477 发表于 2020-6-29 08:28:42

WindRoa 发表于 2020-6-29 02:10
那个内置参数就是那个end,这点在函数快查分类里面有

感谢鱼油大哥喏{:10_281:}

夏冬冬 发表于 2020-7-29 11:15:25

本帖最后由 夏冬冬 于 2020-7-29 12:01 编辑

感谢楼上几位大佬指点迷津
页: [1]
查看完整版本: python基础:关于while循环语句的问题