2016-04-28 13 views
5

Voglio fare un gioco di tris, e lo sto facendo in modo che quando l'utente immette un numero da 1 a 9, crea una X nello spazio corrispondente sulla griglia. qui è la funzione per cui:Combina stessa funzione con diversi parametri - Python

def move(inp): 
    if inp == 1: 
     one = " X |\t|\n_____________\n |\t|\n_____________\n |\t|" 
     print one 
    elif inp == 2: 
     two = " | X |\n_____________\n |\t|\n_____________\n |\t|" 
     print two 
    elif inp == 3: 
     three = " |\t| X\n_____________\n |\t|\n_____________\n |\t|" 
     print three 
    elif inp == 4: 
     four = " |\t|\n____________\n X |\t|\n_____________\n |\t|" 
     print four 
    elif inp == 5: 
     five = " |\t|\n_____________\n | X |\n_____________\n |\t|" 
     print five 
    elif inp == 6: 
     six = " |\t|\n_____________\n |\t| X \n_____________\n |\t|" 
     print six 
    elif inp == 7: 
     seven = " |\t|\n_____________\n |\t|\n_____________\n X |\t|" 
     print seven 
    elif inp == 8: 
     eight = " |\t|\n_____________\n |\t|\n_____________\n | X |" 
     print eight 
    elif inp == 9: 
     nine = " |\t|\n_____________\n |\t|\n_____________\n |\t| X " 
     print nine 

e così, la griglia viene mostrata con i X al posto giusto. Ma poi arriva il prossimo turno. E voglio che entrino in un nuovo numero, ma mantieni la vecchia X dov'era. Stavo pensando: c'è un modo per combinare quella funzione a se stessa con un parametro diverso e farli mettere due X sulla griglia? Quindi, la mia domanda è, c'è una funzione per questo, e se no, come farei questo.

risposta

2

Si potrebbe fare questo:

def make_square(inp): 
    square = " {0} |{1}\t|{2}\n_____________\n {3} | {4}\t|{5}\n_____________\n {6} |{7}\t|{8}" # set {} brackets for 'X' format 
    inp += -1 # rest because need take from 0 as the brackts indice 
    for x in range(9): # range max of 'X' 
     if x != inp: 
      square = square.replace('{{{0}}}'.format(x),' ') # delete brackets without the number select by the user 
      # {{ {0} }} explication http://stackoverflow.com/a/5466478/4941927 
    square = square.replace('{{{0}}}'.format(inp),'{0}') # convert current {number} into {0} for format 
    square = square.format('X') # formatting brackets for the 'X' 
    print square 

make_square(2) 

se hai bisogno di aiuto, io sono felice di aiutare Saluti!

2

Durante la programmazione, se ci si trova a copiare e incollare lo stesso codice ripetutamente, qualcosa non va. Dovresti ripensare a questa cosa dall'inizio. Cosa ne pensi di questo?

board = [' '] * 9 # the 9 cells, empty at first 

def show(board): 
    for row in range(3): 
     print '|', 
     for col in range(3): 
      print board[row*3 + col], '|', 
     print # newline 

def move(inp): 
    board[inp-1] = 'X' # user input is 1-based, Python is 0-based 
    show(board) 
Problemi correlati