求助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·。·")
因为你的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:17 编辑
你的while循环跟里面嵌套的if冲突了,既然while都不等于3了,程序咋还还能傻的进你while循环去执行等于3的条件呢?
说白了while也相当于一个if条件,两个if条件冲突了,程序还咋执行下去?
加限制次数的话,可以临时设置个变量,用0赋值,每while循环一次就加1,当while到你阀值的时候,while退出就好了。 本帖最后由 青出于蓝 于 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·。·")
heidern0612 发表于 2020-5-26 16:15
你的while循环跟里面嵌套的if冲突了,既然while都不等于3了,程序咋还还能傻的进你while循环去执行等于3的条 ...
!明白了 谢谢 qiuyouzhi 发表于 2020-5-26 16:15
因为你的while循环条件是num != 3,所以,如果你第一次就答对了,
就不符合这个循环条件了,改成这样是可 ...
感谢回复,刚自学了几天python 还要去看看break是啥意思 {:5_100:} ① 输入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:24
感谢回复,刚自学了几天python 还要去看看break是啥意思
看看这样是不是你想要的结果... 青出于蓝 发表于 2020-5-26 16:30
看看这样是不是你想要的结果...
感谢回复,我再研究研究。 青出于蓝 发表于 2020-5-26 16:30
看看这样是不是你想要的结果...
但是执行下来 count好像一直都没有为0的样子 安小宁 发表于 2020-5-26 16:36
但是执行下来 count好像一直都没有为0的样子
出现了个小错误...稍等
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]