Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 27/05/2016, à 18:22

turblad

[Résolu] Problème Geany-Python-Terminal sous Ubuntu

Bonjour à tous
Je débute le cours Python de OpenClassrooms. Voici mon problème :
Je suis sous Linux Ubuntu, et j'utilise l'éditeur Geany. Mon souci étant purement technique, je ne demande pour l'instant aucune appréciation concernant mon programme lui-même (je n'ai pas consulté le corrigé) à moins qu'il ne soit à l'origine du bug.
J'en suis au premier exercice (ZCasino) dont voici mon début en cours de développement :

#!/usr/bin/python3.5
# -*- coding: utf-8 -*-
 
def mon_choix ():
    """Permet de choisir le numéro sur lequel vous souhaitez miser"""
     
    dp = True
    while dp :
        entree = input('Choisissez un numéro entre 0 et 49 (inclus): ')
        try:
            numero = int (entree)
             
        except ValueError:
            print ('Vous n\'avez pas choisi un nombre')
                      
            continue
        if numero < 0 or numero > 49:
            print ('Le nombre que vous avez choisi n\'est pas dans l\'intervalle 0 - 49')
        else:
            dp = False
    return numero
 
mon_numero = mon_choix()
print ('Vous jouez sur le numéro ',mon_numero)
 
print ('Le jeu est terminé, vous n\'avez plus d\'argent !')
 
 
input()

Si je lance le programme par double clic "lancer dans un terminal", tout semble fonctionner comme l'indique la capture ci-dessous -l'erreur choisie "( représente le cas typique de l'utilisateur qui aurait tapé 35 sur un clavier de portable sans la touche maj- :

Choisissez un numéro entre 0 et 49 (inclus): "(
Vous n'avez pas choisi un nombre
Choisissez un numéro entre 0 et 49 (inclus): 56
Le nombre que vous avez choisi n'est pas dans l'intervalle 0 - 49
Choisissez un numéro entre 0 et 49 (inclus): 25 
Vous jouez sur le numéro  25
Le jeu est terminé, vous n'avez plus d'argent !

Si je le lance par la touche F5 ou la barre d'outil de Geany, j'obtiens ceci :

Choisissez un numéro entre 0 et 49 (inclus): "(
Traceback (most recent call last):
  File "ZCasino_2.py", line 23, in <module>
    mon_numero = mon_choix()
  File "ZCasino_2.py", line 9, in mon_choix
    entree = input('Choisissez un numéro entre 0 et 49 (inclus): ')
  File "<string>", line 1
    "(
     ^
SyntaxError: EOL while scanning string literal

Et comme cette approche est logique depuis l'éditeur, voici 8 jours que je cherche l'origine des erreurs de mon programme qui semble fonctionner (il fonctionne aussi parfaitement dans la console).
Mes recherches semblent indiquer que le bug viendrait de la manière dont Geany appelle le terminal :

[tools]
terminal_cmd=x-terminal-emulator -e "/bin/sh %c"

Mais voilà je ne suis pas assez fort pour savoir par quoi remplacer.
Un grand merci d'avance à ceux qui ont eu le même problème et surtout sa solution !

Dernière modification par turblad (Le 28/05/2016, à 02:02)


Il nous fallut bien du talent pour être vieux sans être adulte
Jacques Brel (chanson des vieux amants)

Hors ligne

#2 Le 27/05/2016, à 23:58

soshy

Re : [Résolu] Problème Geany-Python-Terminal sous Ubuntu

Salut,

turblad a écrit :

Mes recherches semblent indiquer que le bug viendrait de la manière dont Geany appelle le terminal

Raté ! Le problème c'est que la version de python executé par le terminal c'est python 3.x (a cause du début de ton fichier) alors que la version utilisée avec geany c'est 2.x (a cause de la configuration de geany).

Ca se voit assez bien en exécutant ton programme avec les 2 lignes que j'ai rajouté :

#!/usr/bin/python3.5
# -*- coding: utf-8 -*-

import sys
 
def mon_choix ():
    """Permet de choisir le numéro sur lequel vous souhaitez miser"""
     
    dp = True
    while dp :
        entree = input('Choisissez un numéro entre 0 et 49 (inclus): ')
        try:
            numero = int (entree)
             
        except ValueError:
            print ('Vous n\'avez pas choisi un nombre')
                      
            continue
        if numero < 0 or numero > 49:
            print ('Le nombre que vous avez choisi n\'est pas dans l\'intervalle 0 - 49')
        else:
            dp = False
    return numero

print(sys.version) 
mon_numero = mon_choix()
print ('Vous jouez sur le numéro ',mon_numero)
 
print ('Le jeu est terminé, vous n\'avez plus d\'argent !')
 
 
input()

En version 3, la commande input équivaut à raw_input en version 2. Et input tout court en version 2 comme ça fait pas la meme chose qu'en version 3 tu constates effectivement un comportement différent !
La solution c'est donc de dire a geany d'utiliser python3. Voir comment faire ici

Dernière modification par soshy (Le 28/05/2016, à 00:06)

Hors ligne

#3 Le 28/05/2016, à 01:55

turblad

Re : [Résolu] Problème Geany-Python-Terminal sous Ubuntu

J'y avais pensé mais je croyais qu'en remplaçant le shebang auto de geany :

#!/usr/bin/env python

par celui-ci :

#!/usr/bin/python3.5

ça serait suffisant.
Raté
Je ne connaissais pas "raw_input" parce que je découvre Python. À 68 ans, informatique amateur ce n'est pas forcément évident.
Très, très grand MERCI.
Je mets en résolu


Il nous fallut bien du talent pour être vieux sans être adulte
Jacques Brel (chanson des vieux amants)

Hors ligne