Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么未检测到全局标志?_Python_Python 3.x - Fatal编程技术网

Python 为什么未检测到全局标志?

Python 为什么未检测到全局标志?,python,python-3.x,Python,Python 3.x,目标是在p1或p2获胜后,从“循环时的最终结果”(添加为注释)中得出。我创建了一个全局标志,该标志最初为False,但一旦winningfunc()返回result1或result 2等于3,该标志将变为True。我知道可能会有些冗长,但我对python或任何类型的编码都是新手 试着做一个简单的抽搐。感谢您的帮助:) frame=[[“”,“|”、“”、“|”、“”、, ["-","-","-","-","-"], [" ","|"," ","|"," "], ["-","-","-","-",

目标是在p1或p2获胜后,从“循环时的最终结果”(添加为注释)中得出。我创建了一个全局标志,该标志最初为False,但一旦winningfunc()返回result1或result 2等于3,该标志将变为True。我知道可能会有些冗长,但我对python或任何类型的编码都是新手

试着做一个简单的抽搐。感谢您的帮助:)

frame=[[“”,“|”、“”、“|”、“”、,
["-","-","-","-","-"],
[" ","|"," ","|"," "],
["-","-","-","-","-"],
[" ","|"," ","|"," "]]
#名称分配
尽管如此:
p1_name=输入(“输入播放器1名称:”)
p2_name=输入(“输入玩家2名称:”)
如果p1_name.lower()==p2_name.lower():
打印(“输入的两个名称相同,请重新输入!”)
其他:
打破
#符号赋值
尽管如此:
p1_nt=input(f{p1_name},选择要播放的“X”或“O”:)
如果p1\u nt.lower()=“x”:
p1\u nt=“X”
p2\u nt=“O”
打印(f“{p1_name}将与'X'一起播放,{p2_name}将与'O'一起播放)
打破
elif p1\u nt.lower()=“o”:
p1\u nt=“O”
p2\u nt=“X”
打印(f“{p1_name}将与'O'一起播放,{p2_name}将与'X'一起播放)
打破
其他:
打印(“输入的符号错误,请重新输入!”)
#口述
dc={“1:[4,0],“2:[4,2],“3:[4,4],“4:[2,0],“5:[2,2],“6:[2,4],“7:[0,0],“8:[0,2],“9:[0,4]}
#获胜逻辑定义
flag=False
def winningfunc():
def mf(v1、v2、v3):
结果1=0
结果2=0
对于范围内的x(v1、v2、v3):
如果帧[dc[str(x)][0][dc[str(x)][1]==p1\n:
结果1+=1
elif帧[dc[str(x)][0][dc[str(x)][1]==p2\u-nt:
结果2+=1
其他:
通过
如果结果1==3:
flag=True
打印(f“恭喜,{p1_name}获胜!”)
elif结果2==3:
flag=True
打印(f“恭喜,{p2_name}获胜!”)
其他:
通过
mf(1,4,1)#对于c4
mf(4,7,1)#用于c2
mf(7,10,1)#对于c0
mf(1,10,4)#适用于d1
mf(3,8,2)#对于d2
mf(1,8,3)#对于r0
mf(2,9,3)#对于r2
mf(3,10,3)#对于r3
#付款人输入循环
而非标志:#用于最终结果
为True时:#用于p1数据填充
s1=输入(f“{p1_name}轮到你了:”)

如果0访问全局
标志
,则需要在方法开头指定它是全局的。此外,在轮到玩家2之前,你应该检查旗帜是否正确。以下是工作代码:

frame=[[" ","|"," ","|"," "],
      ["-","-","-","-","-"],
      [" ","|"," ","|"," "],
      ["-","-","-","-","-"],
      [" ","|"," ","|"," "]]

# Name assignment
while True:
    p1_name=input("Enter player 1 name: ")
    p2_name=input("Enter player 2 name: ")

    if p1_name.lower()==p2_name.lower():
        print("Both names entered are same, please re-enter!")
    else:
        break
# Notation assignment 
while True:
    p1_nt=input(f"{p1_name}, choose 'X' or 'O' to play with: ")
    if p1_nt.lower()=="x":
        p1_nt="X"
        p2_nt="O"
        print(f"{p1_name} will play with 'X' & {p2_name} will play with 'O'")
        break
    elif p1_nt.lower()=="o":
        p1_nt="O"
        p2_nt="X"
        print(f"{p1_name} will play with 'O' & {p2_name} will play with 'X'")
        break
    else:
        print("Entered notation is wrong, please re-enter!")

# dict 
dc={"1":[4,0],"2":[4,2],"3":[4,4],"4":[2,0],"5":[2,2],"6":[2,4],"7":[0,0],"8":[0,2],"9":[0,4]}

# winning logic definition
flag=False
def winningfunc (): 
    global flag
    def mf(v1,v2,v3):
        global flag
        result1=0
        result2=0
        for x in range(v1,v2,v3):
            if frame[dc[str(x)][0]][dc[str(x)][1]]==p1_nt:
                result1+=1
            elif frame[dc[str(x)][0]][dc[str(x)][1]]==p2_nt:
                result2+=1
            else:
                pass
        if result1==3:
            flag=True
            print(f"Congratulations, {p1_name} wins! ")            
        elif result2==3:
            flag=True
            print(f"Congratulations, {p2_name} wins! ")            
        else:
            pass

    mf(1,4,1) # for c4
    mf(4,7,1) # for c2
    mf(7,10,1) # for c0
    mf(1,10,4) # for d1
    mf(3,8,2) # for d2
    mf(1,8,3) # for r0
    mf(2,9,3) # for r2
    mf(3,10,3) # for r3

# loop for payer input

while not flag: # for final result 
    while True: # for p1 data filling 
        s1=input(f"{p1_name} its your turn: ")
        if 0<=int(s1)<=9 and frame[dc[str(s1)][0]][dc[str(s1)][1]]==" ":
            if p1_nt=="X":
                frame[dc[str(s1)][0]][dc[str(s1)][1]]="X"
            else:
                frame[dc[str(s1)][0]][dc[str(s1)][1]]="O"
            break
        else:
            print(f"Wrong entry {p1_name}, try once again!")
    x1=None        
    for x1 in range(len(frame)):
        f1="".join(frame[x1])
        print(f1)
    # Result check for p1
    winningfunc()    
    if flag:
        break


    while True: # for p2 data filling 
        s2=input(f"{p2_name} its your turn: ")
        if 0<=int(s1)<=9 and frame[dc[str(s2)][0]][dc[str(s2)][1]]==" ":
            if p2_nt=="X":
                frame[dc[str(s2)][0]][dc[str(s2)][1]]="X"
            else:
                frame[dc[str(s2)][0]][dc[str(s2)][1]]="O"
            break
        else:
            print(f"Wrong entry {p2_name}, try once again!")

    x2=None
    for x2 in range(5):
        f2="".join(frame[x2])
        print(f2)
    # Result check for p2    
    winningfunc()
frame=[[“”,“|”、“”、“|”、“”、,
["-","-","-","-","-"],
[" ","|"," ","|"," "],
["-","-","-","-","-"],
[" ","|"," ","|"," "]]
#名称分配
尽管如此:
p1_name=输入(“输入播放器1名称:”)
p2_name=输入(“输入玩家2名称:”)
如果p1_name.lower()==p2_name.lower():
打印(“输入的两个名称相同,请重新输入!”)
其他:
打破
#符号赋值
尽管如此:
p1_nt=input(f{p1_name},选择要播放的“X”或“O”:)
如果p1\u nt.lower()=“x”:
p1\u nt=“X”
p2\u nt=“O”
打印(f“{p1_name}将与'X'一起播放,{p2_name}将与'O'一起播放)
打破
elif p1\u nt.lower()=“o”:
p1\u nt=“O”
p2\u nt=“X”
打印(f“{p1_name}将与'O'一起播放,{p2_name}将与'X'一起播放)
打破
其他:
打印(“输入的符号错误,请重新输入!”)
#口述
dc={“1:[4,0],“2:[4,2],“3:[4,4],“4:[2,0],“5:[2,2],“6:[2,4],“7:[0,0],“8:[0,2],“9:[0,4]}
#获胜逻辑定义
flag=False
def winningfunc():
全球旗帜
def mf(v1、v2、v3):
全球旗帜
结果1=0
结果2=0
对于范围内的x(v1、v2、v3):
如果帧[dc[str(x)][0][dc[str(x)][1]==p1\n:
结果1+=1
elif帧[dc[str(x)][0][dc[str(x)][1]==p2\u-nt:
结果2+=1
其他:
通过
如果结果1==3:
flag=True
打印(f“恭喜,{p1_name}获胜!”)
elif结果2==3:
flag=True
打印(f“恭喜,{p2_name}获胜!”)
其他:
通过
mf(1,4,1)#对于c4
mf(4,7,1)#用于c2
mf(7,10,1)#对于c0
mf(1,10,4)#适用于d1
mf(3,8,2)#对于d2
mf(1,8,3)#对于r0
mf(2,9,3)#对于r2
mf(3,10,3)#对于r3
#付款人输入循环
而非标志:#用于最终结果
为True时:#用于p1数据填充
s1=输入(f“{p1_name}轮到你了:”)

如果0访问全局
标志
,则需要在方法开头指定它是全局的。此外,在轮到玩家2之前,你应该检查旗帜是否正确。以下是工作代码:

frame=[[" ","|"," ","|"," "],
      ["-","-","-","-","-"],
      [" ","|"," ","|"," "],
      ["-","-","-","-","-"],
      [" ","|"," ","|"," "]]

# Name assignment
while True:
    p1_name=input("Enter player 1 name: ")
    p2_name=input("Enter player 2 name: ")

    if p1_name.lower()==p2_name.lower():
        print("Both names entered are same, please re-enter!")
    else:
        break
# Notation assignment 
while True:
    p1_nt=input(f"{p1_name}, choose 'X' or 'O' to play with: ")
    if p1_nt.lower()=="x":
        p1_nt="X"
        p2_nt="O"
        print(f"{p1_name} will play with 'X' & {p2_name} will play with 'O'")
        break
    elif p1_nt.lower()=="o":
        p1_nt="O"
        p2_nt="X"
        print(f"{p1_name} will play with 'O' & {p2_name} will play with 'X'")
        break
    else:
        print("Entered notation is wrong, please re-enter!")

# dict 
dc={"1":[4,0],"2":[4,2],"3":[4,4],"4":[2,0],"5":[2,2],"6":[2,4],"7":[0,0],"8":[0,2],"9":[0,4]}

# winning logic definition
flag=False
def winningfunc (): 
    global flag
    def mf(v1,v2,v3):
        global flag
        result1=0
        result2=0
        for x in range(v1,v2,v3):
            if frame[dc[str(x)][0]][dc[str(x)][1]]==p1_nt:
                result1+=1
            elif frame[dc[str(x)][0]][dc[str(x)][1]]==p2_nt:
                result2+=1
            else:
                pass
        if result1==3:
            flag=True
            print(f"Congratulations, {p1_name} wins! ")            
        elif result2==3:
            flag=True
            print(f"Congratulations, {p2_name} wins! ")            
        else:
            pass

    mf(1,4,1) # for c4
    mf(4,7,1) # for c2
    mf(7,10,1) # for c0
    mf(1,10,4) # for d1
    mf(3,8,2) # for d2
    mf(1,8,3) # for r0
    mf(2,9,3) # for r2
    mf(3,10,3) # for r3

# loop for payer input

while not flag: # for final result 
    while True: # for p1 data filling 
        s1=input(f"{p1_name} its your turn: ")
        if 0<=int(s1)<=9 and frame[dc[str(s1)][0]][dc[str(s1)][1]]==" ":
            if p1_nt=="X":
                frame[dc[str(s1)][0]][dc[str(s1)][1]]="X"
            else:
                frame[dc[str(s1)][0]][dc[str(s1)][1]]="O"
            break
        else:
            print(f"Wrong entry {p1_name}, try once again!")
    x1=None        
    for x1 in range(len(frame)):
        f1="".join(frame[x1])
        print(f1)
    # Result check for p1
    winningfunc()    
    if flag:
        break


    while True: # for p2 data filling 
        s2=input(f"{p2_name} its your turn: ")
        if 0<=int(s1)<=9 and frame[dc[str(s2)][0]][dc[str(s2)][1]]==" ":
            if p2_nt=="X":
                frame[dc[str(s2)][0]][dc[str(s2)][1]]="X"
            else:
                frame[dc[str(s2)][0]][dc[str(s2)][1]]="O"
            break
        else:
            print(f"Wrong entry {p2_name}, try once again!")

    x2=None
    for x2 in range(5):
        f2="".join(frame[x2])
        print(f2)
    # Result check for p2    
    winningfunc()
frame=[[“”,“|”、“”、“|”、“”、,
["-","-","-","-","-"],
[" ","|"," ","|"," "],
["-","-","-","-","-"],
[" ","|"," ","|"," "]]
#名称分配
尽管如此:
p1_name=输入(“输入播放器1名称:”)
p2_name=输入(“输入玩家2名称:”)
如果p1_name.lower()==p2_name.lower():
打印(“输入的两个名称相同,请重新输入!”)
其他:
打破
#符号赋值
尽管如此:
p1_nt=input(f{p1_name},选择要播放的“X”或“O”:)
如果p1\u nt.lower()=“x”:
p1\u nt=“X”
p2\u nt=“O”
打印(f“{p1_name}将与'X'一起播放,{p2_name}将与'O'一起播放)
打破
elif p1\u nt.lower()=“o”:
p1\u nt=“O”
p2\u nt=“X”
打印(f“{p1\u name}将与'O'和{p2_name}一起播放'X')
打破
其他:
打印(“输入的符号错误,请重新输入!”)
#口述
dc={“1:[4,0],“2:[4,2],“3:[4,4],“4:[2,0],“5:[2,2],“6:[2,4],“7:[0,0],“8:[0,2],“9:[0,4]}
#获胜逻辑定义
flag=False
def winningfunc():
全球旗帜
def mf(v1、v2、v3):
全球旗帜
结果1=0
结果2=0
对于范围内的x(v1、v2、v3):
如果帧[dc[str(x)][0]][dc[st