猪猪以都都 发表于 2023-6-27 16:35:33

明明已经设定好循环次数为3了,为什么循环次数还是大于3?

本帖最后由 猪猪以都都 于 2023-6-27 16:42 编辑

import random as ag

def game():
    number = 3
    awa = ag.randint(1,10)

    while number > 0:
      try:
            guess = int(input("猜一猜我心里在想什么数字,数字1~10:"))
      except:
            print('输入的要是一个整数!再试一次!')
            continue
      if guess > 10 or guess == 0:
            print('输入要是一个1~10的数字!再试一次!')
            continue
      if guess == awa:
            print("你是我心里的蛔虫吧?这么厉害???")
            print("正确答案就是",awa,",666!")
            break
      else:
            if guess < awa:
                print("太小了~")
            else:
                print("太大了~")
                number = number - 1
                if number == 0 and awa != guess:
                  print('给你三次机会都不过???正确答案是:',awa,"!")

while True:
    game()
    restart = input("你是否要重新开始小游戏?(是/否):")
    if restart.lower() != "是":
      break明明已经设定好循环次数为3了,为什么循环次数还是大于3?求助~~~~~~~~~~~{:10_266:}

歌者文明清理员 发表于 2023-6-27 16:36:50

本帖最后由 歌者文明清理员 于 2023-6-27 16:38 编辑

你好!在这段代码中,虽然设定了循环次数为3,但是循环的起点并没有在主函数game()的开头,而是在while True:后面。因此,即使game()函数内部的循环次数是3,整个程序仍然会一直重复执行game()函数直到用户选择不重新开始游戏。

如果你只想要限制game()函数的循环次数为3,你可以将game()函数放在一个for循环内,并且循环次数设置为3。示例如下:

import random as ag

def game():
    number = 3
    awa = ag.randint(1,10)

    while number > 0:
      try:
            guess = int(input("猜一猜我心里在想什么数字,数字1~10:"))
      except:
            print('输入的要是一个整数!再试一次!')
            continue
      if guess > 10 or guess == 0:
            print('输入要是一个1~10的数字!再试一次!')
            continue
      if guess == awa:
            print("你是我心里的蛔虫吧?这么厉害???")
            print("正确答案就是",awa,",666!")
            break
      else:
            if guess < awa:
                print("太小了~")
            else:
                print("太大了~")
                number = number - 1
                if number == 0 and awa != guess:
                  print('给你三次机会都不过???正确答案是:',awa,"!")

for _ in range(3):
    game()
    restart = input("你是否要重新开始小游戏?(是/否):")
    if restart.lower() != "是":
      break
这样,game()函数就会被执行3次,然后程序将询问用户是否要重新开始游戏。希望这能解决你的问题!如有需要,请随时提问。

附:为什么for _ in range(3)用下划线

使用下划线 _ 作为循环变量名是一种常见的约定。在这里,我们使用下划线来表示一个占位符变量,意味着循环变量的值并不会在循环体内被使用。这是因为在这个程序中,我们只关心循环的次数,而不关心循环变量的具体值。

使用下划线 _ 作为循环变量名有以下几个优点:


[*]明确表达出我们不关心循环变量的值,只关心循环次数。
[*]避免了创建一个没有用途的变量,提高了代码的可读性。
[*]有助于消除循环变量可能对程序其他部分造成的混淆。

因此,在这段代码中,使用下划线 _ 作为循环变量名是为了强调我们只关心循环的次数,而不需要使用实际的循环变量值。当然,你也可以选择其他的变量名,只要能够清晰地表达出循环的次数即可。

猪猪以都都 发表于 2023-6-27 16:38:19

歌者文明清理员 发表于 2023-6-27 16:36
占楼

缩进有问题{:10_266:}

猪猪以都都 发表于 2023-6-27 16:38:51

歌者文明清理员 发表于 2023-6-27 16:36
你好!在这段代码中,虽然设定了循环次数为3,但是循环的起点并没有在主函数game()的开头,而是在while Tru ...

怎么删帖555

猪猪以都都 发表于 2023-6-27 16:39:24

歌者文明清理员 发表于 2023-6-27 16:36
你好!在这段代码中,虽然设定了循环次数为3,但是循环的起点并没有在主函数game()的开头,而是在while Tru ...

缩进有问题{:10_266:}

猪猪以都都 发表于 2023-6-27 16:41:05

歌者文明清理员 发表于 2023-6-27 16:36
你好!在这段代码中,虽然设定了循环次数为3,但是循环的起点并没有在主函数game()的开头,而是在while Tru ...

GPT?"希望这能解决你的问题!如有需要,请随时提问。"

猪猪以都都 发表于 2023-6-27 16:42:07

歌者文明清理员 发表于 2023-6-27 16:36
你好!在这段代码中,虽然设定了循环次数为3,但是循环的起点并没有在主函数game()的开头,而是在while Tru ...

以后别用GPT了awa,还是错的(doge

sfqxx 发表于 2023-6-27 16:42:39

猪猪以都都 发表于 2023-6-27 16:41
GPT?"希望这能解决你的问题!如有需要,请随时提问。"

确实是缩进的问题,帮你改了一下,试试对不对


import random as ag

def game():
    number = 3
    awa = ag.randint(1,10)

    while number > 0:
      try:
            guess = int(input("猜一猜我心里在想什么数字,数字1~10:"))
      except:
            print('输入的要是一个整数!再试一次!')
            continue
      if guess > 10 or guess == 0:
            print('输入要是一个1~10的数字!再试一次!')
            continue
      if guess == awa:
            print("你是我心里的蛔虫吧?这么厉害???")
            print("正确答案就是",awa,",666!")
            return# 结束当前game()函数的执行,并返回到主循环
      else:
            if guess < awa:
                print("太小了~")
            else:
               print("太大了~")
               number = number - 1
               if number == 0 and awa != guess:
                   print('给你三次机会都不过???正确答案是:',awa,"!")

while True:
    if game() is None:# 当game()函数返回None时,说明猜中了,进入下一轮循环
      restart = input("你是否要重新开始小游戏?(是/否):")
      if restart.lower() != "是":
            break

可以就给个最佳答案呗{:10_254:}

歌者文明清理员 发表于 2023-6-27 16:42:48

猪猪以都都 发表于 2023-6-27 16:42
以后别用GPT了awa,还是错的(doge

az

sfqxx 发表于 2023-6-27 16:44:36

歌者文明清理员 发表于 2023-6-27 16:42
az

呼,好险

[我的头像]

猪猪以都都 发表于 2023-6-27 16:44:43

sfqxx 发表于 2023-6-27 16:42
确实是缩进的问题,帮你改了一下,试试对不对




满足满足

sfqxx 发表于 2023-6-27 16:45:15

猪猪以都都 发表于 2023-6-27 16:44
满足满足

OK{:10_279:}

歌者文明清理员 发表于 2023-6-27 16:47:42

sfqxx 发表于 2023-6-27 16:45
OK

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaahhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh

猪猪以都都 发表于 2023-6-28 12:53:53

歌者文明清理员 发表于 2023-6-27 16:47
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaahhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh

awa
页: [1]
查看完整版本: 明明已经设定好循环次数为3了,为什么循环次数还是大于3?