鱼C论坛

 找回密码
 立即注册
查看: 1469|回复: 11

[已解决]关于While循环

[复制链接]
发表于 2019-10-8 19:35:35 | 显示全部楼层 |阅读模式

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

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

x
代码如下
temp=input('请输入一个整数:')#由客户输入一个整数(str数据类型)
Input_Number=int(temp)#将str数据类型转化为int数据类型,并保存在变量Input_Number中
time=1#初始化机会

#开始循环
while Input_Number!=8 and time<3:#一共3次机会
    if Input_Number >8:
        print('大了')
    else:
        print('小了')
    temp=input('再试下:')
    Input_Number=int(temp)
    time=time+1

#最终结果
if Input_Number==8 and time<=3:
    print('Good')
else:
    print('Bad')
问题:while Input_Number!=8 and time<3:#一共3次机会
这里time<3不应该是<=3么,流程可否这样理解:
首次输入2,机会1,结果:小了,又输入5,机会2
符合条件,结果:小了,又输入7,机会3
按照上面的程序(该程序正确),不应该有第三次循环的啊,但实际上确实循环了3次
最佳答案
2019-10-8 20:42:45
╭凊_難斷 发表于 2019-10-8 20:29
那你能不能举个例子说下这个循环的流程
temp=input('请输入一个整数:')#由客户输入一个整数(str数据类 ...
  1. temp=input('请输入一个整数:')
  2. Input_Number=int(temp)
  3. time=1

  4. # 只要用户输入的不等于 8 而且 time 小于 3 进入循环
  5. while Input_Number!=8 and time<3:
  6.     # 提醒用户并重新输入
  7.     if Input_Number >8:
  8.         print('大了')
  9.     else:
  10.         print('小了')
  11.     temp=input('再试下:')
  12.     Input_Number=int(temp)
  13.     # time 加 1,这时 time 是 2
  14.     # 如果用户还是输入错误,time 加 1,这时 time 是 3,已经不满足循环条件,跳出循环
  15.     time=time+1

  16. # 如果用户输入的数字是 8 而且 time 小于等于 3(如果用户在 time 为 3 时
  17. # 输入正确,还是有机会打印 'Good' 的
  18. # 因为 time 小于等于 3(3 小于等于 3))
  19. if Input_Number==8 and time<=3:
  20.     print('Good')
  21. else:
  22.     print('Bad')
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-10-8 19:45:51 | 显示全部楼层
你的程序不仅要加个 break,还要在内层加一个 if 判断,要不然 time 已经加到 3,但是没有执行完循环体,无法判断 time 是否 < 3,所以输入三次都不成功还会再询问。

  1. temp=input('请输入一个整数:')
  2. Input_Number=int(temp)
  3. time=1

  4. while Input_Number!=8 and time<3:
  5.     if Input_Number >8:
  6.         print('大了')
  7.     else:
  8.         print('小了')
  9.     if time < 3:
  10.         time += 1
  11.         temp=input('再试下:')
  12.         Input_Number=int(temp)
  13.     else:
  14.         break

  15. #最终结果
  16. if Input_Number==8 and time<=3:
  17.     print('Good')
  18. else:
  19.     print('Bad')
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-10-8 19:55:39 | 显示全部楼层
zltzlt 发表于 2019-10-8 19:45
你的程序不仅要加个 break,还要在内层加一个 if 判断,要不然 time 已经加到 3,但是没有执行完循环体,无 ...

谢谢你的回答,谢谢
可是帖子中的程序能够正常运行,且逻辑正确,但是分析其中的流程时,总是想不明白,能不能解释下为什么time<3而非time<=3
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-8 20:05:21 | 显示全部楼层
╭凊_難斷 发表于 2019-10-8 19:55
谢谢你的回答,谢谢
可是帖子中的程序能够正常运行,且逻辑正确,但是分析其中的流程时,总是想不明白, ...

time < 3 表示小于 3,time <= 3 表示小于等于 3,两者能一样吗?

PS:如果你的提问得到了满意的回答,请设置【最佳答案】
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-10-8 20:13:37 | 显示全部楼层
zltzlt 发表于 2019-10-8 20:05
time < 3 表示小于 3,time

条件语句中,为什么用time<3,而不是time<=3,对于循环的流程上来说,二者有何区别
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-8 20:13:59 | 显示全部楼层
╭凊_難斷 发表于 2019-10-8 20:13
条件语句中,为什么用time

time <= 3 就会多一次循环
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-10-8 20:23:41 | 显示全部楼层

是我帖子中的问题问的有歧义么,,,晕晕晕~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-8 20:24:00 | 显示全部楼层
╭凊_難斷 发表于 2019-10-8 20:23
是我帖子中的问题问的有歧义么,,,晕晕晕~

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

使用道具 举报

发表于 2019-10-8 20:24:33 | 显示全部楼层
╭凊_難斷 发表于 2019-10-8 20:23
是我帖子中的问题问的有歧义么,,,晕晕晕~

3 不小于 3,但是 3 小于等于 3
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-10-8 20:29:22 | 显示全部楼层
zltzlt 发表于 2019-10-8 20:24
3 不小于 3,但是 3 小于等于 3

那你能不能举个例子说下这个循环的流程
temp=input('请输入一个整数:')#由客户输入一个整数(str数据类型)
Input_Number=int(temp)#将str数据类型转化为int数据类型,并保存在变量Input_Number中
time=1#初始化机会

#开始循环
while Input_Number!=8 and time<3:#一共3次机会
    if Input_Number >8:
        print('大了')
    else:
        print('小了')
    temp=input('再试下:')
    Input_Number=int(temp)
    time=time+1

#最终结果
if Input_Number==8 and time<=3:
    print('Good')
else:
    print('Bad')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-8 20:42:45 | 显示全部楼层    本楼为最佳答案   
╭凊_難斷 发表于 2019-10-8 20:29
那你能不能举个例子说下这个循环的流程
temp=input('请输入一个整数:')#由客户输入一个整数(str数据类 ...
  1. temp=input('请输入一个整数:')
  2. Input_Number=int(temp)
  3. time=1

  4. # 只要用户输入的不等于 8 而且 time 小于 3 进入循环
  5. while Input_Number!=8 and time<3:
  6.     # 提醒用户并重新输入
  7.     if Input_Number >8:
  8.         print('大了')
  9.     else:
  10.         print('小了')
  11.     temp=input('再试下:')
  12.     Input_Number=int(temp)
  13.     # time 加 1,这时 time 是 2
  14.     # 如果用户还是输入错误,time 加 1,这时 time 是 3,已经不满足循环条件,跳出循环
  15.     time=time+1

  16. # 如果用户输入的数字是 8 而且 time 小于等于 3(如果用户在 time 为 3 时
  17. # 输入正确,还是有机会打印 'Good' 的
  18. # 因为 time 小于等于 3(3 小于等于 3))
  19. if Input_Number==8 and time<=3:
  20.     print('Good')
  21. else:
  22.     print('Bad')
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-10-8 20:45:26 | 显示全部楼层

谢谢 这次明白了 谢谢哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-1 10:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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