安小宁 发表于 2020-5-26 16:12:21

求助while循环问题

新手刚入门自学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·。·")

qiuyouzhi 发表于 2020-5-26 16:15:04

因为你的while循环条件是num != 3,所以,如果你第一次就答对了,
就不符合这个循环条件了,改成这样是可以的:
temp = input("我们来猜一个数字吧:")
while not temp.isdigit():
    temp = input("输入不合法,再来一次:")   
num = int(temp)
while True:
      if num == 3:
            print('Bingo!')
            break
      else:
            if num > 3:
                print('Too Big!')
            else:
                print('Too Small')
            temp = input('再试一次吧!')
            num = int(temp)
print("Byebye·。·")

heidern0612 发表于 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退出就好了。

青出于蓝 发表于 2020-5-26 16:18:25

本帖最后由 青出于蓝 于 2020-5-26 16:29 编辑

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

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

while not temp.isdigit():
    temp = input("输入不合法,再来一次:")   
num = int(temp)
while True:
      if num == 3:
            print('Bingo!')
            break
      else:
            if num > 3:
                print('Too Big!')
                count-=1
                temp = input('再试一次吧!')
                num = int(temp)
                if num == 3:
                  print('Bingo!')
                  break
               
            else:
                print('Too Small')
                count-=1
                temp = input('再试一次吧!')
                num = int(temp)
                if num == 3:
                  print('Bingo!')
                  break
               
print("Byebye·。·")

安小宁 发表于 2020-5-26 16:23:54

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

!明白了 谢谢

安小宁 发表于 2020-5-26 16:24:29

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

感谢回复,刚自学了几天python 还要去看看break是啥意思 {:5_100:}

Twilight6 发表于 2020-5-26 16:26:55

① 输入3之后为什么没有打‘Bingo’而是直接打了‘Bye-bye’?
因为这里 while 条件就是 num 不等于 3 才循环,而你输入3 则不会进入循环里面的代码哦~
②如果想要加限制次数3次应该怎么加?
temp = input("我们来猜一个数字吧:")
count = 3 # 初始化输入机会 3 次
while not temp.isdigit():
    temp = input("输入不合法,再来一次:")
num = int(temp)
count -= 1# 输入了一次所以减一
while (num != 3 ) and count > 0:
      if num == 3:
            print('Bingo!')
      else:
            if num > 3:
                print('Too Big!')
            else:
                print('Too Small')
            temp = input('再试一次吧!')
            num = int(temp)
      count -= 1
print("Byebye·。·")

青出于蓝 发表于 2020-5-26 16:30:04

安小宁 发表于 2020-5-26 16:24
感谢回复,刚自学了几天python 还要去看看break是啥意思

看看这样是不是你想要的结果...

安小宁 发表于 2020-5-26 16:33:23

青出于蓝 发表于 2020-5-26 16:30
看看这样是不是你想要的结果...

感谢回复,我再研究研究。

安小宁 发表于 2020-5-26 16:36:27

青出于蓝 发表于 2020-5-26 16:30
看看这样是不是你想要的结果...

但是执行下来 count好像一直都没有为0的样子

青出于蓝 发表于 2020-5-26 16:42:28

安小宁 发表于 2020-5-26 16:36
但是执行下来 count好像一直都没有为0的样子

出现了个小错误...稍等

青出于蓝 发表于 2020-5-26 16:47:43


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

    if num == 3:
      print('Bingo!')
      break
    else:
      if num > 3:
            count-=1
            print('Too Big!')
            temp = input('再试一次吧!')
            num = int(temp)
            if count==0:
                print('您的输入机会已经用完')
                break
            if num == 3:
                print('Bingo!')
                break
               
      else:
            count-=1
            print('Too Small')
            temp = input('再试一次吧!')
            num = int(temp)
            if count==0:
                print('您的输入机会已经用完')
                break
            if num == 3:
                print('Bingo!')
                break
页: [1]
查看完整版本: 求助while循环问题