十亿 发表于 2020-8-17 11:56:00

请问这个while 1循环为什么continue多写一个或,再执行后下面的break就出不来了啊


import random

def game0_4():
    answer = random.randint(1,50)
    temp = input('来猜一下小甲鱼心里想的数字吧:')
    guess = int(temp)
    counts = 1
    chance = 5


    #如果一直没有答对,那么循环只能执行(chance-1)次,最后一次机会在循环外执行
    while (guess != answer) and (counts < 5):
      if guess > answer:
            print('大了一点')
      else:
            print('小了一点')
      chance -= 1
      print('你还剩' + str(chance) +'次机会')
      temp = input('再试一次吧:')
      guess = int(temp)
      counts += 1

    if (guess == answer) and (counts <= 5):
      print('答错了!')
    else:
      print('好可惜,5次机会用光了,游戏结束。')

#可不可以在最后再设置一下是否需要再玩一次,可以的话直接再开始,否则退出游戏。
   

if __name__ == '__main__':
    while 1:
      game0_4()
      desire = input('还要再玩一次吗?(是/否)')
      if desire == 'y'or'yes':                #这里写一个或,下面break就出不来了
            continue
      if desire == 'n' or 'no' or '否' or '1':#这里可以写很多或,break可以出来
            break

zltzlt 发表于 2020-8-17 11:56:45

https://fishc.com.cn/thread-177875-1-1.html

十亿 发表于 2020-8-17 12:00:06

感谢感谢{:10_254:}

sunrise085 发表于 2020-8-17 12:00:40

本帖最后由 sunrise085 于 2020-8-17 12:02 编辑

逻辑运算符的优先级要低于 比较运算符 "==",所以你不能这样写
你这样写,相当于先进行比较运算,然后再进行逻辑运算,只要有一个or,那就不会执行到下面的if语句了
if desire in[ 'y','yes']:                #这里想写几个就写几个,都放在列表中
            continue
      if desire in[ 'n' , 'no' , '否' , '1']:#这里也是想写几个就写几个,都放在列表中
            break

十亿 发表于 2020-8-17 12:04:02

sunrise085 发表于 2020-8-17 12:00
逻辑运算符的优先级要低于 比较运算符 "==",所以你不能这样写
你这样写,相当于先进行比较运算,然后再进 ...

感谢感谢,这样写确实很方便
页: [1]
查看完整版本: 请问这个while 1循环为什么continue多写一个或,再执行后下面的break就出不来了啊