You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

当任一变量归零时终止函数运行的实现方法

解决变量归零后程序仍继续执行的问题

原代码的核心问题在于两个函数互相递归调用,仅检查自身变量是否归零,且turns()函数在function_a()执行完毕后会无条件触发function_b(),导致即使x归零,function_b()仍会继续运行。以下是两种可行的修改方案:


方案一:主循环控制流程(推荐)

去掉函数间的递归调用,用主循环统一控制执行逻辑,确保任一变量归零后立即终止所有操作:

from random import randint

x = 10
y = 10

def roll_dice():
    return randint(1, 6)

def function_a():
    global x
    dice = roll_dice()
    if dice >= 1:
        x -= 5
        print(f"x减去5,当前x: {x}")
    else:
        print('Better luck next time')

def function_b():
    global y
    dice = roll_dice()
    if dice >= 1:
        y -= 5
        print(f"y减去5,当前y: {y}")
    else:
        print('Better luck next time')

def turns():
    # 仅当x和y都大于0时才继续循环
    while x > 0 and y > 0:
        function_a()
        if x <= 0:
            break
        function_b()
        if y <= 0:
            break
    print('good game')

turns()

修改说明:

  • 用turns()的主循环替代递归调用,逻辑更直观,避免嵌套执行的冗余问题
  • 主循环条件x > 0 and y > 0确保任一变量归零后直接终止
  • 每次执行完单个函数后立即检查对应变量状态,及时跳出循环

方案二:保留递归逻辑,增加全局状态检查

如果需要保留原有的函数内循环逻辑,可以在每个函数的循环中增加对对方变量的检查:

from random import randint

x = 10
y = 10

def roll_dice():
    return randint(1, 6)

def function_a():
    global x
    # 同时检查x和y的状态,任一归零则停止循环
    while x > 0 and y > 0:
        dice = roll_dice()
        if dice >= 1:
            x -= 5
            print(f"x减去5,当前x: {x}")
        else:
            print('Better luck next time')
        
        # 任一变量归零则终止所有操作
        if x <= 0 or y <= 0:
            break
        function_b()

def function_b():
    global y
    while y > 0 and x > 0:
        dice = roll_dice()
        if dice >= 1:
            y -= 5
            print(f"y减去5,当前y: {y}")
        else:
            print('Better luck next time')
        
        if y <= 0 or x <= 0:
            break
        function_a()

def turns():
    if x > 0 and y > 0:
        function_a()
    print('good game')

turns()

修改说明:

  • 在每个函数的循环条件中同时检查x和y的状态
  • 每次循环结束后再次判断全局状态,确保任一变量归零后终止递归调用
  • turns()仅在初始状态都有效时启动流程,避免无效执行

内容的提问来源于stack exchange,提问作者Darko Zlatarek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 03:12:18