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 :

Filtrage d'une base de données de tirages du Loto


Sujet :

Python

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2021
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2021
    Messages : 32
    Points : 4
    Points
    4
    Par défaut Filtrage d'une base de données de tirages du Loto
    Bonjour M12,



    Je me nomme Dominique, J'ai besoin de votre aide alors je vous écris dans l'espoir de trouver de l'aide , J'ai une base de données qui est en fait l'historique des résultats de Loto de l'année 1871 à l'année 2021. Je voudrais trouver un programme qui me permet de faire un filtre spécifique de ma base de données. Quand je décide de filtrer manuellement cela me prend 6h de temps, Je voudrais souligner la raison pour laquelle je me suis mis à ce jeu, j'ai des problèmes de santé qui ne me permettent pas de travailler, je suis père de famille j'ai deux enfants Rayan et Brayan alors il faut que je puisse remplir ma tâche de père et grâce à ce jeu depuis 4 ans je ne manque de rien parce que j'ai une certaine connaissance qui me permet de gagner des petits montants et qui me permet de m'occuper de ma petite famille, mais avec votre aide je serai soulagé de ne pas passer 6h de temps à filtrer ma base de données qui est composée de 5 numéros par tirage.



    Voici un exemple de filtre que je souhaiterais avoir, la racine ou la signature ou mot clé de ma recherche est un numéro puis son successeur ( 62 numéro 14 qui est successeur accompagné de deux autres numéros qui sont 41 et 01 ) et peu importe leur ordre d'emplacement dans les deux tirages. Je voudrais un filtre qui serait capable de trouver automatiquement les quatre numéros de ma recherche dans les deux tirages qui sont: 1) et 2 ).



    J'ai pris pour exemple 62 numéro et 14 pour successeur et 41 01 pour numéro accompagnateur ou figurant juste pour mieux me faire comprendre sinon je voudrais avoir le libre choix d'utiliser des différents numéros de 01 à 90 comme numéro, comme successeur, et accompagnateur ou figurant.



    Explication de ma recherche:

    J'utilise toujours les deux derniers tirages des JEUX pour effectuer mes recherches, J'utilise Un seul Numéro dans le Tirage 1) et dans le Tirage 2) j'utilise le successeur du numéro choisir dans le tirage 1) puis deux autres numéros présents dans le tirage 2).



    Tirage 1) 62.78.17.80.77 ou 78 ou 17 ou 80 ou 77

    Tirage 2) 14.41.01.16.68 successeur et deux autre numéro présent dans le tirage 2)



    ICI EN BAS EXEMPLE DE MA BASE DE DONNÉES.



    90.27.63.55.62 1)

    29.48.41.01.14 2)

    83.46.19.71.11 3)

    03.42.54.41.58 4)

    24.84.80.06.29

    68.35.67.74.47

    50.42.55.30.74

    54.68.02.62. 47 1)

    50.77.41.14.01 2)

    08.75.87.52.59 3)

    32.17.23.41.33 4)

    12.51.58.78.13

    63.85.74.56.01

    62.72.88.89. 13 1)

    14.03.41.01. 09 2)

    22.25.88.14.35 3)

    25.62.45.03.49 4)

    03.80.59.43.19

    59.89.45.90.64

    76.29.63.41.06

    29.59.33.72.62

    49.72.62.18.81 1)

    41.03.14.50.01 2)

    47.24.59.82.06 3)

    02.67.14.74.87 4)

    40.55.13.90.65

    86.14.60.02.72

    10.05.11.49.32

    39.58.54.81.38

    67.62.22.25.06 1)

    52.14.41.01.59 2)

    74.62.15.31.10 3)

    75.21.42.50.12 4)

    77.83.23.03.19

    33.01.44.43.70

    27.74.51.43.82


    Je pourrais vous joindre la base de mes données ( Historique de l'année 1871 a 2021 ) en format TXT.

    Comme résultat du filtre souhaité je voudrais avoir le tirage 1) , 2 ), 3), et 4) à la ligne, puis 1) , 2 ), 3), et 4) etc... en format TXT.



    90.27.63.55.62 1)

    29.48.41.01.14 2)

    83.46.19.71.11 3)

    03.42.54.41.58 4)



    54.68.02.62. 47 1)

    50.77.41.14.01 2)

    08.75.87.52.59 3)

    32.17.23.41.33 4)



    62.72.88.89. 13 1)

    14.03.41.01. 09 2)

    22.25.88.14.35 3)

    25.62.45.03.49 4)



    49.72.62.18.81 1)

    41.03.14.50.01 2)

    47.24.59.82.06 3)

    02.67.14.74.87 4)



    67.62.22.25.06 1)

    52.14.41.01.59 2)

    74.62.15.31.10 3)

    75.21.42.50.12 4)


    Une fois ce résultat trouvé je récupère tous les numéros qui se répètent sur les lignes 3) et je joue l'ensemble des numéros cela me permet de gagner. La ligne 4) augmente la probabilité qu'un numéro joue exemple si je trouve un numéro et un successeur identique sur la ligne 3) et 4) dans les différents résultats ce numéro à 99% de chance qu'il joue au prochain tirage.



    J'ai été long Je suis désolé , mais j'espère de tout mon cœur que quelqu'un comprenne ce que j'ai essayé d'expliquer et qu'il me viennent en aide, Je tiens à vous remercier d'avance.

    Je suis dans l'attente d'une réponse Merci.

  2. #2
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 684
    Points : 30 973
    Points
    30 973
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Dominichx16 Voir le message
    Bonjour M12,
    Bonjour (M12???)

    J'ai quelques incompréhensions sur ta recherche. C'est quoi pour toi un "successeur" ? C'est un numéro du second tirage (ex 62 dans le premier tirage et 14 dans le second) ???

    Citation Envoyé par Dominichx16 Voir le message
    Je voudrais un filtre qui serait capable de trouver automatiquement les quatre numéros de ma recherche dans les deux tirages qui sont: 1) et 2 ).
    Donc tu cherches 4 numéros et tu veux les trouver dans deux tirages qui se suivent. Ok. Mais est-ce que ça doit aussi trouver si le tirage 1 a trois numéros et le tirage 2 en n'a qu'un seul? Ou bien si le tirage 1 a trois numéros et le tirage 2 en n'a qu'un seul ???

    Citation Envoyé par Dominichx16 Voir le message
    Tirage 1) 62.78.17.80.77 ou 78 ou 17 ou 80 ou 77
    Tirage 2) 14.41.01.16.68 successeur et deux autre numéro présent dans le tirage 2)
    Ah. Donc tu veux un numéro du tirage 1 et le successeur et deux autres (donc trois numéros) du tirage 2...

    Citation Envoyé par Dominichx16 Voir le message
    Je pourrais vous joindre la base de mes données ( Historique de l'année 1871 a 2021 ) en format TXT.
    Non, on s'en fout. Un court exemple suffira.

    Citation Envoyé par Dominichx16 Voir le message
    dans les deux tirages qui sont: 1) et 2 )... Comme résultat du filtre souhaité je voudrais avoir le tirage 1) , 2 ), 3), et 4) à la ligne, puis 1) , 2 ), 3), et 4) etc... en format TXT.
    Ah !!! Maintenant tu veux que ça sorte QUATRE tirages !!!???!!! Faudrait rester un peu cohérent...

    Citation Envoyé par Dominichx16 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    90.27.63.55.62 1)
    29.48.41.01.14 2)
    83.46.19.71.11 3)
    03.42.54.41.58 4)
    Pourquoi la ligne 2 ? A cause du 41 ou du 01 ???
    Pourquoi la ligne 3 ? Elle ne contient aucun des numéros 62, 14, 41 ou 01 ???

    Pour ce qui est de sortir au format txt (détail) c'est peanut. Il suffit de faire une fonction qui "sorte" ce qu'il faut puis claquer sa sortie dans un fichier. Ca c'est vraiment que dalle. Pour le reste il te faut réexpliquer beaucoup de choses. Et surtout donner divers exemples excluant vraiment toute ambiguïté (comme ici la ligne 2 qui contient "41" et "01" => on ne sait pas lequel des deux nombres fait la différence...)

    Citation Envoyé par Dominichx16 Voir le message
    ce numéro à 99% de chance qu'il joue au prochain tirage.
    Non. Les tirages du loto étant équiprobables (le tirage n° 1 n'ayant absolument aucune influence sur le tirage n° 2, et ça c'est une loi mathématique incontournable) un numéro peut sortir 10 fois et avoir autant de chances de ressortir que de ne pas ressortir. Une fois j'ai vu le rouge sortir 11 fois d'affilée à la roulette...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 277
    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 277
    Points : 36 762
    Points
    36 762
    Par défaut
    Salut,

    Citation Envoyé par Dominichx16 Voir le message
    Je voudrais un filtre qui serait capable de trouver automatiquement les quatre numéros de ma recherche dans les deux tirages qui sont: 1) et 2 ).
    Pour "automatiser" la fabrication de toute chose, il faut décrire les différentes étapes et comment passer d'une étape à l'autre de façon "intelligible".

    Par exemple, si vous racontez:
    Citation Envoyé par Dominichx16 Voir le message
    J'utilise toujours les deux derniers tirages des JEUX pour effectuer mes recherches, J'utilise Un seul Numéro dans le Tirage 1) et dans le Tirage 2) j'utilise le successeur du numéro choisir dans le tirage 1) puis deux autres numéros présents dans le tirage 2).

    Tirage 1) 62.78.17.80.77 ou 78 ou 17 ou 80 ou 77

    Tirage 2) 14.41.01.16.68 successeur et deux autre numéro présent dans le tirage 2)
    On ne sait pas de quoi on part (est-ce que vous montrez T1 et T2 sortis de la base ou un des résultats cherchés?) pour construire quoi...

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  4. #4
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 461
    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 461
    Points : 9 248
    Points
    9 248
    Billets dans le blog
    6
    Par défaut
    Bonjour Sve@r

    Citation Envoyé par Sve@r Voir le message
    Non. Les tirages du loto étant équiprobables (le tirage n° 1 n'ayant absolument aucune influence sur le tirage n° 2, et ça c'est une loi mathématique incontournable) un numéro peut sortir 10 fois et avoir autant de chances de ressortir que de ne pas ressortir. Une fois j'ai vu le rouge sortir 11 fois d'affilée à la roulette...
    Tu n'as pas tort, mais il y a en fait deux principes contradictoires qui rentrent en collision:

    - A chaque tirage, chaque numéro a une chance égale d'être tiré (sinon il y a un défaut dans le système de tirage)

    - En moyenne, sur une longue liste de tirages, chaque numéro doit avoir été tiré avec la même fréquence

    Il est vrai qu'un même numéro peut sortir plusieurs fois de suite, mais si on fait le calcul, on voit que la probabilité que ça arrive devient très faible. On peut d'ailleurs le simuler en Python avec le tirage d'un dé. En plus, la probabilité de gagner le gros lot au loto est de l'ordre de 1 chance sur 14 millions. Autrement dit, le gagnant du gros lot aurait intérêt à s'arrêter de jouer...

    Alors, le système de tirage a-t-il oui ou non des défauts? C'est possible! Si on calcule les fréquences d'apparition de chaque numéro et que certains numéros apparaissent plus souvent, on peut essayer de les jouer, ou au contraire de jouer les numéros moins fréquemment rencontrés en espérant que la chance s'inversera! Bien sûr, cela n'est valide que si le système de tirage n'a pas été modifié dans la série considérée! Ce qui jette un doute sur la validité de considérer de trop longues séries. En tout cas, ce ne sont que des paris, et ça joue sur des probabilités qui n'évoluent que très faiblement...

    Il faut tout de même ajouter que la motivation pour jouer n'est pas qu'une question de probabilité, mais associe la probabilité à l'importance des conséquences (ici le gros lot). De même quand on évalue les risques de panne (fiabilité prévisionnelle) ou d'accident (sécurité). Pour le loto, on associe une probabilité très faible de gagner avec un évènement (gagner le gros lot) qui chance la vie! A chacun de faire son choix!
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  5. #5
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 684
    Points : 30 973
    Points
    30 973
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par tyrtamos Voir le message
    Bonjour Sve@r
    Hey

    Citation Envoyé par tyrtamos Voir le message
    - A chaque tirage, chaque numéro a une chance égale d'être tiré (sinon il y a un défaut dans le système de tirage)
    Jusque là je suis d'accord. Je pas aussi du principe que les boules sont neuves à chaque tirage (sinon on pourrait invoquer des phénomènes physiques liés à l'usure lors du mélange)...

    Citation Envoyé par tyrtamos Voir le message
    - En moyenne, sur une longue liste de tirages, chaque numéro doit avoir été tiré avec la même fréquence
    Euh voilà un souci. Mathématiquement il n'y a rien qui le garantit. Et pire, les mathématiques (mathématiques pures) disent très clairement que justement ce n'est réellement pas garantit (ni dans un sens ni dans l'autre). Ensuite si on rajoute des effets pas encore (ou peu) connus comme des effets quantiques ou, pourquoi pas, métaphysiques, qui présument que la chance "devrait" (sans justifier cette obligation car la science nous manque encore) s'équilibrer au final alors oui peut-être...(encore qu'il faudrait pouvoir aussi donner une limite spatio-temporelle à ce "final")...

    Citation Envoyé par tyrtamos Voir le message
    On peut d'ailleurs le simuler en Python avec le tirage d'un dé.
    Là on tombe dans les limites d'un ordinateur. En effet, la simulation de l'aléa par un ordinateur n'est qu'une "simulation". Rien ne garantit que les résultats sortis par cette simulation correspondent au vrai aléa naturel. Je me souviens d'une fois à un concours de hack informatique (vers 2015 je crois) le gagnant recevait un vrai simulateur aléatoire basé sur sais plus quelle techno (désintégration d'un atome de truc ou bien décohérence quantique de chose) et les commentaires de ce gros lot disaient que c'était un très beau cadeau. Bref peut-on dire "c'est ainsi que ça se passe dans la nature parce que c'est ainsi que ça se passe dans un programme" ?

    Citation Envoyé par tyrtamos Voir le message
    A chacun de faire son choix!
    Ouaip

    Sinon (@Dominichx16) je me suis amusé à faire un truc. Je suis parti du principe que la recherche se faisait dans l'ordre (si on veut les nombres "12" et "18" alors le programme commence par chercher "12" et s'il trouve alors il cherche ensuite "18" sur la ligne suivante. Et tout nombre trouvé est alors eliminé (le "12" n'est alors plus cherché). Donc si on veut un "12" sur deux lignes il faut explicitement demander "12 12".

    Le code
    Code python : 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
    #!/usr/bin/env python3
    # coding: utf-8
     
    def filtre(tabDatas, tabN):
    	# Création du résultat
    	result=list()
     
    	# Recopie des nombres à trouver (ne pas perdre l'original)
    	find=list(tabN)
     
    	# Traitement des datas (en les numérotant)
    	for (n, data) in enumerate(tabDatas, 1):
    		# Transformation de la data en tuple de nombres entiers
    		values=tuple(map(int, data.split(".")))
     
    		# Si le nombre à trouver courant ne se trouve pas dans les valeurs
    		if find[0] not in values:
    			# On réinitialise tout
    			result.clear()
    			find=list(tabN)
     
    			# On recommence toute la recherche à partir de la data suivante
    			continue
    		# if
     
    		# Ici le nombre courant a été trouvé, on le supprime des nombres à trouver
    		del find[0]
     
    		# On a trouvé une data, on la rajoute au résultat (avec son rang)
    		result.append((n, data))
     
    		# Si la recherche est finie (plus de numéros à trouver)
    		if not find:
    			# On sort l'info
    			yield result
     
    			# On réinitialise tout pour la data suivante
    			result.clear()
    			find=list(tabN)
    		# if
    	# for
    # filtre()
     
    # Programme
    if __name__ == "__main__":
    	import sys
    	# Récupération du fichier (on supprime les "\n")
    	with open(sys.argv[1], "r") as fp: tabLig=tuple(l.strip() for l in fp)
     
    	# Récupération des nombres à trouver
    	find=tuple(map(int, sys.argv[2:]))
     
    	# Recherche
    	for (n, res) in enumerate(filtre(tabLig, find), 1):
    		print("Recherche %s - Résultat %d" % (find, n))
    		for r in res: print(r)
    	# for
    # if

    Le fichier test
    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
    90.27.63.55.62
    29.48.41.01.14
    83.46.19.71.11
    03.42.54.41.58
    27.84.80.06.29
    29.35.67.74.47
    29.42.55.30.74
    54.68.02.62.18
    50.77.41.14.01
    08.75.87.52.59
    32.17.23.41.33
    12.51.58.78.13
    63.85.27.56.01
    62.72.88.29.45
    46.03.41.01.52
    22.03.88.14.35
    25.62.45.03.49
    03.80.59.43.19
    59.89.45.90.64
    76.29.63.41.06
    29.59.33.72.62
    49.72.62.18.81
    41.03.14.50.01
    47.24.59.82.06
    02.67.14.74.87
    40.55.13.90.65
    Le premier test cherchera la suite 27, 29, 46, 3 (en rouge). Le second demandera en plus le 27 (en bleu) et le troisième test demandera en plus le 3 (aussi en bleu)

    Premier test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $ ./filtre.py fic.txt 27 29 46 3 
    Recherche (27, 29, 46, 3) - Résultat 1
    (1, '90.27.63.55.62')
    (2, '29.48.41.01.14')
    (3, '83.46.19.71.11')
    (4, '03.42.54.41.58')
    Recherche (27, 29, 46, 3) - Résultat 2
    (13, '63.85.27.56.01')
    (14, '62.72.88.29.45')
    (15, '46.03.41.01.52')
    (16, '22.03.88.14.35')
    Le premier chiffre indique le numéro de ligne dans le fichier et le reste c'est la ligne en question

    Avec maintenant le 27 en 5° position...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $ ./filtre.py fic.txt 27 29 46 3 27
    Recherche (27, 29, 46, 3, 27) - Résultat 1
    (1, '90.27.63.55.62')
    (2, '29.48.41.01.14')
    (3, '83.46.19.71.11')
    (4, '03.42.54.41.58')
    (5, '27.84.80.06.29')
    Et maintenant les deux "3" à la suite...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $ ./filtre.py fic.txt 27 29 46 3 3
    Recherche (27, 29, 46, 3, 3) - Résultat 1
    (13, '63.85.27.56.01')
    (14, '62.72.88.29.45')
    (15, '46.03.41.01.52')
    (16, '22.03.88.14.35')
    (17, '25.62.45.03.49')
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  6. #6
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 461
    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 461
    Points : 9 248
    Points
    9 248
    Billets dans le blog
    6
    Par défaut
    => Sve@r

    Citation Envoyé par Sve@r Voir le message
    Euh voilà un souci. Mathématiquement il n'y a rien qui le garantit. Et pire, les mathématiques (mathématiques pures) disent très clairement que justement ce n'est réellement pas garantit (ni dans un sens ni dans l'autre).
    Le mot "garantit" n'est pas approprié puisqu'on est dans le domaine des lois du hasard. Il y a cependant une justification mathématique tout à fait sérieuse. En effet, pour une quantité donné de tirage (=un "échantillon"), la quantité obtenue de tirage d'un nombre donné, et donc sa fréquence, est une "variable aléatoire". Cette variable devrait répondre à sa loi de probabilité théorique qui est une "loi uniforme" puisque celle-ci correspond justement à des évènements équiprobables (c'est sa définition). Pour un résultat donné (nombre de tirage d'un "10" dans 500 tirages par exemple), on peut tester (test du Khi2) si cette valeur est acceptable avec sa loi de probabilité (avec un risque faible de se tromper, en général 5%). Et quand on fait le calcul, on voit que l'écart maxi acceptable entre la valeur réelle et la valeur théorique diminue quand la taille de l'échantillon augmente.

    Citation Envoyé par Sve@r Voir le message
    Là on tombe dans les limites d'un ordinateur. En effet, la simulation de l'aléa par un ordinateur n'est qu'une "simulation". Rien ne garantit que les résultats sortis par cette simulation correspondent au vrai aléa naturel.
    Les choses ne sont pas binaires à ce point. Les simulations par ordinateur sont très courantes, et permettent de créer des millions d'évènements en peu de temps, et d'obtenir des résultats qu'on a peu de chance d'obtenir par un autre moyen. J'ai utilisé ça dans l'industrie, et j'ai obtenu de très bons résultats, y compris avec de bonnes retombées économiques. L'un des points critiques dans ces simulations, c'est le choix du générateur aléatoire. En fait, il est le plus souvent "pseudo-aléatoire" quand il est calculé, à cause d'une période de renouvellement de la série. Mais il existe de bons générateurs, et quand c'est nécessaire, j'utilise l'algorithme de "Blum Blum Shub" dont la qualité lui permet d'être utilisé en cryptographie. Je l'ai déjà programmé en Python il y a une dizaine d'années (https://python.jpvweb.com/python/mes...id=genalea_bbs). Et si tu cherches "générateur aléatoire BBS" dans Google, tu verras que ma page arrive dans les premiers résultats...
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  7. #7
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2021
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2021
    Messages : 32
    Points : 4
    Points
    4
    Par défaut
    Bonsoir merci pour votre réponse, je vous est joint un document Word ou j'ai fais des exemple avec des couleurs pour mieux me faire comprendre merci énormément.
    Fichiers attachés Fichiers attachés

  8. #8
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2021
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2021
    Messages : 32
    Points : 4
    Points
    4
    Par défaut Je ne connais rien programmation python
    Citation Envoyé par Sve@r Voir le message
    Hey


    Jusque là je suis d'accord. Je pas aussi du principe que les boules sont neuves à chaque tirage (sinon on pourrait invoquer des phénomènes physiques liés à l'usure lors du mélange)...


    Euh voilà un souci. Mathématiquement il n'y a rien qui le garantit. Et pire, les mathématiques (mathématiques pures) disent très clairement que justement ce n'est réellement pas garantit (ni dans un sens ni dans l'autre). Ensuite si on rajoute des effets pas encore (ou peu) connus comme des effets quantiques ou, pourquoi pas, métaphysiques, qui présument que la chance "devrait" (sans justifier cette obligation car la science nous manque encore) s'équilibrer au final alors oui peut-être...(encore qu'il faudrait pouvoir aussi donner une limite spatio-temporelle à ce "final")...


    Là on tombe dans les limites d'un ordinateur. En effet, la simulation de l'aléa par un ordinateur n'est qu'une "simulation". Rien ne garantit que les résultats sortis par cette simulation correspondent au vrai aléa naturel. Je me souviens d'une fois à un concours de hack informatique (vers 2015 je crois) le gagnant recevait un vrai simulateur aléatoire basé sur sais plus quelle techno (désintégration d'un atome de truc ou bien décohérence quantique de chose) et les commentaires de ce gros lot disaient que c'était un très beau cadeau. Bref peut-on dire "c'est ainsi que ça se passe dans la nature parce que c'est ainsi que ça se passe dans un programme" ?


    Ouaip

    Sinon (@Dominichx16) je me suis amusé à faire un truc. Je suis parti du principe que la recherche se faisait dans l'ordre (si on veut les nombres "12" et "18" alors le programme commence par chercher "12" et s'il trouve alors il cherche ensuite "18" sur la ligne suivante. Et tout nombre trouvé est alors eliminé (le "12" n'est alors plus cherché). Donc si on veut un "12" sur deux lignes il faut explicitement demander "12 12".

    Le code
    Code python : 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
    #!/usr/bin/env python3
    # coding: utf-8
     
    def filtre(tabDatas, tabN):
    	# Création du résultat
    	result=list()
     
    	# Recopie des nombres à trouver (ne pas perdre l'original)
    	find=list(tabN)
     
    	# Traitement des datas (en les numérotant)
    	for (n, data) in enumerate(tabDatas, 1):
    		# Transformation de la data en tuple de nombres entiers
    		values=tuple(map(int, data.split(".")))
     
    		# Si le nombre à trouver courant ne se trouve pas dans les valeurs
    		if find[0] not in values:
    			# On réinitialise tout
    			result.clear()
    			find=list(tabN)
     
    			# On recommence toute la recherche à partir de la data suivante
    			continue
    		# if
     
    		# Ici le nombre courant a été trouvé, on le supprime des nombres à trouver
    		del find[0]
     
    		# On a trouvé une data, on la rajoute au résultat (avec son rang)
    		result.append((n, data))
     
    		# Si la recherche est finie (plus de numéros à trouver)
    		if not find:
    			# On sort l'info
    			yield result
     
    			# On réinitialise tout pour la data suivante
    			result.clear()
    			find=list(tabN)
    		# if
    	# for
    # filtre()
     
    # Programme
    if __name__ == "__main__":
    	import sys
    	# Récupération du fichier (on supprime les "\n")
    	with open(sys.argv[1], "r") as fp: tabLig=tuple(l.strip() for l in fp)
     
    	# Récupération des nombres à trouver
    	find=tuple(map(int, sys.argv[2:]))
     
    	# Recherche
    	for (n, res) in enumerate(filtre(tabLig, find), 1):
    		print("Recherche %s - Résultat %d" % (find, n))
    		for r in res: print(r)
    	# for
    # if

    Le fichier test
    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
    90.27.63.55.62
    29.48.41.01.14
    83.46.19.71.11
    03.42.54.41.58
    27.84.80.06.29
    29.35.67.74.47
    29.42.55.30.74
    54.68.02.62.18
    50.77.41.14.01
    08.75.87.52.59
    32.17.23.41.33
    12.51.58.78.13
    63.85.27.56.01
    62.72.88.29.45
    46.03.41.01.52
    22.03.88.14.35
    25.62.45.03.49
    03.80.59.43.19
    59.89.45.90.64
    76.29.63.41.06
    29.59.33.72.62
    49.72.62.18.81
    41.03.14.50.01
    47.24.59.82.06
    02.67.14.74.87
    40.55.13.90.65
    Le premier test cherchera la suite 27, 29, 46, 3 (en rouge). Le second demandera en plus le 27 (en bleu) et le troisième test demandera en plus le 3 (aussi en bleu)

    Premier test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $ ./filtre.py fic.txt 27 29 46 3 
    Recherche (27, 29, 46, 3) - Résultat 1
    (1, '90.27.63.55.62')
    (2, '29.48.41.01.14')
    (3, '83.46.19.71.11')
    (4, '03.42.54.41.58')
    Recherche (27, 29, 46, 3) - Résultat 2
    (13, '63.85.27.56.01')
    (14, '62.72.88.29.45')
    (15, '46.03.41.01.52')
    (16, '22.03.88.14.35')
    Le premier chiffre indique le numéro de ligne dans le fichier et le reste c'est la ligne en question

    Avec maintenant le 27 en 5° position...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $ ./filtre.py fic.txt 27 29 46 3 27
    Recherche (27, 29, 46, 3, 27) - Résultat 1
    (1, '90.27.63.55.62')
    (2, '29.48.41.01.14')
    (3, '83.46.19.71.11')
    (4, '03.42.54.41.58')
    (5, '27.84.80.06.29')
    Et maintenant les deux "3" à la suite...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $ ./filtre.py fic.txt 27 29 46 3 3
    Recherche (27, 29, 46, 3, 3) - Résultat 1
    (13, '63.85.27.56.01')
    (14, '62.72.88.29.45')
    (15, '46.03.41.01.52')
    (16, '22.03.88.14.35')
    (17, '25.62.45.03.49')

    J'ai joint un fiché Word ou je donne plus de détailBonjour a Tous j'ai besoin d'aide..docx, je pourrais installé TeamViewer pour vous donnez le contrôle de mon ordinateur.
    MERCI sincèrement .

  9. #9
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2021
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2021
    Messages : 32
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par Dominichx16 Voir le message
    dans les deux tirages qui sont: 1) et 2 )... Comme résultat du filtre souhaité je voudrais avoir le tirage 1) , 2 ), 3), et 4) à la ligne, puis 1) , 2 ), 3), et 4) etc... en format TXT.
    Ah !!! Maintenant tu veux que ça sorte QUATRE tirages !!!???!!! Faudrait rester un peu cohérent...

    A défaut que j'ai le filtre des 4 tirages, je me contenterais de 2 tirage et par la suite vais faire le trie manuellement des sélection qui m'intéresse.

    Merci Merci.

  10. #10
    Invité
    Invité(e)
    Par défaut
    Salut !

    Bon je viens de m'amuser, je mise sur la combinaison suivante à l'Euromillion :
    Nombres :
    18 22 33 41 46
    Etoiles :
    11 12 (Résultat biaisé, les boules 11 et 12 ont été rajouté tardivement j'ai l'impression)

    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
    Nombre de sortie de la boule  1 :
    • Nombres :[64, 22, 17, 25, 23] (151)
    • Etoiles :[170, 87] (257)
    Nombre de sortie de la boule  2 :
    • Nombres :[59, 22, 13, 21, 17] (132)
    • Etoiles :[198, 101] (299)
    Nombre de sortie de la boule  3 :
    • Nombres :[56, 24, 18, 27, 21] (146)
    • Etoiles :[187, 105] (292)
    Nombre de sortie de la boule  4 :
    • Nombres :[56, 32, 18, 23, 27] (156)
    • Etoiles :[147, 99] (246)
    Nombre de sortie de la boule  5 :
    • Nombres :[63, 35, 25, 17, 23] (163)
    • Etoiles :[129, 135] (264)
    Nombre de sortie de la boule  6 :
    • Nombres :[50, 26, 26, 23, 17] (142)
    • Etoiles :[142, 122] (264)
    Nombre de sortie de la boule  7 :
    • Nombres :[37, 38, 23, 30, 21] (149)
    • Etoiles :[121, 144] (265)
    Nombre de sortie de la boule  8 :
    • Nombres :[35, 31, 21, 22, 26] (135)
    • Etoiles :[131, 162] (293)
    Nombre de sortie de la boule  9 :
    • Nombres :[35, 42, 21, 23, 20] (141)
    • Etoiles :[120, 153] (273)
    Nombre de sortie de la boule  10 :
    • Nombres :[36, 47, 32, 17, 24] (156)
    • Etoiles :[60, 133] (193)
    Nombre de sortie de la boule  11 :
    • Nombres :[42, 36, 25, 19, 26] (148)
    • Etoiles :[52, 136] (188)
    Nombre de sortie de la boule  12 :
    • Nombres :[33, 44, 25, 19, 27] (148)
    • Etoiles :[3, 83] (86)
    Nombre de sortie de la boule  13 :
    • Nombres :[34, 33, 36, 23, 16] (142)
    • Etoiles :[0, 0] (0)
    Nombre de sortie de la boule  14 :
    • Nombres :[40, 47, 21, 22, 23] (153)
    • Etoiles :[0, 0] (0)
    Nombre de sortie de la boule  15 :
    • Nombres :[39, 38, 37, 25, 16] (155)
    • Etoiles :[0, 0] (0)
    Nombre de sortie de la boule  16 :
    • Nombres :[30, 40, 29, 24, 20] (143)
    • Etoiles :[0, 0] (0)
    Nombre de sortie de la boule  17 :
    • Nombres :[27, 42, 39, 27, 20] (155)
    • Etoiles :[0, 0] (0)
    Nombre de sortie de la boule  18 :
    • Nombres :[26, 32, 29, 18, 20] (125)
    • Etoiles :[0, 0] (0)
    Nombre de sortie de la boule  19 :
    • Nombres :[31, 43, 40, 33, 18] (165)
    • Etoiles :[0, 0] (0)
    Nombre de sortie de la boule  20 :
    • Nombres :[23, 42, 41, 21, 24] (151)
    • Etoiles :[0, 0] (0)
    Nombre de sortie de la boule  21 :
    • Nombres :[23, 39, 37, 35, 23] (157)
    • Etoiles :[0, 0] (0)
    Nombre de sortie de la boule  22 :
    • Nombres :[22, 26, 35, 22, 14] (119)
    • Etoiles :[0, 0] (0)
    Nombre de sortie de la boule  23 :
    • Nombres :[20, 41, 42, 29, 36] (168)
    • Etoiles :[0, 0] (0)
    Nombre de sortie de la boule  24 :
    • Nombres :[18, 33, 32, 35, 26] (144)
    • Etoiles :[0, 0] (0)
    Nombre de sortie de la boule  25 :
    • Nombres :[22, 38, 35, 38, 19] (152)
    • Etoiles :[0, 0] (0)
    Nombre de sortie de la boule  26 :
    • Nombres :[29, 27, 46, 31, 22] (155)
    • Etoiles :[0, 0] (0)
    Nombre de sortie de la boule  27 :
    • Nombres :[21, 35, 43, 29, 28] (156)
    • Etoiles :[0, 0] (0)
    Nombre de sortie de la boule  28 :
    • Nombres :[31, 24, 26, 39, 21] (141)
    • Etoiles :[0, 0] (0)
    Nombre de sortie de la boule  29 :
    • Nombres :[21, 24, 42, 40, 29] (156)
    • Etoiles :[0, 0] (0)
    Nombre de sortie de la boule  30 :
    • Nombres :[17, 31, 34, 43, 30] (155)
    • Etoiles :[0, 0] (0)
    Nombre de sortie de la boule  31 :
    • Nombres :[18, 26, 33, 30, 31] (138)
    • Etoiles :[0, 0] (0)
    Nombre de sortie de la boule  32 :
    • Nombres :[21, 23, 36, 26, 31] (137)
    • Etoiles :[0, 0] (0)
    Nombre de sortie de la boule  33 :
    • Nombres :[11, 21, 35, 35, 18] (120)
    • Etoiles :[0, 0] (0)
    Nombre de sortie de la boule  34 :
    • Nombres :[21, 22, 31, 34, 27] (135)
    • Etoiles :[0, 0] (0)
    Nombre de sortie de la boule  35 :
    • Nombres :[24, 24, 37, 27, 29] (141)
    • Etoiles :[0, 0] (0)
    Nombre de sortie de la boule  36 :
    • Nombres :[22, 15, 36, 35, 26] (134)
    • Etoiles :[0, 0] (0)
    Nombre de sortie de la boule  37 :
    • Nombres :[31, 28, 30, 41, 30] (160)
    • Etoiles :[0, 0] (0)
    Nombre de sortie de la boule  38 :
    • Nombres :[20, 25, 33, 45, 36] (159)
    • Etoiles :[0, 0] (0)
    Nombre de sortie de la boule  39 :
    • Nombres :[27, 17, 29, 43, 31] (147)
    • Etoiles :[0, 0] (0)
    Nombre de sortie de la boule  40 :
    • Nombres :[16, 19, 30, 40, 29] (134)
    • Etoiles :[0, 0] (0)
    Nombre de sortie de la boule  41 :
    • Nombres :[23, 21, 14, 35, 34] (127)
    • Etoiles :[0, 0] (0)
    Nombre de sortie de la boule  42 :
    • Nombres :[25, 28, 31, 41, 34] (159)
    • Etoiles :[0, 0] (0)
    Nombre de sortie de la boule  43 :
    • Nombres :[17, 19, 18, 34, 52] (140)
    • Etoiles :[0, 0] (0)
    Nombre de sortie de la boule  44 :
    • Nombres :[26, 25, 29, 36, 50] (166)
    • Etoiles :[0, 0] (0)
    Nombre de sortie de la boule  45 :
    • Nombres :[18, 21, 22, 38, 49] (148)
    • Etoiles :[0, 0] (0)
    Nombre de sortie de la boule  46 :
    • Nombres :[21, 11, 10, 22, 59] (123)
    • Etoiles :[0, 0] (0)
    Nombre de sortie de la boule  47 :
    • Nombres :[20, 16, 29, 23, 39] (127)
    • Etoiles :[0, 0] (0)
    Nombre de sortie de la boule  48 :
    • Nombres :[11, 13, 21, 33, 54] (132)
    • Etoiles :[0, 0] (0)
    Nombre de sortie de la boule  49 :
    • Nombres :[16, 20, 25, 24, 64] (149)
    • Etoiles :[0, 0] (0)
    Nombre de sortie de la boule  50 :
    • Nombres :[32, 32, 23, 18, 60] (165)
    • Etoiles :[0, 0] (0)
    NOMBRES :
     [[22, 119], [33, 120], [46, 123], [18, 125], [41, 127], [47, 127], [2, 132], [48, 132], [36, 134], [40, 134], [8, 135], [34, 135], [32, 137], [31, 138], [43, 140], [9, 141], [28, 141], [35, 141], [6, 142], [13, 142], [16, 143], [24, 144], [3, 146], [39, 147], [11, 148], [12, 148], [45, 148], [7, 149], [49, 149], [1, 151], [20, 151], [25, 152], [14, 153], [15, 155], [17, 155], [26, 155], [30, 155], [4, 156], [10, 156], [27, 156], [29, 156], [21, 157], [38, 159], [42, 159], [37, 160], [5, 163], [19, 165], [50, 165], [44, 166], [23, 168]]
    ETOILES :
     [[12, 86], [11, 188], [10, 193], [4, 246], [1, 257], [5, 264], [6, 264], [7, 265], [9, 273], [3, 292], [8, 293], [2, 299]]

    Script :
    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
    import requests as rq
    import numpy as np
     
    days = ['Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi','Dimanche']
    def find_date(TEXT):
        results = {}
        for day in days:
            text = TEXT
            while day in text:
                text = text[text.find(day):]
                jour = text[:text.index('<')]
                resultat = [int(x[:x.index('<')]) for x in text.split("game_point'>")[1:6]]+[int(x[:x.index('<')]) for x in text.split("star_small'>")[1:3]]
                results.setdefault(jour,resultat)
                text = text[50:]
     
        return results
     
     
    loto = {}
    for year in range(2004,2022):
        page = rq.get('https://www.tirage-euromillions.net/euromillions/annees/annee-{}/'.format(year))
        page = page.text#.encode('utf8',errors="ignore").decode('utf8',errors="ignore")
        for mois in page.split('&nbsp;&nbsp;&nbsp;')[1:]:
            month = mois[:mois.index(' ')]
            loto.setdefault(year,{}).setdefault(month,find_date(mois))
     
    array = []
    for annee in loto.keys():
        for mois in loto[annee].keys():
            for jour in loto[annee][mois].keys():
                array.append(loto[annee][mois][jour])
     
    frequency = {}
    for i in range(1,51):
        liste = list(np.count_nonzero(np.array(array) == i,axis=0))
        frequency[i]=[''.join(str(i) for i in ['○ Nombres :',liste[:5],' (',sum(liste[:5]),')','\n○ Etoiles :',liste[5:],' (',sum(liste[5:]),')']), sum(liste[:5]), sum(liste[5:])]
     
     
    for i in frequency.keys():
        print('Nombre de sortie de la boule ',i,':\n'+frequency[i][0])
     
    print('NOMBRES :\n', [[x[0],x[1][1]] for x in sorted(frequency.items(),key=lambda i: i[1][1])])
    print('ETOILES :\n', [[x[0],x[1][2]] for x in sorted(frequency.items(),key=lambda i: i[1][2])[-12:]])
    Maintenant il ne manque plus qu'un graphique pour voir l'évolution des sorties des boules dans le temps... Matplotlib ?

    Étonnamment les boules 1, 2, 3, 4 sortent très majoritairement en première position alors que les boules 48, 49, 50 sortent très majoritairement en dernière position ! Un biais physique à l'œuvre ?
    Nom : euromillion.png
Affichages : 723
Taille : 1,30 Mo
    Dernière modification par Invité ; 19/09/2021 à 21h43.

  11. #11
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 684
    Points : 30 973
    Points
    30 973
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Dominichx16 Voir le message
    je pourrais installé TeamViewer pour vous donnez le contrôle de mon ordinateur.
    Hum... tu tiens vraiment à offrir ta bécane à tous les mineurs de bitcoins du monde entier???

    Bon, partant de ton document word, j'ai fait autre chose. Mais avant tout, voici ce que j'en ai compris...

    Citation Envoyé par Dominichx16 Voir le message
    Tirage 1) 62.78.17.80.77 ICI 62 NUMERO
    Tirage 2) 14.41.01.16.68 ICI 14 CCESSEUR ET DEUX AUTRES NUMERO.
    Donc les nombres "16" et" 88" semblent inutile. Pareil pour les nombres "78", "17", "80" et "77" qui ne réapparaissent plus du tout dans tes exemples.

    De là, je pars du principe que le fichier de recherche (parce que maintenant on ne peut plus mettre ça en ligne de commande) ne doit contenir que les numéros cherchés.
    Donc mon fichier "recherche.txt" contient juste ce que je cherche
    C'est à dire un "62" sur une ligne et un "14", un "41" et un "1" sur la ligne suivante. Mais le code fonctionnera aussi si la ligne 1 contient plusieurs nombres. Simplement si plusieurs nombres alors il faudra que tous les nombres de chaque ligne du fichier de recherche soient présents sur une ligne résultat.
    Accessoirement je considère que puisque la recherche se fait dans chaque tirage (tous les nombres différents) la ligne ne peut pas contenir deux fois le même nombre (c'est important car j'utilise des ensembles pour chercher et un ensemble ne peut pas contenir de doublons).

    Citation Envoyé par Dominichx16 Voir le message
    J’ai oublié de dire je voudrais aussi que le programme sélectionné quand c’est l’inverse des lignes exemple du bas vers le haut.
    Bien sûr. Et tu veux pas aussi quand c'est en chinois ancien écrit en vertical? Déjà ici c'est pas "uber code". Je fais ça parce que ça m'amuse (et que ça donne un petit entrainement) mais on n'est pas là pour pondre des codes à la demande. En plus si tu as tous tes tirages dans l'ordre chronologique je ne vois pas pourquoi tu les aurais aussi dans l'ordre inverse. Et ensuite si c'est le cas ben tu te démerdes pour le remettre dans le bon sens car un fichier se lit du haut vers le bas. A la limite t'as qu'à poster un nouveau topic pour demander comment écrire un code Python qui inverse le contenu d'un fichier.

    Le code
    Code python : 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
    #!/usr/bin/env python3
    # coding: utf-8
     
    # Extraction bdd
    def extract(tirage, bdd, lignes=0):
    	# Le tirage est converti en tuple d'ensembles, chaque ensemble contenant les nombres à trouver
    	tirage=tuple(set(map(int, t.split("."))) for t in tirage)
     
    	# Création du résultat
    	result=list()
     
    	# Recopie du tirage (ne pas perdre l'original)
    	find=list(tirage)
     
    	# Traitement des datas bdd (en les numérotant)
    	for (n, data) in enumerate(bdd, 1):
    		# Transformation de la string en ensemble de nombres entiers
    		values=set(map(int, data.split(".")))
     
    		# Si l'ensemble courant ne se trouve pas dans l'ensemble valeurs
    		if (find[0] - values) != set():
    			# On réinitialise tout
    			result.clear()
    			find=list(tirage)
     
    			# On recommence toute la recherche à partir de la data suivante
    			continue
    		# if
     
    		# Ici l'ensemble courant a été trouvé, on le supprime des ensembles à trouver
    		del find[0]
     
    		# On a trouvé une data, on la rajoute au résultat (le numéro et la string)
    		result.append((n, data))
     
    		# Si la recherche est finie (plus de numéros à trouver)
    		if not find:
    			# On rajoute les lignes suivantes (s'il y en a)
    			try:
    				for i in range(lignes - len(tirage)): result.append((n+i+1, bdd[n+i]))
    			except IndexError:
    				pass
    			# try
     
    			# On sort l'info
    			yield result
     
    			# On réinitialise tout pour la data suivante
    			result.clear()
    			find=list(tirage)
    		# if
    	# for
    # filtre()
     
    # Programme
    if __name__ == "__main__":
    	import sys
    	# Récupération du tirage (on supprime les "\n")
    	with open(sys.argv[1], "r") as fp: tirage=tuple(l.strip() for l in fp)
     
    	# Récupération de la bdd (on supprime les "\n")
    	with open(sys.argv[2], "r") as fp: bdd=tuple(l.strip() for l in fp)
     
    	for (n, res) in enumerate(extract(tirage, bdd, lignes=4), 1):
    		print("Recherche %s - Résultat %d" % (tirage, n))
    		for r in res: print(r)
    	# for
    # if

    La bdd (fic.txt)
    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
    90.27.63.55.62
    29.48.41.01.14
    83.46.19.71.11
    03.42.54.41.58
    24.84.80.06.29
    68.35.67.74.47
    50.42.55.30.74
    54.68.02.62.47
    50.77.41.14.01
    08.75.87.52.59
    32.17.23.41.33
    12.51.58.78.13
    63.85.74.56.01
    62.72.88.89.13
    14.03.41.01.09
    22.25.88.14.35
    25.62.45.03.49
    03.80.59.43.19
    Et le résultat
    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
    $ ./filtre.py recherche.txt fic.txt 
    Recherche ('62', '14.41.01') - Résultat 1
    (1, '90.27.63.55.62')
    (2, '29.48.41.01.14')
    (3, '83.46.19.71.11')
    (4, '03.42.54.41.58')
    Recherche ('62', '14.41.01') - Résultat 2
    (8, '54.68.02.62.47')
    (9, '50.77.41.14.01')
    (10, '08.75.87.52.59')
    (11, '32.17.23.41.33')
    Recherche ('62', '14.41.01') - Résultat 3
    (14, '62.72.88.89.13')
    (15, '14.03.41.01.09')
    (16, '22.25.88.14.35')
    (17, '25.62.45.03.49')
    Tu remarqueras le paramètre" lignes" dans lequel on peut spécifier le nombre de lignes voulues (qui bien évidemment doit être au minimum égal au nombre de lignes du fichier "recherche.txt")...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  12. #12
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2021
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2021
    Messages : 32
    Points : 4
    Points
    4
    Par défaut Merci merci
    J'ai lu ton Message , je tiens a te remercié pour ton temps ci précieux, Merci d'avoir accepter de m'aider, j'ai vue les code que tu as donner mais je ne sais pas comment entrer cela sur python, alors je vais te demande s'il te plait même si j'ai le sentiment d'exagéré je n'ai pas vraiment le choix cas sans ton aide je ne pourrais pas entrer les code sur Python. Je vais installer Team V sur mon ordinateur et quand tu as un temps libre je te donne accès a mon ordinateur . Merci a tous

  13. #13
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2021
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2021
    Messages : 32
    Points : 4
    Points
    4
    Par défaut J'ai essayé d'entrer les code moi même je n'ai pas réussi
    Je viens d'essayé , je n'ai pas réussi a entrer les codes. Je pourrais patienté quelque jours s'il le faut quand vous auriez le temps, je donne l'acces de mon ordinateur , je sais que je vous est tous fatigué avec ma demande, il reste la dernière étapes , je reste en attente je vous remercie tous.

  14. #14
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2021
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2021
    Messages : 32
    Points : 4
    Points
    4
    Par défaut voici un aperçu ma base de donné
    Bonsoir, j'ai essayer de l'envoyé en format TXT mais je n'ai pas réussi alors je l'envoie en format Word , pour donner un aperçu. Je pense que je vais me mettre a apprendre la programmation python , parce que je ne connais absolument rien a cela. Je reste en attente , j'essaie de lire aussi des tuto pour essayé de le faire moi même parce que j'ai vraiment le sentiment d'abusé et c'est presqué genant .
    Je vous remercie tous , Merci a toi Stev
    Fichiers attachés Fichiers attachés

  15. #15
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 684
    Points : 30 973
    Points
    30 973
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Dominichx16 Voir le message
    j'ai vue les code que tu as donner mais je ne sais pas comment entrer cela sur python, alors je vais te demande s'il te plait même si j'ai le sentiment d'exagéré je n'ai pas vraiment le choix cas sans ton aide je ne pourrais pas entrer les code sur Python.
    Tu sais qu'en venant ici tu es censé déjà savoir exécuter un script Python ? J'espère qu'au moins tu sais accéder à la console "cmd" de W10 !!!
    Donc
    1. Tu te mets dans un dossier de ton choix (exemple "c:\temp") et tu y écris les différents fichiers (nommés dans mon exemple "recherche.txt", "fic.txt" et "filtre.py"). Le fichier "filtre.py" c'est le programme Python à exécuter
    2. tu ouvres une fenêtre cmd (et si tu sais pas ce que c'est je ne peux rien poir toi)
    3. tu te déplaces dans ledit dossier (cd c:\temp)
    4. tu appelles le script soit de façon directe (filtre.py) ce qui marche si Python est dans ton PATH, soit en demandant à Python de l'exécuter (c:\pythonXY\python.exe filtre.py, XY étant ta version de Python (38 pour 3.8, 37 pour 3.7, etc). Et dans les deux cas, comme ce script a besoin de traiter les fichiers tu les nommes en paramètre, le premier étant la recherche et le second étant la bdd => filtre.py recherche.txt fic.txt ou c:\pythonXY\python.exe filtre.py recherche.txt fic.txt
    5. et comme le script envoie tout à l'écran, tu peux le rediriger dans un fichier en rajoutant une redirection filtre.py recherche.txt fic.txt >result.txt ou c:\pythonXY\python.exe filtre.py recherche.txt fic.txt >result.txt

    En fin de manip tu te retrouves avec le résultat dans le fichier "result.txt".

    Citation Envoyé par Dominichx16 Voir le message
    jJe vais installer Team V sur mon ordinateur et quand tu as un temps libre je te donne accès a mon ordinateur
    Bigre !!! On peut dire que t'es open toi !!! Mais désolé déjà je vais pas télécharger ce truc payant sur mon PC pour te faire plaisir (il y en a tant de gratuits qui font la même chose) et bon, c'est aussi à toi d'apprendre à faire des choses.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  16. #16
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 461
    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 461
    Points : 9 248
    Points
    9 248
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Citation Envoyé par Sve@r Voir le message
    Bigre !!! On peut dire que t'es open toi !!! Mais désolé déjà je vais pas télécharger ce truc payant sur mon PC pour te faire plaisir (il y en a tant de gratuits qui font la même chose)...
    Teamviewer est gratuit pour une utilisation personnelle. Je l'utilise couramment, mais je le limite strictement à mon réseau local. Il fonctionne très bien.
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  17. #17
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2021
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2021
    Messages : 32
    Points : 4
    Points
    4
    Par défaut Je suis bloqué
    Merci c'est vraiment gentil de ta part , je sais que je t'ai pris beaucoup temps , je suis tes consigne mais je suis bloqué au niveau de c:\python3.8\python.exe filtre.py .
    La version de mon python est 3.8 .
    J'ai réussi a entré dans Filtre.py .
    pour être sincère c'est une recherche sur Google qui ma permis de trouvé ce forum et de m'inscrit sur ce forum, je suis quelqu'un de curieux alors je vais me mettre a apprendre la programmation, si j'avais la base je pense que j'allais m'en sortir avec les consigne que tu as donner, mais je n'ai aucune connaissance en python ni en informatique, je tiens a m'excuser pour le dérangement.
    Je vais vous joindre capture d'écran de la ou je suis arrivé.
    Images attachées Images attachées  

  18. #18
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 684
    Points : 30 973
    Points
    30 973
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par tyrtamos Voir le message
    Teamviewer est gratuit pour une utilisation personnelle.
    Ah oui, pardon. J'ai vu "propriétaire" dans la description wiki et j'ai inconsciemment traduit par "payant". Ok j'ai mieux regardé.

    Citation Envoyé par tyrtamos Voir le message
    Je l'utilise couramment, Il fonctionne très bien.
    Moi j'utilise "showMyPC" (je l'ai mis chez ma mère) et lui aussi il fonctionne très bien. Bon l'un ou l'autre... l'important c'est d'avoir le choix

    Citation Envoyé par tyrtamos Voir le message
    mais je le limite strictement à mon réseau local.
    Ah? Toi t'es visiblement moins open...

    Citation Envoyé par Dominichx16 Voir le message
    je suis tes consigne mais je suis bloqué au niveau de c:\python3.8\python.exe filtre.py ...La version de mon python est 3.8 .
    J'ai écrit "c:\PythonXY" avec "XY" représentant la version (38 pour 3.8). Python3.8 installé par défaut dans c:\Python38. Donc c:\python38\python.exe filtre.py. Mais cela ne t'interdit pas d'aller vérifier (tu dois quand-même savoir te promener dans ta machine) si effectivement le dossier est bien "c:\Python38"...

    Citation Envoyé par Dominichx16 Voir le message
    J'ai réussi a entré dans Filtre.py
    Euh oui... "Filtre.py" (enfin chez-moi) c'est le nom du script, pas le nom du dossier !!!
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  19. #19
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2021
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2021
    Messages : 32
    Points : 4
    Points
    4
    Par défaut Je galère grave malgré tout l'explication
    J'ai essayé tous, mais je n'ai pas réussi j'ai lu des tuto qui mon fait télécharger python 3.9 sur Windows Store , J'ai aussi installer Pycharm pour facilité mais tout ceci est nouveau pour moi, je pense que je n'ai pas sur copié les code ou j'ai forcement pas compris quelque choses , je ne sais pas comment expliqué mais je galère grave.
    Stev s'il te plait donne moi une dame et une heure quand tu es libre on va le faire ensemble avec Team V , mais promis je vais me mettre a apprendre la programmation.
    Je vais faire des capture d'écran pour que tu saches dans quelle galère je me retrouve, j'ai le sentiment d'être un gros débile rire
    Merci encore
    Images attachées Images attachées  

  20. #20
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2021
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2021
    Messages : 32
    Points : 4
    Points
    4
    Par défaut capture
    Voici la capture des contenu de mon fichier
    Images attachées Images attachées  

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 4 1234 DernièreDernière

Discussions similaires

  1. Quels logiciels de modélisation pour une base de données ?
    Par octopus dans le forum Décisions SGBD
    Réponses: 7
    Dernier message: 11/06/2023, 16h20
  2. intégrer un fichier image dans une base de donnée?
    Par Lody dans le forum Requêtes
    Réponses: 9
    Dernier message: 16/03/2006, 19h08
  3. [Strategie][Java][XML] Import dans une base de données
    Par nad dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 23/09/2002, 11h12
  4. [Concept] Stabilité d'une base de donnée
    Par lassmust dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 03/07/2002, 16h16
  5. associer une base de données(access) a un dbgrid
    Par ange1708 dans le forum MFC
    Réponses: 3
    Dernier message: 11/06/2002, 12h18

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