鱼C论坛

 找回密码
 立即注册
查看: 1551|回复: 10

[已解决]python基础:关于while循环语句的问题

[复制链接]
发表于 2020-6-29 01:23:16 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 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
感谢各位鱼油大哥帮助指点
最佳答案
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的值就只能在主循环里改变了
[code]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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-29 02:08:37 From FishC Mobile | 显示全部楼层
print函数有个内置参数默认值是’/n’

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


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

使用道具 举报

发表于 2020-6-29 02:10:19 From FishC Mobile | 显示全部楼层
那个内置参数就是那个end,这点在函数快查分类里面有
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 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的值就只能在主循环里改变了
[code]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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 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



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

使用道具 举报

 楼主| 发表于 2020-6-29 08:26:40 | 显示全部楼层
小甲鱼的铁粉 发表于 2020-6-29 07:57
这是你的第二个while number循环,里面你设置了number = number - 1,导致number = 0 时会退出这个循环,  ...

感谢鱼油大哥指点
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

感谢鱼油大哥指点\爱心
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-29 08:27:57 | 显示全部楼层
793578477 发表于 2020-6-29 08:26
感谢鱼油大哥指点

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

使用道具 举报

 楼主| 发表于 2020-6-29 08:28:42 | 显示全部楼层
WindRoa 发表于 2020-6-29 02:10
那个内置参数就是那个end,这点在函数快查分类里面有

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

使用道具 举报

发表于 2020-7-29 11:15:25 | 显示全部楼层
本帖最后由 夏冬冬 于 2020-7-29 12:01 编辑

感谢楼上几位大佬指点迷津
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-19 17:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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