Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Python] SyntaxError: invalid syntax

Sujet résolu
10 mai 2013 à 13:43:33

Bonjour, je suis en train de suivre le tutoriel "Apprendre à programmer en Python" du site du zéro et j'essaie de créer le TP de la roulette, j'écrit le code suivant dans roulette.py :

import math
import random
points = 1000
tours = 0
while True:
	print("Vous avez",points,"points")
	choisi = int(input("Tapez un nombre entre 0 et 49"))
	if (choisi < 50) and (choisi > -1):
		mise = int(input("Combien voulez-vous misez?"))
		if mise <= points:
			roulette = math.ceil(random.randrange(50))
			if roulette==choisi:
				points += 2 * mise
				print("Gagne! Vous gagnez le double de votre mise")
			elif (roulette % 2 == 0) and (choisi % 2):
				points += 0.5 * mise
				print("Tous les deux pairs, vous gagnez la moitie de votre mise")
				roulette += 1
				choisi += 1
				elif (roulette % 2 == 0) and (choisi % 2):
					points += 0.5 * mise
					print("Tous les deux impairs, vous gagnez la moitie de votre mise")
					else:
						points -= mise
						print ("Perdu! Vous perdez votre mise.")
	tours +=1
	if points<1:
		break
print("Vous avez survecu pendant",tours,"tours")

j'essaie d'éxécuter le code mais ça m'affiche :

  File "roulette.py", line 20
    elif (roulette % 2 == 0) and (choisi % 2):
       ^
SyntaxError: invalid syntax

Que dois-je modifier dans le code?

  • Partager sur Facebook
  • Partager sur Twitter
12 mai 2013 à 15:06:15

il faut supprimer les parentheses
  • Partager sur Facebook
  • Partager sur Twitter
Si c'était facile, tout le monde le ferait.
9 juin 2013 à 13:05:08

  File "roulette.py", line 20
    elif(roulette % 2 == 0 and choisi % 2):
       ^
SyntaxError: invalid syntax
ça me le refait

-
Edité par sosola 9 juin 2013 à 13:11:25

  • Partager sur Facebook
  • Partager sur Twitter
9 juin 2013 à 13:07:50

up

-
Edité par sosola 9 juin 2013 à 13:11:19

  • Partager sur Facebook
  • Partager sur Twitter
9 juin 2013 à 18:49:40

enleve les parentheses du elif
  • Partager sur Facebook
  • Partager sur Twitter
Si c'était facile, tout le monde le ferait.
12 juin 2013 à 18:58:00

 elif roulette % 2 == 0 and choisi % 2:
comme ceci

-
Edité par Smich74 12 juin 2013 à 18:58:12

  • Partager sur Facebook
  • Partager sur Twitter
Si c'était facile, tout le monde le ferait.
12 juin 2013 à 19:51:23

Bonjour,

Ton erreur viens du fait que tes conditions (if, elif, elif, etc) sont imbriqué les unes dans les autres alors qu'elles devraient être au même niveau d'identation  Plus précisement un elif et un else "répondent" à un if et doivent donc être au même niveau que lui.

Cela devrait donc donner ca :

import math
import random
points = 1000
tours = 0
while True:
    print("Vous avez",points,"points")
    choisi = int(input("Tapez un nombre entre 0 et 49"))
    if (choisi < 50) and (choisi > -1):
        mise = int(input("Combien voulez-vous misez?"))
        if mise <= points:
            roulette = math.ceil(random.randrange(50))
            if roulette==choisi:
                points += 2 * mise
                print("Gagne! Vous gagnez le double de votre mise")
            elif (roulette % 2 == 0) and (choisi % 2):
                points += 0.5 * mise
                print("Tous les deux pairs, vous gagnez la moitie de votre mise")
                roulette += 1
                choisi += 1
            elif (roulette % 2 == 0) and (choisi % 2):
                points += 0.5 * mise
                print("Tous les deux impairs, vous gagnez la moitie de votre mise")
            else:
                points -= mise
                print ("Perdu! Vous perdez votre mise.")
    tours +=1
    if points<1:
        break
print("Vous avez survecu pendant",tours,"tours")


Pour info, les parenthèses sont la plupart du temps autorisées dans python même si elles ne "servent à rien".

-
Edité par Dodrekai 12 juin 2013 à 19:55:55

  • Partager sur Facebook
  • Partager sur Twitter
15 juin 2013 à 9:57:52

merci, je vais essayer

EDIT : Eurêka, ça a marché! *va courir tout nu dans les rues de Syracuse*

-
Edité par sosola 15 juin 2013 à 10:17:18

  • Partager sur Facebook
  • Partager sur Twitter
15 juin 2013 à 11:52:04

La prochaine fois tu obtiendras le bonne réponse plus rapidement en postant directement sur le forum Python...

  • Partager sur Facebook
  • Partager sur Twitter
Zeste de Savoir, le site qui en a dans le citron !
15 juin 2013 à 13:29:53

quand, j'ai cliqué sur le bouton aide dans le tuto, ça m'a redirigé ici
  • Partager sur Facebook
  • Partager sur Twitter
15 juin 2013 à 14:33:26

Oui, c'est normal, mais je te dis juste que la prochaine fois que tu auras une question sur Python, ce sera plus simple que tu ailles directement sur le forum Python pour la poser. Peu de gens qui font du Python parcourent ce forum, alors que sur le forum Python, tu aurais probablement eu la bonne réponse en moins de 10 minutes.

Je dis ça pour toi, hein.

-
Edité par nohar 15 juin 2013 à 14:34:56

  • Partager sur Facebook
  • Partager sur Twitter
Zeste de Savoir, le site qui en a dans le citron !
11 novembre 2019 à 4:17:32

Bonjour/Bonsoir, je sollicite votre aide sur les deux erreus ci dessous. Merci!

  • Partager sur Facebook
  • Partager sur Twitter
11 novembre 2019 à 18:30:15

Bonjour,

Déterrage

Citation des règles générales du forum :

Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.

Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre.
En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.

Au lieu de déterrer un sujet il est préférable :

  • soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
  • soit de créer un nouveau sujet décrivant votre propre contexte
  • ne pas répondre à un déterrage et le signaler à la modération

Je ferme ce sujet. En cas de désaccord, me contacter par MP.

  • Partager sur Facebook
  • Partager sur Twitter