首页 > 解决方案 > Python程序在if语句后不返回函数

问题描述

我正在编写一个 Python Tic-Tac-Toe 机器人,它在一个if语句之后一直停止,而不是重新启动函数(下面的代码)。我在 Python 方面相当初级,希望得到更简单的答案。

代码:

def process():
    uin = input('enter a move...')
    if uin == 'A1':
        atwo.remove('A1')
        bone.remove('A1')
        btwo.remove('A1')
        sou = random.choice(aone)
        print(sou)
        aone.remove(sou)
        return process
    elif uin == 'A2':
        aone.remove('A2')
        athree.remove('A2')
        btwo.remove('A2')
        sou = random.choice(atwo)
        print(sou)
        atwo.remove(sou)
        return process
    elif uin == 'A3':
        atwo.remove('A3')
        btwo.remove('A3')
        bthree.remove('A3')
        sou = random.choice(athree)
        print(sou)
        athree.remove(sou)
        return process
    elif uin == 'B1':
        aone.remove('B1')
        btwo.remove('B1')
        cone.remove('B1')
        sou = random.choice(bone)
        print(sou)
        bone.remove(sou)
        return process
    elif uin == 'B2':
        aone.remove('B2')
        atwo.remove('B2')
        athree.remove('B2')
        bone.remove('B2')
        bthree.remove('B2')
        cone.remove('B2')
        ctwo.remove('B2')
        cthree.remove('B2')
        sou = random.choice(btwo)
        print(sou)
        btwo.remove(sou)
        return process
    elif uin == 'B3':
        athree.remove('B2')
        btwo.remove('B2')
        cthree.remove('B2')
        sou = random.choice(bthree)
        print(sou)
        bthree.remove(sou)
        return process
    elif uin == 'C1':
        bone.remove('C1')
        btwo.remove('C1')
        ctwo.remove('C1')
        sou = random.choice(cone)
        print(sou)
        bthree.remove(sou)
        return process
    elif uin == 'C2':
        btwo.remove('C2')
        cone.remove('C2')
        cthree.remove('C2')
        sou = random.choice(ctwo)
        ctwo.remove(sou)
        return process
    elif uin == 'C3':
        btwo.remove('C3')
        btwo.remove('C3')
        ctwo.remove('C3')
        sou = random.choice(cthree)
        print(sou)
        cthree.remove(sou)
        return process 
process()

标签: python-3.x

解决方案


将函数放入while循环

while True:
    process()

然后在满足赢得游戏的条件时在您的函数内部放置一个 break 以结束循环。


推荐阅读