第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

為什么我最后無法打印板子?(井字棋蟒蛇)

為什么我最后無法打印板子?(井字棋蟒蛇)

PHP
一只甜甜圈 2023-11-09 21:15:24
我必須為一個(gè)項(xiàng)目制作一個(gè) Tictactoe,雖然我知道代碼不好,但我看不出錯(cuò)誤是什么,該值被分配給字典,如果我打印最后一次播放的密鑰正確顯示是 X 還是 O,但該值未在電路板的最后一次打印中表示。def tateti():juego_terminado = Falsefirst_player = 'X'second_player = 'O'turn = 0tablero = {'ArribaIzquierda' : ' ','ArribaCentro' : ' ', 'ArribaDerecha' : ' ', 'CentroIzquierda' : ' ', 'CentroCentro' : ' ', 'CentroDerecha' : ' ','AbajoIzquierda' : ' ', 'AbajoCentro' : ' ','AbajoDerecha' : ' '}#Loop principal    #Instruccionesprint('Para jugar, usa el numepad como si fuera el tablero de tateti\no elegi una posicion en el tablero con las primeras dos iniciales de la fila\ny la primer letra de la posicion dentro de la fila.\nPor ejemplo para ponerla arriba al centro es: arc (AR-riba C-entro). \n\n')print('TA TE TI')while juego_terminado == False:    abd = tablero['AbajoDerecha']    arc = tablero['ArribaCentro']    ard = tablero['ArribaDerecha']    cei = tablero['CentroIzquierda']    cec = tablero['CentroCentro']    ced = tablero['CentroDerecha']    ari = tablero['ArribaIzquierda']    abi = tablero['AbajoIzquierda']    abc = tablero['AbajoCentro']    #Separando los turnos    if turn % 2 == 0:        player = first_player    else:        player = second_player        print('|{}|{}|{}|\n- - - -\n|{}|{}|{}|\n- - - -\n|{}|{}|{}|'.format(ari, arc, ard, cei, cec, ced, abi, abc, abd))    #Pedirle al jugador donde quiero poner su figura    jugada = str(input('?Donde queres poner la {}?: '.format(player)))    #Asignando cruz o cicedulo al dicecionario    if jugada == 'ari' or jugada == '7':        if tablero['ArribaIzquierda'] == ' ':             tablero['ArribaIzquierda'] = player        else:            print('Este posición ya fue ocupada, por favor elegi otra')            continue    elif jugada == 'arc' or jugada == '8':        if  tablero['ArribaCentro'] == ' ':               tablero['ArribaCentro'] = player        else:            print('Este posición ya fue ocupada, por favor elegi otra')            continue
查看完整描述

1 回答

?
忽然笑

TA貢獻(xiàn)1806條經(jīng)驗(yàn) 獲得超5個(gè)贊

您正在將新的X或O分配給tablero['algo']。如果游戲沒有在這里結(jié)束,您可以將 的內(nèi)容分配tablero給ari、等,但僅在下arc一個(gè)循環(huán)開始時(shí)才分配。


因此,如果游戲在該移動(dòng)之后結(jié)束,您將打印舊的ari、arc等,這些尚未更新以反映最新的移動(dòng)。


當(dāng)然,還有許多其他問題需要修復(fù)(可以避免大量重復(fù)),但游戲確實(shí)可以正常運(yùn)行。


一些建議:


我會(huì)使用一個(gè)簡(jiǎn)單的列表來處理董事會(huì)。tablero = [" "] * 9創(chuàng)建一個(gè)包含九個(gè)空格字符的列表。這允許很多簡(jiǎn)化。例如,要打印電路板,您可以簡(jiǎn)單地執(zhí)行以下操作


print('|{6}|{7}|{8}|\n- - - -\n|{3}|{4}|{5}|\n- - - -\n|{0}|{1}|{2}|'.format(*tablero))

請(qǐng)注意,列表的第一個(gè)元素由 索引0,因此我們需要考慮到這一點(diǎn)。


完成此操作后,您可以創(chuàng)建另一個(gè)列表來處理快捷方式:


casillas = ["abi", "abc", "abd", "cei", "cec", "ced", "ari", "arc", "ard"]

現(xiàn)在處理輸入要容易得多,因?yàn)槟梢灾赜孟嗤拇a而不是大量if/elif語句:


jugada = input('?Donde queres poner la {}?: '.format(player)) # input() already returns a str


try: # let's see if player entered a whole number

    casilla = int(jugada) - 1 # remember, field 1 is numbered internally as 0

except ValueError: # apparently not

    try: # let's see if player entered a valid shortcut

        casilla = casillas.index(jugada)

    except ValueError: # apparently not

        casilla = 9 # let's choose an invalid value, we'll detect that later

現(xiàn)在我們?cè)?中有一個(gè)數(shù)字casilla,讓我們看看它是否在范圍內(nèi),如果是的話,讓我們填充棋盤(如果可以的話):


if 0 <= casilla <= 8:

    if tablero[casilla] == ' ': 

        tablero[casilla] = player

    else:

        print('Este posición ya fue ocupada, por favor elegi otra')

        continue

else:

    print('Jugada invalida, por favor realice una jugada valida') 

    continue

獲勝條件也可以簡(jiǎn)化:


if tablero[0] == tablero[1] == tablero[2] != " " or \

   tablero[3] == tablero[4] == tablero[4] != " " or \

   tablero[6] == tablero[7] == tablero[8] != " " or \

   ... etc. ...:

   juego_terminado = True

通過理解,這可以進(jìn)一步縮短:


if any(tablero[i] == tablero[j] == tablero[k] != " " 

   for i,j,k in ((0,1,2), (3,4,5), (6,7,8), (0,3,6), (1,4,7), (2,5,8), (0,4,8), (2,4,6))):

    juego_terminado = True

我還沒有實(shí)際測(cè)試過,所以如果您遇到問題,請(qǐng)告訴我。


查看完整回答
反對(duì) 回復(fù) 2023-11-09
  • 1 回答
  • 0 關(guān)注
  • 169 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)