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èmes à résoudre [Python 3.X]


Sujet :

Python

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2019
    Messages : 6
    Points : 2
    Points
    2
    Par défaut Problèmes à résoudre
    Bonjour,
    Je suis novice en programmation python, je l'ai peu utilisé bien que je pense avoir les bases. Dans le cadre de mes études, je me retrouve à utiliser ce logiciel que je n'ai jamais utilisé, même pas au lycée.
    Et je dois trouver les réponses à ces 3 problèmes grâce à 3 programmes:

    Problème 1:On appellera "miroir d'un nombre n" le nombre n écrit de droite à gauche. Par exemple, miroir(7423) = 3247.
    Quel est le grand grand nombre inférieur à 10 millions ayant la propriété : miroir(n) = 4 x n ?

    Problème 2:Trouver un nombre entier c1c2c3...c9 composé de tous les chiffres de 1 à 9, tel que c1...ck soit divisible par k, pour k=1,...,9.

    Prenons un exemple à 3 chiffres : 321.

    3 est divisible par 1
    32 est divisible par 2
    321 est divisible par 3.

    Problème 3:Étonnamment, il y a seulement trois nombres qui peuvent être écrits comme la somme des puissances quatrièmes de leurs chiffres :

    1634 = 14 + 64 + 34 + 44
    8208 = 84 + 24 + 04 + 84
    9474 = 94 + 44 + 74 + 44

    On ne compte pas 1 = 14 car ce n'est pas une somme.

    La somme de ces nombres est 1634 + 8208 + 9474 = 19316.

    Trouver la somme de tous les nombres qui peuvent être écrits comme la somme des puissances cinquièmes de leurs chiffres.


    Le soucis c'est que je ne vois pas comment écrire des programmes pour ces 3 problèmes. Si quelqu'un peut me donner des indications, des idées de programmes ou des programmes tout fait, je suis preneur en sachant que je n'ai pas beaucoup de temps pour les faire.
    Je vous remercie d'avance pour votre temps et pour votre aide.

  2. #2
    Membre éclairé
    Homme Profil pro
    BTS SN IR
    Inscrit en
    Mai 2017
    Messages
    513
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : BTS SN IR

    Informations forums :
    Inscription : Mai 2017
    Messages : 513
    Points : 700
    Points
    700
    Par défaut
    Le 1er problème est très simple, il suffit de transformer le nombre en chaîne de caractère puis de le parcourir à l'envers,
    pour les autres problème penser à convertir en chaîne puis les parcourir devrait également vous aiguiller.

    pour le reste n’espérez pas que l'on vous explique comment faire si vous ne pouvez pas montrer ce que vous avez tenter.
    ça ne vous aiderais pas

  3. #3
    Membre chevronné
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 608
    Points : 2 072
    Points
    2 072
    Par défaut
    Intéressant, tout cela !
    Pour le premier problème, une autre piste :
    on divise par 10 et on garde la partie entière et le reste. On continue avec la partie entière. Des exemples :
    Pas d'aide par mp.

  4. #4
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2019
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Merci pour vos réponses.
    En fait pour le problème 1, avant de poster cette discussion j'avais déjà pensé à transformer le nombre en chaîne et à l'inverser. Le problème c'est que je n'arrive pas à convertir le nombre en chaîne de caractère et sur tous les exercices que j'ai fait aucun ne m'aide puisqu'on a presque pas utilisé cette fonction de python.

  5. #5
    Membre éclairé
    Homme Profil pro
    BTS SN IR
    Inscrit en
    Mai 2017
    Messages
    513
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : BTS SN IR

    Informations forums :
    Inscription : Mai 2017
    Messages : 513
    Points : 700
    Points
    700
    Par défaut
    oui ? et qu'avez vous essayé exactement ?

    vous n'avez pas du chercher longtemps

  6. #6
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2019
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Merci, je ne connaissais pas cette commande. J'essayerai un peu plus tard d'écrire le programme avec.

  7. #7
    Expert confirmé
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2004
    Messages
    2 493
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Points : 4 166
    Points
    4 166
    Par défaut
    Du coup j’enchaîne avec l'effet miroir d'un nombre :
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    >>> int(str(123)[::-1])
    321
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS

    Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android

  8. #8
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2019
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    J'ai enfin le résultat du premier problème. Faire ce problème sans connaître les fonctions int et str n'était pas facile.
    Après avoir cherché plus longuement les deux autres problèmes, je referai appel à vous si je rencontre des difficultés (vu comment je galère avec python,il y a de fortes chances que je refasse appel à vous).

  9. #9
    Membre confirmé

    Homme Profil pro
    Bidouilleur
    Inscrit en
    Avril 2016
    Messages
    721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bidouilleur

    Informations forums :
    Inscription : Avril 2016
    Messages : 721
    Points : 503
    Points
    503
    Billets dans le blog
    1
    Par défaut
    Salut.

    Citation Envoyé par Antoine- Voir le message
    J'ai enfin le résultat du premier problème. Faire ce problème sans connaître les fonctions int et str n'était pas facile.
    Je serai vraiment étonné que ce que ton prof demande dans ce 1er exercice soit de faire ça en convertissant un entier en chaîne, je pense que marco056 est plus dans le vrai en ayant conseillé d'utiliser les opérateurs // et % de int, le but est de faire travailler ta matière grise (ou blanchâtre )

    Citation Envoyé par Antoine- Voir le message
    Après avoir cherché plus longuement les deux autres problèmes, je referai appel à vous si je rencontre des difficultés (vu comment je galère avec python,il y a de fortes chances que je refasse appel à vous).
    Pour le 3ème, voici une façon de comment on pourrait faire, en définissant quelques fonctions pour effectuer cette tâche.

    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
    def decomposer_nombre(n) :
        ''' Retourne la liste des chiffres composant le nombre n '''
        # Par exemple avec le nombre 2345, cette fonction doit retourner
        # [2, 3, 4, 5]
        # Pour faire cette fonction :
        #   - Il faut donc une liste de départ.
        #   - Utiliser une boucle while.
        #   - Se servir de la fonction divmod (ou opérateurs // et %).
        #   - Utiliser la méthode insert de list afin de pouvoir insérer
        #     chaque chiffre en 1ère position dans la liste.
        #   - Retourner la liste de départ.
     
     
    def somme_cinquieme(chiffres) :
        '''
        Retourne la somme des chiffres mis à l'exposant 5 de l'itérable
        chiffres.
        '''
        # par exemple avec une liste de chiffres comme [2, 3, 4, 5],
        # cette fonction doit retourner 4424
        # Pour faire cette fonction :
        #   - Utiliser une simple boucle for afin de parcourir la liste
        #     des chiffres
        #   - Obtenir x^n se fait en python avec l'opérateur **
        #   - Retourner la somme obtenue.
     
     
    def remarquable_somme_cinqieme() :
        '''
        Retourne la liste des nombres dont la somme des chiffres à
        l'exposant 5 est égal au nombre.
        '''
        # Pour faire cette fonction :
        #   - Bien évidemment une liste de départ.
        #   - Il faut parcourir un simple range avec pour start 10^4 et
        #     pour stop 10^6
        #   - Dans cette boucle utiliser les fonctions decomposer_nombre et
        #     somme_cinquieme afin de vérifier si le retour de
        #     somme_cinquieme vaut le nombre parcouru, le cas échéant,
        #     ajouter ce nombre à la liste de départ avec la méthode append.
        #   - Retourner la liste de départ.
     
     
    # Finalement ici, faire la somme des nombres retournés par un eppel à la
    # fonction remarquable_somme_cinqieme, puis afficher cette somme.
    A toi d'essayer de coder ces fonctions.
    Je pense que cette façon de faire est plus proche de ce que l'on te demande de réaliser.
    Le temps ronge l'amour comme l'acide.

  10. #10
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2019
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    En fait, on ne voit pas de méthodes précises en classe, on fait juste des exercices en groupe sans le prof, on l'appelle si on a besoin d'aide et on fait les méthodes que l'on veut. De plus pour ces 3 problèmes, le prof veut que les résultats et non les programmes donc peu importe mon programme.
    Je suis en train de faire le problème 2, et je ne vois pas comment débuter mon programme, est-ce que quelqu'un peut juste me mettre sur la voie ? (je sais, je suis désespérant mais je galère vraiment)

  11. #11
    Membre confirmé

    Homme Profil pro
    Bidouilleur
    Inscrit en
    Avril 2016
    Messages
    721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bidouilleur

    Informations forums :
    Inscription : Avril 2016
    Messages : 721
    Points : 503
    Points
    503
    Billets dans le blog
    1
    Par défaut
    Salut.

    Citation Envoyé par Antoine- Voir le message
    Je suis en train de faire le problème 2, et je ne vois pas comment débuter mon programme, est-ce que quelqu'un peut juste me mettre sur la voie ? (je sais, je suis désespérant mais je galère vraiment)
    En premier, obtenir toutes les combinaisons de 9 éléments des chiffres 1 à 9 d'un itérable, soit tu fais ton propre code pour générer cette liste (ce qui est plus instructif), soit tu utilises la fonction permutations du module itertools...
    Parcourir donc toutes ces combinaisons de chiffres.

    S'arranger en utilisant les slices et un range pour obtenir des portions de la liste

    Exemple avec le 1er élément des combinaisons.
    combi = (1, 2, 3, 4, 5, 6, 7, 8, 9)Les portions seront :
    combi[:1] donnera le 1er élément soit [1]
    combi[:2] donnera les deux éléments du début soit [1, 2].
    combi[:3] donnera les trois éléments du début soit [1, 2, 3].
    etc.

    À partir de ces portions de listes, il faut s'arranger à obtenir un nombre.
    [1] => 1
    [1, 2] => 12
    [1, 2, 3] => 123
    etc.

    Ayant obtenu ces nombres, il ne reste plus qu'à regarder pour chaque portion s'il est divisible par 1, 2, 3, .., 9 avec l'opérateur modulo de python.
    1 % 1
    12 % 2
    123 % 3
    etc.

    Si toutes les portions d'un nombre % i valent 0, alors c'est bon, tu obtiens ton nombre (le seul et unique).
    Le temps ronge l'amour comme l'acide.

  12. #12
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2019
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Bonjour,
    j'ai résolu tous les problèmes.
    Je vous remercie de votre temps et patience.

  13. #13
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2023
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 20
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2023
    Messages : 1
    Points : 0
    Points
    0
    Par défaut Probleme 1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    def mirroir(n):
        ch=str(n)
        ch=ch[::-1]
        mir=int(ch)
        return mir
    def max_mirroir_range107():
        L=[]
        num=0
        for i in range (10**7):
            if mirroir(i)==i*4:
                L+=[i]
                num=max(L)
        return num

  14. #14
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 689
    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 689
    Points : 30 983
    Points
    30 983
    Billets dans le blog
    1
    Par défaut
    Mouais super. Donc déjà bonjour, c'est un minimum.
    Ensuite réouvrir ce topic de 3 ans pour ça... sans même le mettre en code
    Déjà à quoi sert L? Pourquoi écrire num 50 fois alors qu'on ne veut que le dernier?? Pourquoi utiliser max() alors que le plus grand L est fatalement le dernier (L[-1])???

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    def mirroir(n):
    	return int(str(n)[::-1])
     
    def max_mirroir_range107():
    	res=0
    	for i in range(10**7):
    		if mirroir(i) == i*4: res=i
    	return res
    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]

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. problème à résoudre
    Par cherifi-auto dans le forum MATLAB
    Réponses: 5
    Dernier message: 07/04/2012, 14h29
  2. Réponses: 1
    Dernier message: 03/09/2010, 09h25
  3. [XL-2007] Problème à résoudre avec solveur
    Par Airone784 dans le forum Excel
    Réponses: 4
    Dernier message: 08/01/2010, 11h36
  4. petit problème à résoudre
    Par TibDoz dans le forum ActionScript 1 & ActionScript 2
    Réponses: 0
    Dernier message: 28/08/2009, 11h05

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