Bonjour,

Je cherche à exécuter (de la meme manière qu'un Run sur IDLE) un script Python placé dans un fichier TicTacToe.py, sur une page Web ttt.html.

J'ai tenté de mettre une balise Object dans mon Html, de la meme manière que pour un Applet Java. Ca ne marche pas (alors qu'avec un applet Java, ca marche).

J'ai regardé le tuto suivant : http://python.developpez.com/cours/T...=page_19#L17.2

Sur le CGI, seulement il y a des balises HTML dans le fichier Python, ce qui n'est pas mon cas.

Enfin, sur une autre discussion http://www.developpez.net/forums/d15...hon-page-html/ , il est indiqué d'utiliser un interpréteur Python coté client, qu'il faut malheureusement pour chacun des utilisateurs télécharger. Or, je préférerai, de loin, faire comme avec la bibliothèque JQuery
(
Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
<script src="http://code.jquery.com/jquery-1.6.4.min.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8/jquery.min.js"></script>
),
insérer des lignes de code faisant appel à un interpréteur en ligne qui va se charger de lire le script Python.

Si quelqu'un peut m'aiguiller car malheureusement, en BTS SIO, on apprend à faire des programmes en Python, on apprend à faire des sites web mais on n'apprend pas à intégrer le programme Python au site web (quel en est l’Intérêt alors ?).

Code html :
Code html : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<html>
<head>
<meta charset="utf-8" />
<script src="http://code.jquery.com/jquery-1.6.4.min.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8/jquery.min.js"></script>
<link href="../style.css" rel="stylesheet" />
<title>Tic Tac Toe</title>
</head>
<body>
<div id="head" class="head">
<p id="ttt_title" class="title">Tic Tac Toe</p>
</div>
<div id="projet_content">
 
</div>
<div id="pied_projets">
<a href="../projets.html" title="accueil projets"><img id="home" src="../jpg/home.png" /></a>
</div>
</body>
</html>

Code Python :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
import random
def drawBoard(board):
    # Impression du tableau
    # "board" est un ensemble de 10 chaines de caractères (ignorant index 0)
    print('   |   |')
    print(' ' + board[7] + ' | ' + board[8] + ' | ' + board[9])
    print('   |   |')
    print('-----------')
    print('   |   |')
    print(' ' + board[4] + ' | ' + board[5] + ' | ' + board[6])
    print('   |   |')
    print('-----------')
    print('   |   |')
    print(' ' + board[1] + ' | ' + board[2] + ' | ' + board[3])
    print('   |   |')
 
def inputPlayerLetter():
    # Permets à l'utilisateur de choisir sa lettre
    # Retourne une collection avec pour premier élément la lettre choisie par l'utilisateur
    letter = ''
    while not (letter == 'X' or letter == 'O'):
        print('Voulez-vous etre X ou O?')
        letter = input().upper()
 
    if letter == 'X':
        return ['X', 'O']
    else:
        return ['O', 'X']
 
def whoGoesFirst():
    # Arbitrairement, choisis le joueur qui commence.
    if random.randint(0, 1) == 0:
        return 'ordinateur'
    else:
        return 'joueur'
 
def playAgain():
    # Cette fonction retourne vrai si le joueur veut retenter sa chance.
    print('Voulez-vous recommencer? (oui ou non)')
    return input().lower().startswith('oui')
 
def makeMove(board, letter, move):
    board[move] = letter
 
def isWinner(bo, le):
    # Ayant pour paramètres un tableau nommé "bo" et une lettre nommée "le" (X/O), la fonction retourne vrai si le joueur a gagné.
 
    return ((bo[7] == le and bo[8] == le and bo[9] == le) or # ligne du haut
    (bo[4] == le and bo[5] == le and bo[6] == le) or # ligne du milieu
    (bo[1] == le and bo[2] == le and bo[3] == le) or # ligne du bas
    (bo[7] == le and bo[4] == le and bo[1] == le) or # ligne de gauche
    (bo[8] == le and bo[5] == le and bo[2] == le) or # ligne centrale
    (bo[9] == le and bo[6] == le and bo[3] == le) or # ligne de droite
    (bo[7] == le and bo[5] == le and bo[3] == le) or # diagonale de gauche à droite
    (bo[9] == le and bo[5] == le and bo[1] == le)) # diagonale de droite à gauche
 
def getBoardCopy(board):
    # crée puis retoune la copie du tableau (passage de "à vide" à "complet"), mise à jour du tableau en somme.
    dupeBoard = []
 
    for i in board:
        dupeBoard.append(i)
 
    return dupeBoard
 
def isSpaceFree(board, move):
    # retourne vrai si le mouvement passé est libre sur le tableau.
    return board[move] == ' '
 
def getPlayerMove(board):
    # Le joueur tape la case qu'il veut jouer.
    move = ' '
    while move not in '1 2 3 4 5 6 7 8 9'.split() or not isSpaceFree(board, int(move)):
        print('Quel coup voulez-vous jouer ? (tappez un chiffre entre 1 et 9)')
        move = input()
    return int(move)
 
def chooseRandomMoveFromList(board, movesList):
    # Retourne un mouvement valide à partir du tableau mis à jour, issu du dernier coup, à défaut retourne "None-aucun".
 
    possibleMoves = []
    for i in movesList:
        if isSpaceFree(board, i):
            possibleMoves.append(i)
 
    if len(possibleMoves) != 0:
        return random.choice(possibleMoves)
    else:
        return None
 
def getComputerMove(board, computerLetter):
    # Ayant pour paramètres le tableau et la lettre attribuée à l'ordinateur, l'algorithme choisit un coup à jouer.
    if computerLetter == 'X':
        playerLetter = 'O'
    else:
        playerLetter = 'X'
 
    # Algorithme:
    # Dans un premier temps, l'application vérifie si l'ordinateur ne peut pas gagner avec le prochain coup
    for i in range(1, 10):
        copy = getBoardCopy(board)
        if isSpaceFree(copy, i):
            makeMove(copy, computerLetter, i)
            if isWinner(copy, computerLetter):
                return i
 
    # Dans un deuxième temps (en cas d'impossibilité du premier), l'application vérifie si le joueur humain peut gagner avec le prochain coup et bloque ce coup en le jouant à sa place.
    for i in range(1, 10):
        copy = getBoardCopy(board)
        if isSpaceFree(copy, i):
            makeMove(copy, playerLetter, i)
            if isWinner(copy, playerLetter):
                return i
 
    # Puis, il y a un choix effectué pour l'ordinateur de manière prioritaire:
    # Si l'un des coins du tableau est libre, l'ordinateur joue un coup sur l'un des coins.
    move = chooseRandomMoveFromList(board, [1, 3, 7, 9])
    if move != None:
        return move
 
    # Si le centre du tableau est libre, l'ordinateur le joue.
    if isSpaceFree(board, 5):
        return 5
 
    # Enfin, l'ordinateur joue l'une des autres cases libres.
    return chooseRandomMoveFromList(board, [2, 4, 6, 8])
 
def isBoardFull(board):
    # Retourne vrai si toutes les cases du tableau sont remplies.
    for i in range(1, 10):
        if isSpaceFree(board, i):
            return False
    return True
 
 
print('Tic Tac Toe!')
 
while True:
    # Réinitialisation du tableau
    theBoard = [' '] * 10
    playerLetter, computerLetter = inputPlayerLetter()
    turn = whoGoesFirst()
    print('Le ' + turn + ' commence.')
    print('Les nombres associés aux cases vont de bas en haut et de gauche à droite')
    gameIsPlaying = True
 
    while gameIsPlaying:
        if turn == 'joueur':
            # Tour du joueur.
            drawBoard(theBoard)
            move = getPlayerMove(theBoard)
            makeMove(theBoard, playerLetter, move)
 
            if isWinner(theBoard, playerLetter):
                drawBoard(theBoard)
                print('Bravo! Vous avez gagné!')
                gameIsPlaying = False
            else:
                if isBoardFull(theBoard):
                    drawBoard(theBoard)
                    print('Pas de solution!')
                    break
                else:
                    turn = 'ordinateur'
 
        else:
            # Tour de l'ordinateur.
            move = getComputerMove(theBoard, computerLetter)
            makeMove(theBoard, computerLetter, move)
 
            if isWinner(theBoard, computerLetter):
                drawBoard(theBoard)
                print('Vous avez perdu.')
                gameIsPlaying = False
            else:
                if isBoardFull(theBoard):
                    drawBoard(theBoard)
                    print('Pas de solution!')
                    break
                else:
                    turn = 'joueur'
 
    if not playAgain():
        break