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 :

Problème de compteur


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Lycéen
    Inscrit en
    Juillet 2010
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juillet 2010
    Messages : 29
    Par défaut Problème de compteur
    Bonjour a tous ! Dans le cadre d'un projet en cours de technologie nous devons, un ami et moi, créer un compteur incrementatif... En théorie, ce compteur devra servir a délimiter le temps des candidats dans un jeu télévise, mais c'est une simulation bien entendu J'avais commencé a le créer en batch, mais je rencontre un problème avec ça :

    Mon professeur m'a demande si je pouvais prendre en compte le fait que chaque candidat aura 10 secondes pour répondre a la question posée par l'animateur, il possédera donc un buzzer (une touche du clavier) qui stoppera le fonctionnement du compteur pendant dix secondes donc...

    C'est alors que j'ai imaginé le faire en Python, mais encore une fois, je rencontre le même problème qu'en Batch, avec la pause dans le compteur... Je vous mets ici mon début de code. Avant toutes chose, je tiens a préciser que ce travail n'est pas noté et que je suis le seul a programmer dans la classe et que ce n'est donc pas ce que le prof veut réellement, mais ça semble lui plaire quand même, vous ne faites donc pas le travail a ma place en tout cas voici mon premier bout de code (je débute en Python hein) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    import os
    import sys
    import time 
    i=60
    continuer_partie=True
    while continuer_partie:
              i-=1
              print(i)
              os.system('cls')
              if i==0:
                        break
                        print('Temps écoulé !')
              stop_buzzer=input()
              if stop_buzzer=s:
    C'est précisément la que je bloque, je voudrais que si le candidat appuie sur la touche s du clavier le compteur se mette en pause... Bon la rien qu'en lisant mon code je sais que j'en suis loin et qu'il y a des erreurs, je vous demande donc de m'aider a le compléter et de m'aider a corriger ces erreurs... Merci a tous ceux qui lisent et qui prennent le temps de répondre a mon message.

    Cordialement.

  2. #2
    Membre averti
    Homme Profil pro
    Lycéen
    Inscrit en
    Juillet 2010
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juillet 2010
    Messages : 29
    Par défaut
    Salut VinsS ! Merci je vais le tester tout de suite. J'ai lu ton code et je t'avouerai que je ne comprends pas certaines choses, mais je vais le travailler pour comprendre, par contre juste une question, le compteur se met-il en pause quand l'utilisateur (le candidat) appuie sur une touche ?

    En tout cas un grand merci

  3. #3
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Bonjour,

    Bon, c'est plus compliqué mais j'aurais vu cela plutôt avec getch, dans le style:

    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
    #!/usr/bin/env python
    #-*- coding: utf-8 -*-
    #
    #
    import threading
    import sys
    import time
     
    class getletter(threading.Thread):
        def __init__(self):
            threading.Thread.__init__(self)
            self._stopevent = threading.Event()
            self.getch = Getch()
     
        def run(self):
            while not self._stopevent.isSet():
                lettre = self.getch()
                if lettre == 'q':
                    global continuer_partie
                    print('Arret')
                    continuer_partie = False
                    self._stopevent.set()
                if lettre == 's':
                    global stop_buzzer
                    stop_buzzer = True
     
        def stop(self):
            self._stopevent.set()
     
    class Getch:
        def __init__(self):
            try:
                self.impl = _GetchUnix()
            except ImportError:
                self.impl = _GetchWindows()
     
        def __call__(self):
            return self.impl()
     
    class _GetchUnix:
        def __init__(self):
            import tty
     
        def __call__(self):
            import tty, termios
            _fd = sys.stdin.fileno()
            _old_settings = termios.tcgetattr(_fd)
            try:
                tty.setraw(sys.stdin.fileno())
                ch = sys.stdin.read(1)
            finally:
                termios.tcsetattr(_fd, termios.TCSADRAIN, _old_settings)
            return ch
     
    class _GetchWindows:
        def __init__(self):
            import msvcrt
     
        def __call__(self):
            import msvcrt
            return msvcrt.getch()
     
    class _GetchMac:
        # A faire
        pass
     
    trhvar = getletter()
    trhvar.start()
    i = 60000
    continuer_partie = True
    stop_buzzer = False
    while continuer_partie:
              i -= 1
              print(i)
              if stop_buzzer == True:
                  print('10 sec pour répondre')
                  time.sleep(10)
                  stop_buzzer = False
              if i == 0:
                trhvar.stop()
                continuer_partie = False
                print('Temps écoulé !')
    (A corriger)

    Mais bon... Cela vas chercher loin...

    @+

  4. #4
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    @ PauseKawa Ben si tu pond ça un dimanche ensoleillé qu' est-ce que ça doit être en semaine.


    Citation Envoyé par proinfo Voir le message
    Salut VinsS ! Merci je vais le tester tout de suite. J'ai lu ton code et je t'avouerai que je ne comprends pas certaines choses, mais je vais le travailler pour comprendre, par contre juste une question, le compteur se met-il en pause quand l'utilisateur (le candidat) appuie sur une touche ?
    Non, c'est un exemple basique de chez basique, il faudra étoffer la fonction cancel selon tes besoins.

  5. #5
    Membre averti
    Homme Profil pro
    Lycéen
    Inscrit en
    Juillet 2010
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juillet 2010
    Messages : 29
    Par défaut En VBS ?
    Me revoilà, mon copain et moi avalons beaucoup réfléchis et on a imaginer faire le compteur en VBS, alors la encore un petit problème je ne sais que programmer des boites de dialogue dans ce langage... Alors, sans le donner le code en entier, est-il possible que vous le passiez quelques commandes, ou un début de code, ou encore même des pistes pour m'aider a réaliser ce que je veux faire... Je rappel mon projet au cas ou :

    Je veux faire un compteur incrémentatif qui s'arrête a un chiffre donné, qui s'arrête également lorsque l'utilisateur appuie sur une touche, le design n'est pas important, donc aucun problème de ce cote la, si ce n'est des chiffres assez gros pour que le "public" les voit...

    Merci encore, je parle de VBS mais toutes les solutions sont les bienvenues bien entendu

  6. #6
    Membre averti
    Homme Profil pro
    Lycéen
    Inscrit en
    Juillet 2010
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juillet 2010
    Messages : 29
    Par défaut
    Citation Envoyé par proinfo Voir le message
    Me revoilà, mon copain et moi avalons beaucoup réfléchis et on a imaginer faire le compteur en VBS, alors la encore un petit problème je ne sais que programmer des boites de dialogue dans ce langage... Alors, sans le donner le code en entier, est-il possible que vous le passiez quelques commandes, ou un début de code, ou encore même des pistes pour m'aider a réaliser ce que je veux faire... Je rappel mon projet au cas ou :

    Je veux faire un compteur incrémentatif qui s'arrête a un chiffre donné, qui s'arrête également lorsque l'utilisateur appuie sur une touche, le design n'est pas important, donc aucun problème de ce cote la, si ce n'est des chiffres assez gros pour que le "public" les voit...

    Merci encore, je parle de VBS mais toutes les solutions sont les bienvenues bien entendu
    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
    Module Compteur 
              Sub Main()
                        Dim i As Integer
                        Dim j As Integer
                        i = 0
                        j = 5
                        While i < 5
                                  i += 1
                                  Console.Write(i)
                                  Next
                        End While
                        If i = j Then
                                  Console.Write("Fin !!!")
                                  Console.Read()
                        End If
              End Sub
    End Module

Discussions similaires

  1. Problème de compteur dans un timer
    Par mcspawn dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 21/12/2007, 19h23
  2. Réponses: 7
    Dernier message: 14/05/2007, 00h53
  3. Problème de compteur de visite en php
    Par bodysplash007 dans le forum Langage
    Réponses: 2
    Dernier message: 04/05/2007, 22h12
  4. Problème de compteur
    Par Altarias dans le forum C
    Réponses: 5
    Dernier message: 31/10/2006, 19h34
  5. [Système] Problème avec compteur de téléchargement
    Par Baptiste Wicht dans le forum Langage
    Réponses: 24
    Dernier message: 24/06/2006, 08h21

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