橘猫啊啊 发表于 2020-6-8 23:08:59

关于while的用法

import random

times = 3
secret = random.randint(1,10)

print('------------------我爱鱼C工作室------------------')
guess = 0
print("不妨猜一下小甲鱼现在心里想的是哪个数字:", end=" ")

while (guess != secret) and (times > 0):#有疑问,为什么不能直接 while (times > 0)?
    temp = input()
   
    if temp.isdigit():
      guess = int(temp)
      if guess == secret:
            print("我草,你是小甲鱼心里的蛔虫吗?!")
            print("哼,猜中了也没有奖励!")
      else:
            if guess > secret:
                print("哥,大了大了~~~")
            else:
                print("嘿,小了,小了~~~")
            if times > 1:
                print("再试一次吧:", end='')
            else:
                print("机会用光咯T_T")
    else:
      print("抱歉,您的输入有误,请输入一个整数:", end='')

    times = times - 1 # 用户每输入一次,可用机会就-1

print("游戏结束,不玩啦^_^")

Twilight6 发表于 2020-6-8 23:22:41

有疑问,为什么不能直接 while (times > 0)?

如果你只有 times > 0 这个条件 没有 guess != secret 你在循环中如果猜对数字了 但是 times > 0 就会继续循环的

你应该还没学到break 如果有 break 合适的位置使用 就可以去掉 guess != secret

Twilight6 发表于 2020-6-8 23:24:38


使用了break 就可以去掉了

import random

times = 3
secret = random.randint(1, 10)

print('------------------我爱鱼C工作室------------------')
guess = 0
print("不妨猜一下小甲鱼现在心里想的是哪个数字:", end=" ")

while times > 0:# 有疑问,为什么不能直接 while (times > 0)?
    temp = input()

    if temp.isdigit():
      guess = int(temp)
      if guess == secret:
            print("我草,你是小甲鱼心里的蛔虫吗?!")
            print("哼,猜中了也没有奖励!")
            break
      else:
            if guess > secret:
                print("哥,大了大了~~~")
            else:
                print("嘿,小了,小了~~~")
            if times > 1:
                print("再试一次吧:", end='')
            else:
                print("机会用光咯T_T")
    else:
      print("抱歉,您的输入有误,请输入一个整数:", end='')

    times = times - 1# 用户每输入一次,可用机会就-1

print("游戏结束,不玩啦^_^")

或者你还有种办法就是 答对后直接设置 times == 0

import random

times = 3
secret = random.randint(1, 10)

print('------------------我爱鱼C工作室------------------')
guess = 0
print("不妨猜一下小甲鱼现在心里想的是哪个数字:", end=" ")

while times > 0:# 有疑问,为什么不能直接 while (times > 0)?
    temp = input()

    if temp.isdigit():
      guess = int(temp)
      if guess == secret:
            print("我草,你是小甲鱼心里的蛔虫吗?!")
            print("哼,猜中了也没有奖励!")
            times = 0
      else:
            if guess > secret:
                print("哥,大了大了~~~")
            else:
                print("嘿,小了,小了~~~")
            if times > 1:
                print("再试一次吧:", end='')
            else:
                print("机会用光咯T_T")
    else:
      print("抱歉,您的输入有误,请输入一个整数:", end='')

    times = times - 1# 用户每输入一次,可用机会就-1

print("游戏结束,不玩啦^_^")

橘猫啊啊 发表于 2020-6-8 23:30:55

Twilight6 发表于 2020-6-8 23:22
如果你只有 times > 0 这个条件 没有 guess != secret 你在循环中如果猜对数字了 但是 times > 0 就会 ...

time会被减到0呀,这时候while time >0就是False的,while停止循环

Twilight6 发表于 2020-6-8 23:36:05

橘猫啊啊 发表于 2020-6-8 23:30
time会被减到0呀,这时候while time >0就是False的,while停止循环

你没理解嘛?如果你第 1 次就猜对那么你times 会瞬间减到 0 ?你每次循环只会减 1

你可以直接去掉测试代码:

import random

times = 3
secret = random.randint(1,10)

print('------------------我爱鱼C工作室------------------')
guess = 0
print(secret,'<---正确答案')
print("不妨猜一下小甲鱼现在心里想的是哪个数字:", end=" ")

while (times > 0):#有疑问,为什么不能直接 while (times > 0)?
    temp = input()
   
    if temp.isdigit():
      guess = int(temp)
      if guess == secret:
            print("我草,你是小甲鱼心里的蛔虫吗?!")
            print("哼,猜中了也没有奖励!")
      else:
            if guess > secret:
                print("哥,大了大了~~~")
            else:
                print("嘿,小了,小了~~~")
            if times > 1:
                print("再试一次吧:", end='')
            else:
                print("机会用光咯T_T")
    else:
      print("抱歉,您的输入有误,请输入一个整数:", end='')

    times = times - 1 # 用户每输入一次,可用机会就-1

print("游戏结束,不玩啦^_^")

橘猫啊啊 发表于 2020-6-8 23:43:33

Twilight6 发表于 2020-6-8 23:36
你没理解嘛?如果你第 1 次就猜对那么你times 会瞬间减到 0 ?你每次循环只会减 1

你可以直接 ...

刚去试验了一下。懂啦,嘻嘻,谢谢你{:5_106:}

Twilight6 发表于 2020-6-8 23:44:18

橘猫啊啊 发表于 2020-6-8 23:43
刚去试验了一下。懂啦,嘻嘻,谢谢你

没事 客气了~
页: [1]
查看完整版本: 关于while的用法