鱼C论坛

 找回密码
 立即注册
查看: 1614|回复: 9

[已解决]while有限次循环时想要分别打印循环正常结束与跳出循环结束的情况

[复制链接]
发表于 2017-8-13 21:18:33 | 显示全部楼层 |阅读模式

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

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

x
  1. import random
  2. number = random.randint (1,10)
  3. print ('猜数游戏,共有三次机会')
  4. temp = input ('请输入猜的数字:')
  5. guess = int (temp)
  6. i = 3
  7. if guess == number:
  8.     print ('你赢啦!')
  9. else:
  10.     while guess != number and i != 1:
  11.         if guess == number:
  12.             print ('正确')
  13.             i = 3
  14.             break
  15.         else:
  16.             if guess > number:
  17.                 print ('再小点')
  18.             else:
  19.                 print ('再大点')
  20.         temp = input ('再猜一个数')
  21.         guess = int (temp)
  22.         i = i - 1
  23.     if i == 3:
  24.         print ('你赢啦!')
  25.     else:
  26.         print ('没机会啦,游戏结束!')
  27.         
复制代码

代码如上,我想实现的是当猜的数字正确时出现“你赢了!”,我想通过 i 来标记这个循环是猜错三次正常结束还是中间猜对了跳出循环,从而实现能打印出不同结果的目的。
但是我遇到的问题是只有在第一次猜对的情况下才会出现“你赢了”,在二三次猜对时和全部猜错时出现的都是“游戏结束”。
实在想不出怎么改这个代码了,求大神指点下QAQ
最佳答案
2017-8-14 09:05:25
本帖最后由 第四时空 于 2017-8-14 09:06 编辑

可以试试改成这样
  1. import random

  2. number = random.randint(1, 10)
  3. print('猜数游戏,共有三次机会')
  4. temp = input('请输入猜的数字:')
  5. guess = int(temp)
  6. i = 3
  7. if guess == number:
  8.     print('你赢啦!')
  9. else:
  10.     while True:
  11.         if guess == number:
  12.             print('正确')
  13.             # i = 3
  14.             break
  15.         else:
  16.             if guess > number:
  17.                 print('再小点')
  18.             else:
  19.                 print('再大点')
  20.         i = i - 1
  21.         if i == 0:
  22.             print('没机会啦,游戏结束!')
  23.             break
  24.         temp = input('再猜一个数')
  25.         guess = int(temp)

  26.     # if i == 3:
  27.     #     print('你赢啦!')
  28.     # else:
  29.     #     print('没机会啦,游戏结束!')
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-8-13 22:01:08 | 显示全部楼层
  1. import random
  2. number = random.randint (1,10)
  3. i = 3
  4. print ('猜数游戏,共有三次机会')
  5. guess = 0
  6. while guess != number and i > 0:
  7.     temp = input ('请输入猜的数字:')
  8.     guess = int (temp)
  9.     i -= 1
  10.     if guess == number:
  11.         print ('你赢啦!')
  12.     else:
  13.         if guess > number:
  14.             print ('再小点')
  15.         else:
  16.             print ('再大点')
  17.     if time == 0:
  18.         print ('没机会了')
  19.         
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-13 22:01:22 | 显示全部楼层
有别的要求说清楚点
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-14 09:05:25 | 显示全部楼层    本楼为最佳答案   
本帖最后由 第四时空 于 2017-8-14 09:06 编辑

可以试试改成这样
  1. import random

  2. number = random.randint(1, 10)
  3. print('猜数游戏,共有三次机会')
  4. temp = input('请输入猜的数字:')
  5. guess = int(temp)
  6. i = 3
  7. if guess == number:
  8.     print('你赢啦!')
  9. else:
  10.     while True:
  11.         if guess == number:
  12.             print('正确')
  13.             # i = 3
  14.             break
  15.         else:
  16.             if guess > number:
  17.                 print('再小点')
  18.             else:
  19.                 print('再大点')
  20.         i = i - 1
  21.         if i == 0:
  22.             print('没机会啦,游戏结束!')
  23.             break
  24.         temp = input('再猜一个数')
  25.         guess = int(temp)

  26.     # if i == 3:
  27.     #     print('你赢啦!')
  28.     # else:
  29.     #     print('没机会啦,游戏结束!')
复制代码

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +2 收起 理由
zhaohuanloli + 5 + 5 + 2

查看全部评分

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

使用道具 举报

发表于 2017-8-14 09:10:26 | 显示全部楼层
我只提供下思路,就是判断i的值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-14 11:12:49 | 显示全部楼层
要想看while循环是正常结束还是break跳出,可以用else,例如:
  1. i = 3
  2. while i:
  3.     s = input('请输入数字:')
  4.     if s == '8':
  5.         print('正确!')
  6.         break
  7.     print('猜错了,', end = '')
  8.     i -= 1
  9. else:
  10.     print('你三次都没猜到,程序结束!')
复制代码

  1. ========================== RESTART: D:/py/test2.py ==========================
  2. 请输入数字:1
  3. 猜错了,请输入数字:2
  4. 猜错了,请输入数字:3
  5. 猜错了,你三次都没猜到,程序结束!
  6. >>>
  7. ========================== RESTART: D:/py/test2.py ==========================
  8. 请输入数字:1
  9. 猜错了,请输入数字:2
  10. 猜错了,请输入数字:8
  11. 正确!
  12. >>>
  13. ========================== RESTART: D:/py/test2.py ==========================
  14. 请输入数字:8
  15. 正确!
复制代码

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +3 收起 理由
zhaohuanloli + 5 + 5 + 3

查看全部评分

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

使用道具 举报

 楼主| 发表于 2017-8-14 15:47:01 | 显示全部楼层

我试了一下你的代码然后报错了诶...
    if time == 0:
NameError: name 'time' is not defined
另外我没太看懂第九行 i -= 1 是什么意思0.0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-8-14 15:49:01 | 显示全部楼层

谢谢!学到了还可以while True,感觉这样循环比较好懂,我之前while判定条件太多了可能就产生错误了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-8-14 15:51:28 | 显示全部楼层
冬雪雪冬 发表于 2017-8-14 11:12
要想看while循环是正常结束还是break跳出,可以用else,例如:

谢谢!才知道while也能用else的,学到了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-8-14 16:03:22 | 显示全部楼层
谢谢各位^_^
我发现是我的while条件的问题,现在改了之后实现了我的目的
  1. import random
  2. number = random.randint (1,10)
  3. print ('猜数游戏,共有三次机会')
  4. temp = input ('请输入猜的数字:')
  5. guess = int (temp)
  6. i = 3
  7. if guess == number:
  8.     print ('你赢啦!')
  9. else:
  10.     while True:
  11.         if guess == number:
  12.             print ('正确')
  13.             i = 3
  14.             break
  15.         else:
  16.             if guess > number:
  17.                 print ('再小点')
  18.             else:
  19.                 print ('再大点')
  20.         temp = input ('再猜一个数')
  21.         guess = int (temp)
  22.         i = i - 1
  23.     else:
  24.         print ('没机会啦,游戏结束!')
  25. if i == 3:
  26.     print ('你赢啦!')
  27.         
复制代码


在while条件改为true之后就能出现这样的结果

  1. 猜数游戏,共有三次机会
  2. 请输入猜的数字:2
  3. 再小点
  4. 再猜一个数1
  5. 正确
  6. 你赢啦!
复制代码


而之前的结果是这样的

  1. 猜数游戏,共有三次机会
  2. 请输入猜的数字:4
  3. 再大点
  4. 再猜一个数5
  5. 没机会啦,游戏结束!
复制代码


同样的在第二次猜对的情况下,改进前出现的是“没机会啦,游戏结束!”,改进后则提示成功,很开心qwq
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-17 16:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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