鱼C论坛

 找回密码
 立即注册
查看: 1933|回复: 7

[已解决]while循环的使用

[复制链接]
发表于 2017-10-15 18:15:43 | 显示全部楼层 |阅读模式

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

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

x
求助 while 循环使用  方法
代码如下:
  1. name = input("请输入您的名字:")
  2. temp = input("请在1至10之间输入一个数字:")
  3. cishu = 0

  4. guess = (int)(temp)
  5.    
  6. while guess!=5 and cishu <= 3  :           
  7.     if guess<5:
  8.         print("小了,小了!")
  9.     else:
  10.         print("大了,大了")
  11.     print("还有"+ (str)(4-cishu) +"次机会,加油!")
  12.     cishu = cishu + 1
  13.    
  14.     temp = input("猜错了请重新输入吧:")
  15.    
  16.     guess = (int)(temp)
  17.     print("真遗憾,"+ name)
  18.    

  19. if guess == 5:
  20.     print('好厉害啊,' + name)
  21.    
  22. print("游戏结束")
复制代码


当   print("真遗憾,"+ name)  代码放置于如图位置时,输入不等于5的数,不会打印输出,但是输入为5的时候会打印输出
输出内容:

请输入您的名字:阿斯顿
请在1至10之间输入一个数字:1
小了,小了!
还有4次机会,加油!
猜错了请重新输入吧:1
真遗憾,阿斯顿
小了,小了!
还有3次机会,加油!
猜错了请重新输入吧:1
真遗憾,阿斯顿
小了,小了!
还有2次机会,加油!
猜错了请重新输入吧:5
真遗憾,阿斯顿
好厉害啊,阿斯顿
游戏结束


当   print("真遗憾,"+ name)   放在前面,如
  1. name = input("请输入您的名字:")
  2. temp = input("请在1至10之间输入一个数字:")
  3. cishu = 0

  4. guess = (int)(temp)
  5.    
  6. while guess!=5 and cishu <= 3  :           
  7.     if guess<5:
  8.         print("小了,小了!")
  9.     else:
  10.         print("大了,大了")
  11.     print("还有"+ (str)(4-cishu) +"次机会,加油!")
  12.     cishu = cishu + 1
  13.     print("真遗憾,"+ name)
  14.     temp = input("猜错了请重新输入吧:")
  15.     guess = (int)(temp)
  16.    
  17.    

  18. if guess == 5:
  19.     print('好厉害啊,' + name)
  20.    
  21. print("游戏结束")
复制代码

时,输出正常。
输出内容:
请输入您的名字:阿斯顿
请在1至10之间输入一个数字:1
小了,小了!
还有4次机会,加油!
真遗憾,阿斯顿
猜错了请重新输入吧:1
小了,小了!
还有3次机会,加油!
真遗憾,阿斯顿
猜错了请重新输入吧:1
小了,小了!
还有2次机会,加油!
真遗憾,阿斯顿
猜错了请重新输入吧:5
好厉害啊,阿斯顿
游戏结束


求教,while  大循环哪里出问题了?
最佳答案
2017-10-16 15:56:04
本帖最后由 铁棍阿童木 于 2017-10-16 16:03 编辑


仔细看了一下你的问题,如果没有理解错误,并且不去评价数据结构,我尝试解释一下:
1、当print("真遗憾",+name)语句位于while循环体最后面时,一旦进入循环,都会在temp = int( temp)语句执行以后被执行,也就是说:在while循环内部,第二次输入temp的值以后,才会print真遗憾。之后便是再一次回到while循环的条件判断部分,看输入的值是否还是 != 5 并且 cishu <=3:两个条件同时成立才会进入while循环,只要有一个条件不成立,就会终止循环,执行最后的if 语句和print("游戏结束")语句。

2、当你调整位置以后,将print“真遗憾”语句放在temp = input("猜错了请重新输入吧:")语句前面的话就产生了如下变化:
她会先打印“真遗憾”,再接收input输入,然后进行while循环的条件判断,如果这个时候输入的是5,那么就不会进入循环体,而是直接执行if == 5的后续指令。所以才有了你发图的内容变化。


最后,稍微纠正一下,为了让数据结构更加清晰,这个程序的逻辑判断应该是:
1、等待输入名字
2、等待输入数字
3、计数器归零
4、输入的数字转为整型
5、进行if 判断
     如果 等于 5 那么直接print"好厉害",游戏结束。
6、否则
      while  temp != 5 or 计数器<=3
             if > 5  
                   显示大了大了   计数器+1      然后等待用户输入新的数字      continue   
             else
                   显示小了小了   计数器+1      然后等待用户输入新的数字      continue



QQ截图20171015181035.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-10-15 18:17:19 | 显示全部楼层
附 正确截图
QQ截图20171015181035.png
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-10-15 18:19:56 | 显示全部楼层
求助  很认真
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-15 18:42:04 | 显示全部楼层
  1. name = input("请输入您的名字:")
  2. temp = input("请在1至10之间输入一个数字:")
  3. cishu = 0

  4. guess = int(temp)
  5.    
  6. while guess!=5 and cishu <= 3  :           
  7.     if guess<5:
  8.         print("小了,小了!")
  9.     else:
  10.         print("大了,大了")
  11.     print("还有"+ (str)(4-cishu) +"次机会,加油!")
  12.     cishu = cishu + 1
  13.     print("真遗憾,"+ name)
  14.     temp = input("猜错了请重新输入吧:")
  15.    
  16.     guess = int(temp)
  17.    
  18.    

  19. if guess == 5:
  20.     print('好厉害啊,' + name)
  21.    
  22. print("游戏结束")
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-16 15:56:04 | 显示全部楼层    本楼为最佳答案   
本帖最后由 铁棍阿童木 于 2017-10-16 16:03 编辑


仔细看了一下你的问题,如果没有理解错误,并且不去评价数据结构,我尝试解释一下:
1、当print("真遗憾",+name)语句位于while循环体最后面时,一旦进入循环,都会在temp = int( temp)语句执行以后被执行,也就是说:在while循环内部,第二次输入temp的值以后,才会print真遗憾。之后便是再一次回到while循环的条件判断部分,看输入的值是否还是 != 5 并且 cishu <=3:两个条件同时成立才会进入while循环,只要有一个条件不成立,就会终止循环,执行最后的if 语句和print("游戏结束")语句。

2、当你调整位置以后,将print“真遗憾”语句放在temp = input("猜错了请重新输入吧:")语句前面的话就产生了如下变化:
她会先打印“真遗憾”,再接收input输入,然后进行while循环的条件判断,如果这个时候输入的是5,那么就不会进入循环体,而是直接执行if == 5的后续指令。所以才有了你发图的内容变化。


最后,稍微纠正一下,为了让数据结构更加清晰,这个程序的逻辑判断应该是:
1、等待输入名字
2、等待输入数字
3、计数器归零
4、输入的数字转为整型
5、进行if 判断
     如果 等于 5 那么直接print"好厉害",游戏结束。
6、否则
      while  temp != 5 or 计数器<=3
             if > 5  
                   显示大了大了   计数器+1      然后等待用户输入新的数字      continue   
             else
                   显示小了小了   计数器+1      然后等待用户输入新的数字      continue



小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-10-17 20:17:16 | 显示全部楼层
铁棍阿童木 发表于 2017-10-16 15:56
仔细看了一下你的问题,如果没有理解错误,并且不去评价数据结构,我尝试解释一下:
1、当print("真遗 ...

谢谢   学习了   !!!!!
最近刚刚开始学习python    有些逻辑还没太懂
非常感谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-10-17 20:34:36 | 显示全部楼层
铁棍阿童木 发表于 2017-10-16 15:56
仔细看了一下你的问题,如果没有理解错误,并且不去评价数据结构,我尝试解释一下:
1、当print("真遗 ...

如果按照大佬你的逻辑写的话
运行出来只有第一次就直接输入正确,才会打印输出     print('好厉害啊,' + name)
这就与原意不符了    输入正确没有提示
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-17 20:50:30 | 显示全部楼层
imba_hui 发表于 2017-10-17 20:34
如果按照大佬你的逻辑写的话
运行出来只有第一次就直接输入正确,才会打印输出     print('好厉害啊,'  ...

我也刚学没多久。

这个问题不重要,你如果需要不论任何时候猜对答案都print你好厉害的话,就把这条语句加入分支判断的程序块中间去就行了。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-3 03:38

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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