鱼C论坛

 找回密码
 立即注册
查看: 2267|回复: 12

[已解决]求助while循环问题

[复制链接]
发表于 2020-5-26 16:12:21 | 显示全部楼层 |阅读模式

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

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

x
新手刚入门自学python中,刚刚学到while循环
麻烦大佬帮看下这段代码 想请教两个问题
① 输入3之后为什么没有打‘Bingo’而是直接打了‘Bye-bye’?
②如果想要加限制次数3次应该怎么加?




temp = input("我们来猜一个数字吧:")
while not temp.isdigit():
    temp = input("输入不合法,再来一次:")   
num = int(temp)
while (num != 3 ):
        if num == 3:
            print('Bingo!')        
        else:
            if num > 3:
                print('Too Big!')
            else:
                print('Too Small')
            temp = input('再试一次吧!')
            num = int(temp)
print("Byebye·。·")
最佳答案
2020-5-26 16:15:04
因为你的while循环条件是num != 3,所以,如果你第一次就答对了,
就不符合这个循环条件了,改成这样是可以的:
  1. temp = input("我们来猜一个数字吧:")
  2. while not temp.isdigit():
  3.     temp = input("输入不合法,再来一次:")   
  4. num = int(temp)
  5. while True:
  6.         if num == 3:
  7.             print('Bingo!')
  8.             break
  9.         else:
  10.             if num > 3:
  11.                 print('Too Big!')
  12.             else:
  13.                 print('Too Small')
  14.             temp = input('再试一次吧!')
  15.             num = int(temp)
  16. print("Byebye·。·")
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-5-26 16:15:04 | 显示全部楼层    本楼为最佳答案   
因为你的while循环条件是num != 3,所以,如果你第一次就答对了,
就不符合这个循环条件了,改成这样是可以的:
  1. temp = input("我们来猜一个数字吧:")
  2. while not temp.isdigit():
  3.     temp = input("输入不合法,再来一次:")   
  4. num = int(temp)
  5. while True:
  6.         if num == 3:
  7.             print('Bingo!')
  8.             break
  9.         else:
  10.             if num > 3:
  11.                 print('Too Big!')
  12.             else:
  13.                 print('Too Small')
  14.             temp = input('再试一次吧!')
  15.             num = int(temp)
  16. print("Byebye·。·")
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-26 16:15:13 | 显示全部楼层
本帖最后由 heidern0612 于 2020-5-26 16:17 编辑

你的while循环跟里面嵌套的if冲突了,既然while都不等于3了,程序咋还还能傻的进你while循环去执行等于3的条件呢?

说白了while也相当于一个if条件,两个if条件冲突了,程序还咋执行下去?

加限制次数的话,可以临时设置个变量,用0赋值,每while循环一次就加1,当while到你阀值的时候,while退出就好了。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-26 16:18:25 | 显示全部楼层
本帖最后由 青出于蓝 于 2020-5-26 16:29 编辑

1,因为第一次就输入3就当作失败了...
2,增加一个变量count1用于计数,每猜一次,就count-=1。到零时,直接ByeBye
稍等我写一下

  1. count=1
  2. if count==0:
  3.     print('您猜数字的机会已用完')
  4. else:         
  5.     temp = input("我们来猜一个数字吧:")

  6. while not temp.isdigit():
  7.     temp = input("输入不合法,再来一次:")   
  8. num = int(temp)
  9. while True:
  10.         if num == 3:
  11.             print('Bingo!')
  12.             break
  13.         else:
  14.             if num > 3:
  15.                 print('Too Big!')
  16.                 count-=1
  17.                 temp = input('再试一次吧!')
  18.                 num = int(temp)
  19.                 if num == 3:
  20.                     print('Bingo!')
  21.                     break
  22.                
  23.             else:
  24.                 print('Too Small')
  25.                 count-=1
  26.                 temp = input('再试一次吧!')
  27.                 num = int(temp)
  28.                 if num == 3:
  29.                     print('Bingo!')
  30.                     break
  31.                
  32. print("Byebye·。·")
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-26 16:23:54 | 显示全部楼层
heidern0612 发表于 2020-5-26 16:15
你的while循环跟里面嵌套的if冲突了,既然while都不等于3了,程序咋还还能傻的进你while循环去执行等于3的条 ...

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

使用道具 举报

 楼主| 发表于 2020-5-26 16:24:29 | 显示全部楼层
qiuyouzhi 发表于 2020-5-26 16:15
因为你的while循环条件是num != 3,所以,如果你第一次就答对了,
就不符合这个循环条件了,改成这样是可 ...

感谢回复,刚自学了几天python 还要去看看break是啥意思
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-26 16:26:55 | 显示全部楼层
① 输入3之后为什么没有打‘Bingo’而是直接打了‘Bye-bye’?

因为这里 while 条件就是 num 不等于 3 才循环,而你输入3 则不会进入循环里面的代码哦~
②如果想要加限制次数3次应该怎么加?
  1. temp = input("我们来猜一个数字吧:")
  2. count = 3 # 初始化输入机会 3 次
  3. while not temp.isdigit():
  4.     temp = input("输入不合法,再来一次:")
  5. num = int(temp)
  6. count -= 1  # 输入了一次所以减一
  7. while (num != 3 ) and count > 0:  
  8.         if num == 3:
  9.             print('Bingo!')
  10.         else:
  11.             if num > 3:
  12.                 print('Too Big!')
  13.             else:
  14.                 print('Too Small')
  15.             temp = input('再试一次吧!')
  16.             num = int(temp)
  17.         count -= 1
  18. print("Byebye·。·")
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-26 16:30:04 | 显示全部楼层
安小宁 发表于 2020-5-26 16:24
感谢回复,刚自学了几天python 还要去看看break是啥意思

看看这样是不是你想要的结果...
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-26 16:33:23 | 显示全部楼层
青出于蓝 发表于 2020-5-26 16:30
看看这样是不是你想要的结果...

感谢回复,我再研究研究。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-26 16:36:27 | 显示全部楼层
青出于蓝 发表于 2020-5-26 16:30
看看这样是不是你想要的结果...

但是执行下来 count好像一直都没有为0的样子
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-26 16:42:28 | 显示全部楼层
安小宁 发表于 2020-5-26 16:36
但是执行下来 count好像一直都没有为0的样子

出现了个小错误...稍等
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-26 16:47:43 | 显示全部楼层

  1. count = 2
  2. while True:
  3.     if count==0:
  4.         print('您的输入机会已经用完')
  5.         break
  6.     else:
  7.         temp = input("我们来猜一个数字吧:")
  8.         while not temp.isdigit():
  9.             temp = input("输入不合法,再来一次:")   
  10.         num = int(temp)

  11.     if num == 3:
  12.         print('Bingo!')
  13.         break
  14.     else:
  15.         if num > 3:
  16.             count-=1
  17.             print('Too Big!')
  18.             temp = input('再试一次吧!')
  19.             num = int(temp)
  20.             if count==0:
  21.                 print('您的输入机会已经用完')
  22.                 break
  23.             if num == 3:
  24.                 print('Bingo!')
  25.                 break
  26.                
  27.         else:
  28.             count-=1
  29.             print('Too Small')
  30.             temp = input('再试一次吧!')
  31.             num = int(temp)
  32.             if count==0:
  33.                 print('您的输入机会已经用完')
  34.                 break
  35.             if num == 3:
  36.                 print('Bingo!')
  37.                 break
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-30 03:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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