1

を使用してコンパイルしようとしましたが、次のpy_compileエラーが発生します: SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape

そして、これは私のコンパイルコードです:

py_compile.compile("D:\University Project\Python\Examples\XO Game\XO.py")

これは関連するコードです:

#difining libraries
import turtle
from tkinter import messagebox as msgbox

#defining constants
osc=xsc=asc=0#scores vars

np="n.gif"
op="o.gif"
xp="x.gif"
pturn=xp
turtle.register_shape(np)
turtle.register_shape(op)
turtle.register_shape(xp)

t=[turtle.Turtle() for x in range(10)]
for i in range(9):
    t[i].ht()

arra=[[0]*3 for x in range(3)]#array for holding scores
tempa=[[0]*3 for x in range(3)]#array for holding scores
temparray=[[0]*3 for x in range(3)]#array for holding scores


def tur0(x,y):
    tclick(0)
def tur1(x,y):
    tclick(1)
def tur2(x,y):
    tclick(2)
def tur3(x,y):
    tclick(3)
def tur4(x,y):
    tclick(4)
def tur5(x,y):
    tclick(5)
def tur6(x,y):
    tclick(6)
def tur7(x,y):
    tclick(7)
def tur8(x,y):
    tclick(8)


def drawTable():#creating buttons and table
    turtle.ht()
    turtle.width(5)
    turtle.color("black")
    xd=-133
    yd=133
    for i in range(9):
        t[i].st()
        t[i].shape(np)
        t[i].up()
        t[i].goto(xd,yd)
        xd+=133
        if xd==2*133:
            xd=-133
            yd-=133
    xd=-64
    yd=64
    for i in range(2):
        turtle.up()
        turtle.goto(-197.5,yd)
        turtle.setheading(0)
        turtle.down()
        turtle.fd(394)
        yd-=128
        turtle.up()
        turtle.goto(xd,197.5)
        turtle.setheading(270)
        turtle.down()
        turtle.fd(394)
        xd+=128


def inarray():#put scores in array
    global arra
    for i in range(3):
        for j in range(3):
            arra[i][j]=0
    xd=0
    yd=0
    for i in range(9):
        if t[i].shape()==np:
            arra[xd][yd]=0
        elif t[i].shape()==xp:
            arra[xd][yd]=1
        elif t[i].shape()==op:
            arra[xd][yd]=2
        yd+=1
        if yd==3:
            yd=0
            xd+=1
def grestart():
    if msgbox.askyesno(title="The End", message="Game finished. Do you want to restart?")==True:
        turtle.clear()
        drawTable()
    else:
        quit()


#these are for checking winner
def check(i,j,k):
    a=t[i].shape()+t[j].shape()+t[k].shape()
    turtle.color("green")
    turtle.width(5)
    turtle.up()
    if a==xp+xp+xp:
        turtle.goto(t[i].pos())
        turtle.down()
        turtle.goto(t[k].pos())
        turtle.up()
        p=msgbox.showinfo(title="Congratulations!", message="Player X is Winner!")
        grestart()
    elif a==op+op+op:
        turtle.goto(t[i].pos())
        turtle.down()
        turtle.goto(t[k].pos())
        turtle.up()
        p=msgbox.showinfo(title="Failed! :(", message="Player O is Winner!")
        grestart()

def ccheck():
    check(0,1,2)
    check(3,4,5)
    check(6,7,8)
    check(0,3,6)
    check(1,4,7)
    check(2 ,5,8)
    check(0 ,4,8)
    check(2 ,4,6)
#---------------------------
def chturn():
    global pturn
    if pturn==xp:
        pturn=op
    else:
        pturn=xp


def xWayT():#player x ways Temperary
    global temparray
    global xsc
    xsc=0
    '''for i in range(3):
        if (temparray[i][0]==1 or temparray[i][0]==0) and (temparray[i][1]==1 or temparray[i][1]==0) and (temparray[i][2]==1 or temparray[i][2]==0):
            xsc+=1
    for i in range(3):
        if (temparray[0][i]==1 or temparray[0][i]==0) and (temparray[1][i]==1 or temparray[1][i]==0) and (temparray[2][i]==1 or temparray[2][i]==0):
            xsc+=1'''
    if (temparray[0][0]==1 or temparray[0][0]==0) and (temparray[0][1]==1 or temparray[0][1]==0) and (temparray[0][2]==1 or temparray[0][2]==0):
        xsc+=1
    if (temparray[1][0]==1 or temparray[1][0]==0) and (temparray[1][1]==1 or temparray[1][1]==0) and (temparray[1][2]==1 or temparray[1][2]==0):
        xsc+=1
    if (temparray[2][0]==1 or temparray[2][0]==0) and (temparray[2][1]==1 or temparray[2][1]==0) and (temparray[2][2]==1 or temparray[2][2]==0):
        xsc+=1
    if (temparray[0][0]==1 or temparray[0][0]==0) and (temparray[1][0]==1 or temparray[1][0]==0) and (temparray[2][0]==1 or temparray[2][0]==0):
        xsc+=1
    if (temparray[0][1]==1 or temparray[0][1]==0) and (temparray[1][1]==1 or temparray[1][1]==0) and (temparray[2][1]==1 or temparray[2][1]==0):
        xsc+=1
    if (temparray[0][2]==1 or temparray[0][2]==0) and (temparray[1][2]==1 or temparray[1][2]==0) and (temparray[2][2]==1 or temparray[2][2]==0):
        xsc+=1
    if (temparray[0][0]==1 or temparray[0][0]==0) and (temparray[1][1]==1 or temparray[1][1]==0) and (temparray[2][2]==1 or temparray[2][2]==0):
        xsc+=1
    if (temparray[0][2]==1 or temparray[0][2]==0) and (temparray[2][2]==1 or temparray[2][2]==0) and (temparray[2][0]==1 or temparray[2][0]==0):
        xsc+=1

def oWayT():#player o ways Temperary
    global temparray
    global osc
    osc=0
    '''for i in range(3):
        if (temparray[i][0]==2 or temparray[i][0]==0) and (temparray[i][1]==2 or temparray[i][1]==0) and (temparray[i][2]==2 or temparray[i][2]==0):
            osc+=1
    for i in range(3):
        if (temparray[0][i]==2 or temparray[0][i]==0) and (temparray[1][i]==2 or temparray[1][i]==0) and (temparray[2][i]==2 or temparray[2][i]==0):
            osc+=1
    if (temparray[0][0]==2 or temparray[0][0]==0) and (temparray[1][1]==2 or temparray[1][1]==0) and (temparray[2][2]==2 or temparray[2][2]==0):
        osc+=1
    if (temparray[0][2]==2 or temparray[0][2]==0) and (temparray[2][2]==2 or temparray[2][2]==0) and (temparray[2][0]==2 or temparray[2][0]==0):
        osc+=1'''
    if (temparray[0][0]==2 or temparray[0][0]==0) and (temparray[0][1]==2 or temparray[0][1]==0) and (temparray[0][2]==2 or temparray[0][2]==0):
        osc+=1
    if (temparray[1][0]==2 or temparray[1][0]==0) and (temparray[1][1]==2 or temparray[1][1]==0) and (temparray[1][2]==2 or temparray[1][2]==0):
        osc+=1
    if (temparray[2][0]==2 or temparray[2][0]==0) and (temparray[2][1]==2 or temparray[2][1]==0) and (temparray[2][2]==2 or temparray[2][2]==0):
        osc+=1
    if (temparray[0][0]==2 or temparray[0][0]==0) and (temparray[1][0]==2 or temparray[1][0]==0) and (temparray[2][0]==2 or temparray[2][0]==0):
        osc+=1
    if (temparray[0][1]==2 or temparray[0][1]==0) and (temparray[1][1]==2 or temparray[1][1]==0) and (temparray[2][1]==2 or temparray[2][1]==0):
        osc+=1
    if (temparray[0][2]==2 or temparray[0][2]==0) and (temparray[1][2]==2 or temparray[1][2]==0) and (temparray[2][2]==2 or temparray[2][2]==0):
        osc+=1
    if (temparray[0][0]==2 or temparray[0][0]==0) and (temparray[1][1]==2 or temparray[1][1]==0) and (temparray[2][2]==2 or temparray[2][2]==0):
        osc+=1
    if (temparray[0][2]==2 or temparray[0][2]==0) and (temparray[2][2]==2 or temparray[2][2]==0) and (temparray[2][0]==2 or temparray[2][0]==0):
        osc+=1

def omove(a,b):
    global temparray,tempa
    if (temparray[0][0]==2) and (temparray[0][1]==2) and (temparray[0][2]==2):
        tempa[a][b]=-100
    if (temparray[1][0]==2 ) and (temparray[1][1]==2) and (temparray[1][2]==2):
        tempa[a][b]=-100
    if (temparray[2][0]==2) and (temparray[2][1]==2) and (temparray[2][2]==2):
        tempa[a][b]=-100
    if (temparray[0][0]==2) and (temparray[1][0]==2) and (temparray[2][0]==2):
        tempa[a][b]=-100
    if (temparray[0][1]==2) and (temparray[1][1]==2) and (temparray[2][1]==2):
        tempa[a][b]=-100
    if (temparray[0][2]==2) and (temparray[1][2]==2) and (temparray[2][2]==2):
        tempa[a][b]=-100
    if (temparray[0][0]==2) and (temparray[1][1]==2) and (temparray[2][2]==2):
        tempa[a][b]=-100
    if (temparray[0][2]==2) and (temparray[2][2]==2) and (temparray[2][0]==2):
        tempa[a][b]=-100
    '''for i in range(3):
        if (temparray[i][0]==2) and (temparray[i][1]==2) and (temparray[i][2]==2):
            tempa[a][b]=-100
    for i in range(3):
        if (temparray[0][i]==2) and (temparray[1][i]==2) and (temparray[2][i]==2):
            tempa[a][b]=-100
    if (temparray[0][0]==2) and (temparray[1][1]==2) and (temparray[2][2]==2):
        tempa[a][b]=-100
    if (temparray[0][2]==2) and (temparray[2][2]==2) and (temparray[2][0]==2):
        tempa[a][b]=-100'''

def xmove(a,b):
    global temparray,tempa
    if (temparray[0][0]==1) and (temparray[0][1]==1) and (temparray[0][2]==1):
        tempa[a][b]=-100
    if (temparray[1][0]==1 ) and (temparray[1][1]==1) and (temparray[1][2]==1):
        tempa[a][b]=-100
    if (temparray[2][0]==1) and (temparray[2][1]==1) and (temparray[2][2]==1):
        tempa[a][b]=-100
    if (temparray[0][0]==1) and (temparray[1][0]==1) and (temparray[2][0]==1):
        tempa[a][b]=-100
    if (temparray[0][1]==1) and (temparray[1][1]==1) and (temparray[2][1]==1):
        tempa[a][b]=-100
    if (temparray[0][2]==1) and (temparray[1][2]==1) and (temparray[2][2]==1):
        tempa[a][b]=-100
    if (temparray[0][0]==1) and (temparray[1][1]==1) and (temparray[2][2]==1):
        tempa[a][b]=-100
    if (temparray[0][2]==1) and (temparray[2][2]==1) and (temparray[2][0]==1):
        tempa[a][b]=-100
    '''for i in range(3):
        if (temparray[i][0]==1) and (temparray[i][1]==1) and (temparray[i][2]==1):
            tempa[a][b]=-100
    for i in range(3):
        if (temparray[0][i]==1) and (temparray[1][i]==1) and (temparray[2][i]==1):
            tempa[a][b]=-100
    if (temparray[0][0]==1) and (temparray[1][1]==1) and (temparray[2][2]==1):
        tempa[a][b]=-100
    if (temparray[0][2]==1) and (temparray[2][2]==1) and (temparray[2][0]==1):
        tempa[a][b]=-100'''

def aip(i,j):#ai process function
    global xsc,osc,asc,temparray,tempa
    if temparray[i][j]==0:
        temparray[i][j]=2
        xWayT()#calling player x ways
        oWayT()#calling player o ways
        print(xsc,",",osc)
        asc=xsc-osc
        tempa[i][j]=asc
        omove(i,j)
        temparray[i][j]=1
        xmove(i,j)
        temparray[i][j]=0

def fmin():#find the minimum score for machines move
    global tempa
    xd=-1
    yd=-1
    '''xd2=0
    yd2=0'''
    mini=100
    print(tempa)
    for i in range(3):
        for j in range(3):
            if (tempa[i][j]<mini) and (tempa[i][j]!=0):
                mini=tempa[i][j]
                print(mini)
                xd=i
                yd=j
    if xd == 0 and yd == 0:
        t[0].shape(op)
    if xd == 0 and yd == 1:
        t[1].shape(op)
    if xd == 0 and yd == 2:
        t[2].shape(op)
    if xd == 1 and yd == 0:
        t[3].shape(op)
    if xd == 1 and yd == 1 :
        t[4].shape(op)
    if xd == 1 and yd == 2 :
        t[5].shape(op)
    if xd == 2 and yd == 0:
        t[6].shape(op)
    if xd == 2 and yd == 1 :
        t[7].shape(op)
    if xd == 2 and yd == 2 :
        t[8].shape(op)
    '''for i in range(9):
        if xd==xd2 and yd==yd2:
            t[i].shape(op)
        yd2+=1
        if yd2==3:
            yd2=0
            xd2+=1'''
    ccheck()
    chturn()

def payoffda():#readung temperory arrays and starting part of ai processing
    global temparray,tempa,arra
    for i in range(3):
        for j in range(3):
            temparray[i][j]=arra[i][j]
            tempa[i][j]=0
    for i in range(3):
        for j in range(3):
            aip(i,j)


def tclick(i):
    if t[i].shape()==np:
        t[i].shape(xp)
        inarray()
        ccheck()
        chturn()
        payoffda()
        fmin()

#logo showing
logo="Hamid's XO Game"
turtle.colormode(255)
turtle.ht()

turtle.up()
turtle.goto(70-((len(logo)/2)*30),0)
turtle.down()
turtle.delay(150)
for i in range(255,0,-15):
    turtle.pencolor(255,i,i)
    turtle.write(logo,align="left",font=("Tahoma", 30, "normal"))

for i in range(0,255,15):
    turtle.pencolor(255,i,i)
    turtle.write(logo,align="left",font=("Tahoma", 30, "normal"))
t[9]    
turtle.delay(0)
turtle.clear()
drawTable()
t[0].onclick(tur0)
t[1].onclick(tur1)
t[2].onclick(tur2)
t[3].onclick(tur3)
t[4].onclick(tur4)
t[5].onclick(tur5)
t[6].onclick(tur6)
t[7].onclick(tur7)
t[8].onclick(tur8)
4

4 に答える 4

5

次のように、文字をエスケープするか、生の文字列を扱っていることを python に伝えることができます。

py_compile.compile(r"D:\University Project\Python\Examples\XO Game\XO.py")
于 2013-10-30T09:28:50.357 に答える
4

それはあなたのpycompile.compile()呼び出しにあります。あなたの場合、生の文字列を使用してください:

py_compile.compile(r"D:\University Project\Python\Examples\XO Game\XO.py")

または、別の標準的な方法は、パスを記述するときに常に二重のバックスラッシュを使用することです。

py_compile.compile("D:\\University Project\\Python\\Examples\\XO Game\\XO.py")
于 2013-10-30T09:31:02.730 に答える
2

バックスラッシュをエスケープする必要が\\あります\。これは、バックスラッシュは通常、改行などの特殊文字や、Unicode 文字の\nで始まるコードを導入するためです。\Uを使用する\U場合、コンパイラは ではなく、正しい Unicode 文字を期待します\University

/または、代わりに を使用することもできます\。Windows もそれを認識します。

于 2013-10-30T09:26:40.570 に答える
0

RemcoGerlich の言うとおりですが、代わりに、パス指定の最初の二重引用符をr"に置き換えることをお勧めします。これにより、バックスラッシュの特別な解釈がオフになります。これは、多くのバックスラッシュを含む正規表現に主に使用されますが、Windows でも機能します。利点: 多くの変更や「間違った」パス区切り記号を使用する代わりに、挿入する文字は 1 つだけです。

于 2013-10-30T09:34:29.850 に答える