IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

IDLE: Socket Error


Sujet :

Python

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 22
    Par défaut IDLE: Socket Error
    Bonjour,

    Voilà j'ai un problème sur python.. J'utilise IDLE pour tenter de réaliser un pendu, je fais souvent F5 pour executer le programme, et je retourne souvent changer quelque trucs dans mon code.
    Mais au bout d'un moment quand je tape sur F5, le message suivant s'affiche:

    Socket Error: Aucune connexion n'a pu etre établie car l'ordinateur cible l'a expressement refusée.

    ET

    IDLE's subprocess didn't make connection. Either IDL can't start a subprocess or personal firewall software is blocking the connection.

    Donc je ne peux plus executer mon programme la fenetre se referme tout le temps apres. J'ai vérifié sur mon pare-feu windows, et le programme est pourtant bien autorisé.

    Que faire ?

  2. #2
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Un truc comme ça m'est déjà arrivé. Dans ce cas, il faut tuer le processus python.

    Sous Windows: ctle-alt-del et arrêt du processus pythonw.exe. Sous Linux: voir avec la distribution utilisée.

    Je ne sais pas d'où ça vient, mais comme idle est écrit en python, il est possible que certains bugs du programme testé provoque cela.

    Tyrtamos

  3. #3
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 729
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 729
    Par défaut
    Salut,
    Je ne sais pas d'où ça vient, mais comme idle est écrit en python, il est possible que certains bugs du programme testé provoque cela.
    Tout à fait.
    Nombre de ces bugs devraient être corrigés avec 2.7.
    Quelle est la version de Python que vous utilisez?
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 22
    Par défaut
    Merci pour vos réponses.
    J'ai déjà tué le programme, j'ai recommencé plein de fois et ça en remarche jamais, je suis toujours obligé de redemarrer l'ordinateur pour que cela fonctionne à nouveau.. Un peu relou !

    Ah ça marcherait mieux avec la version 2.7 ? J'utilise la 2.6.6
    Quelqu'un aurait-il le lien pour cette version, je suis sous windows7. Pck je comprends rien aux milliards de liens sur le site python.

    Merci de votre aide !

  5. #5
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Ce n'est pas le programme ('Python shell') qu'il faut tuer , c'est le processus (pythonw.exe pour windows). S'il y en a 2, il faut tuer les 2.

    Tyrtamos

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 22
    Par défaut
    Ha d'accord, mais je ne vois pas trop ce que ca veut dire je ne suis pas expert dans le domaine ^^
    Mais j'ai installé python 2.7 pour le moment ca marche !

    Dernière petite question, j'ai un problème mon programme suivant ne fonctionne pas:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    from random import randrange
    a= randrange (0,100)
    b= raw_input()
    while (a != b):
        if (a < b):
            print "C'est moins!"
        elif (a > b):
            print "C'est plus!"
    else :
        print "Bravo! Tu as trouve le nombre"
    Je tape un chiffre dans mon programme et "c'est plus" s'ecrit infiniment sur l'écran sans jamais s'arreter. Quelqu'un sait où est mon bug, independemment du fait que je n'ai pas mis de break.
    De plus le randrange n'a pas l'air de fonctionner, car peut importe le chiffre que je tapes il dit toujours qu'il est plus petit..

  7. #7
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Voilà une version qui marche:

    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
     
    from random import randrange
     
    a= randrange(0, 100)
    while True:
        b= raw_input("=>")
        if b=="":
            break
        b = int(b)
        if a < b:
            print "C'est moins!"
        elif a > b:
            print "C'est plus!"
        else:
            print "Bravo! Tu as trouve le nombre"
            break
    L'un des pb que tu avais, c'est que le résultat de raw_input est une chaine de caractère, et pas un entier. Il faut donc la convertir, mais il faut éliminer la non-réponse (retour sans valeur) qui donnerait une erreur de conversion, et qui par contre est une bonne façon d'interrompre la boucle.

    Tyrtamos

  8. #8
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 729
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 729
    Par défaut
    Salut,

    Citation Envoyé par yannjuve Voir le message
    Je tape un chiffre dans mon programme et "c'est plus" s'ecrit infiniment sur l'écran sans jamais s'arreter. Quelqu'un sait où est mon bug, independemment du fait que je n'ai pas mis de break.
    D'après vous qu'est ce qui pourra changer a ou b à l'intérieur de la boucle? Et s'ils ne changent pas comment pourra-t-on en sortir?


    De plus le randrange n'a pas l'air de fonctionner, car peut importe le chiffre que je tapes il dit toujours qu'il est plus petit..
    Quand vous avez ce genre de doute, n'hésitez pas à regarder ce qui se passe sous IDLE...

    Pour le reste, a est un entier puisque c'est le type retourné par randrange alors que b sera une suite de bytes retournés par raw_input.
    Les deux objets étant de types différents, ils seront différents - ce qui est une option plus soft que de lever l'exception "je ne sais comparer carottes et bananes".

    Comme les entiers sont exprimes par les lettres 0-9, ce sont des caractères ASCII et pour transformer le retour de raw_input en "int", il suffira - pour l'instant - de faire: b = int(raw_input()).
    - W
    PS: Grilled by Tyrtamos.
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  9. #9
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Petit amusement complémentaire: comment répondre pour trouver le résultat en un minimum de boucle (ici, 7 au maxi)?

    Tyrtamos

  10. #10
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 729
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 729
    Par défaut
    Citation Envoyé par tyrtamos Voir le message
    Petit amusement complémentaire: comment répondre pour trouver le résultat en un minimum de boucle (ici, 7 au maxi)?

    Tyrtamos
    Si on sait que le nombre est entre 0 et 100, c'est facile.
    Mais on ne peut faire cette hypothèse que parce qu'on a lu le code...
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  11. #11
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Mais on ne peut faire cette hypothèse que parce qu'on a lu le code...
    Oui, mais si on ne sait pas, ce n'est cependant pas désespéré, puisqu'avec la méthode à laquelle je pense, on saurait trouver la bonne valeur parmi 0..1000000 en une vingtaine d'essais... Il faudrait ajouter quelque essais pour trouver au début où se trouve la plage des valeurs.

    Tyrtamos

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 22
    Par défaut
    Merci bcp de vos réponses encore.
    Seulement:

    tyrtamos le code que tu m'as passé fonctionne bien, mais ça ne me permet pas de comprendre mon erreur. Je me demandes aussi pourquoi tu écris raw_input ("=>") que signifie cette fleche ? Et pourquoi as tu mis un break quand b=" " ?

    wiztricks, j'ai bcp de mal à comprendre ton aide, mais je pense en avoir compris l'essentiel. Il faut que j'ajoute int() pour la valeur de raw_input qui est celle de b dans mon code ? C'est ce que j'ai fait, j'ai tapé b=int(raw_input() ) mais il m'affiche un truc en rouge comme quoi il y a une erreur dans mon code.
    Mais je ne comprends pas pourquoi il faut ajouter int() en plus. Toute façon le chiffre qui sera tapé sera forcément un entier. Si la réponse est trop compliqué pour moi (mon niveau) alors ne répondez pas c'est pas grave

  13. #13
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Pour le raw_input('=>'): le '=>' est affiché lorsque le programme attend la réponse (ça s'appelle une 'invite' en français ou un 'prompt' en anglais).

    Comme raw_input renvoie une chaine de caractères, il faut la convertir avec int pour avoir un nombre entier. Ainsi, int("5") donne 5. Attention: "5" et 5 ne sont pas codés de la même façon dans l'ordinateur. Et une réponse avec la seule touche 'entrée' donnerait une chaine vide "", et int("") génèrerait une erreur et arrêterait le programme.

    Pour démarrer, je te suggère l'excellent tutoriel de Swinnen (http://python.developpez.com/cours/TutoSwinnen/).

    Tyrtamos

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 22
    Par défaut
    Merci bcp je vais suivre ton conseil !
    Merci de ton aide c'est sympa !!

Discussions similaires

  1. Réponses: 6
    Dernier message: 09/06/2007, 22h50
  2. Problème "socket error 10093"
    Par tougnon dans le forum Sécurité
    Réponses: 2
    Dernier message: 31/10/2006, 22h27
  3. Indy 'Socket error #10022'
    Par EntraX666 dans le forum Delphi
    Réponses: 2
    Dernier message: 13/08/2006, 18h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo