Exercice Python Prepa Problème
Résolu/Fermé
Nathan19_8690
Messages postés
17
Date d'inscription
dimanche 27 mars 2022
Statut
Membre
Dernière intervention
27 mars 2022
-
27 mars 2022 à 00:12
Utilisateur anonyme - 27 mars 2022 à 20:49
Utilisateur anonyme - 27 mars 2022 à 20:49
A voir également:
- Exercice adn python
- Citizen code python avis - Accueil - Outils
- Python retour à la ligne dans le code - Forum Python
- Python est introuvable. exúcutez sans argument pour procúder ó l ✓ - Forum Python
- Trouver la position d'un élément dans une liste python ✓ - Forum Python
6 réponses
Nathan19_8690
Messages postés
17
Date d'inscription
dimanche 27 mars 2022
Statut
Membre
Dernière intervention
27 mars 2022
27 mars 2022 à 00:13
27 mars 2022 à 00:13
Utilisateur anonyme
27 mars 2022 à 08:08
27 mars 2022 à 08:08
Bonjour
Pour t’aider, il faut qu’on teste, Pour tester, il faut qu’on puisse copier coller ton code, donc que tu l’aies posté sous forme de texte et pas d’image.
En Python, l’indentation est primordiale, or par défaut le site ne la conserve pas.
Pour la conserver il faut utiliser les balises de code. Voir ce petit tuto https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
On pourra commencer à essayer de t’aider quand tu auras reposté correctement ton code.
Pour t’aider, il faut qu’on teste, Pour tester, il faut qu’on puisse copier coller ton code, donc que tu l’aies posté sous forme de texte et pas d’image.
En Python, l’indentation est primordiale, or par défaut le site ne la conserve pas.
Pour la conserver il faut utiliser les balises de code. Voir ce petit tuto https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
On pourra commencer à essayer de t’aider quand tu auras reposté correctement ton code.
yg_be
Messages postés
23430
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
17 janvier 2025
1 559
27 mars 2022 à 11:57
27 mars 2022 à 11:57
bonjour,
de plus, l'image ne montre pas la partie du code où se trouve l'erreur.
de plus, l'image ne montre pas la partie du code où se trouve l'erreur.
Nathan19_8690
Messages postés
17
Date d'inscription
dimanche 27 mars 2022
Statut
Membre
Dernière intervention
27 mars 2022
>
yg_be
Messages postés
23430
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
17 janvier 2025
Modifié le 27 mars 2022 à 12:15
Modifié le 27 mars 2022 à 12:15
En fait concrètement, il n' a pas d'erreur de syntax ou autre, juste lorsque j'execute la fonction ex: Comptecysteines(ACCGT) on me renvoie : "la sequence est bien une chaine d'ADN et elle contient 2 cysteines"
Mais lorsque j'execute la fonction Comptecysteines(accgt) on me renvoie : "la séquence n'est pas en majuscule veuillez la ressaisir" et lorsque cette fois ci je la rentre en majuscule à la suite on me renvoie "la séquence est bien une chaine d'ADN et elle contient 0 cysteines"
Le programme ne compte plus les cysteines et je ne comprends pas pourquoi
Mais lorsque j'execute la fonction Comptecysteines(accgt) on me renvoie : "la séquence n'est pas en majuscule veuillez la ressaisir" et lorsque cette fois ci je la rentre en majuscule à la suite on me renvoie "la séquence est bien une chaine d'ADN et elle contient 0 cysteines"
Le programme ne compte plus les cysteines et je ne comprends pas pourquoi
yg_be
Messages postés
23430
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
17 janvier 2025
Ambassadeur
1 559
27 mars 2022 à 12:06
27 mars 2022 à 12:06
pour comprendre ce que tu as écrit, teste ceci:
def estmaj(s): while not s.isupper(): s=input("pas maj!, ?") s=input("?") estmaj(s) print(s)
Nathan19_8690
Messages postés
17
Date d'inscription
dimanche 27 mars 2022
Statut
Membre
Dernière intervention
27 mars 2022
Modifié le 27 mars 2022 à 12:37
Modifié le 27 mars 2022 à 12:37
Je viens de tester, en effet cela marche aussi mais est ce que mon problème vient de la ? le fait d'obliger à rentrer une séquence en majuscule ?
Ou plutôt de la manière dont j'ai écris la partie qui gère les majuscules ?
Ou plutôt de la manière dont j'ai écris la partie qui gère les majuscules ?
yg_be
Messages postés
23430
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
17 janvier 2025
1 559
>
Nathan19_8690
Messages postés
17
Date d'inscription
dimanche 27 mars 2022
Statut
Membre
Dernière intervention
27 mars 2022
27 mars 2022 à 13:11
27 mars 2022 à 13:11
"cela marche aussi"?
qu'as-tu testé, quel résultat as-tu obtenu?
qu'as-tu testé, quel résultat as-tu obtenu?
Nathan19_8690
Messages postés
17
Date d'inscription
dimanche 27 mars 2022
Statut
Membre
Dernière intervention
27 mars 2022
>
yg_be
Messages postés
23430
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
17 janvier 2025
27 mars 2022 à 13:22
27 mars 2022 à 13:22
J'ai testé votre programme, ah oui en effet je ne m'étais pas rendu compte
On me demande un input donc je rentre par exemple qqn chose en minuscule et on me dit "pas maj" et tant que je ne rentre pas de maj on me redit "pas maj"
Et dès que je rentre une majuscule, on me renvoie la première chose que j'avais rentré en minuscule
On me demande un input donc je rentre par exemple qqn chose en minuscule et on me dit "pas maj" et tant que je ne rentre pas de maj on me redit "pas maj"
Et dès que je rentre une majuscule, on me renvoie la première chose que j'avais rentré en minuscule
Nathan19_8690
Messages postés
17
Date d'inscription
dimanche 27 mars 2022
Statut
Membre
Dernière intervention
27 mars 2022
>
Nathan19_8690
Messages postés
17
Date d'inscription
dimanche 27 mars 2022
Statut
Membre
Dernière intervention
27 mars 2022
27 mars 2022 à 13:25
27 mars 2022 à 13:25
Si j'ai bien compris dans votre programme, le fait de rentrer une majuscule va nous faire sortir de la boucle while est donc afficher la première chose que j'avais rentré dans l'input
yg_be
Messages postés
23430
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
17 janvier 2025
1 559
>
Nathan19_8690
Messages postés
17
Date d'inscription
dimanche 27 mars 2022
Statut
Membre
Dernière intervention
27 mars 2022
27 mars 2022 à 13:27
27 mars 2022 à 13:27
essayons alors plus simple:
def autreinput(s): s=input("nouvel input?") s=input("?") autreinput(s) print(s)
Nathan19_8690
Messages postés
17
Date d'inscription
dimanche 27 mars 2022
Statut
Membre
Dernière intervention
27 mars 2022
27 mars 2022 à 12:09
27 mars 2022 à 12:09
def ADN(cdc): a = cdc.isupper() while a == False: cdc = input("La chaîne d'ADN n'est pas en majuscule, veuillez la resaisir : ") a = cdc.isupper() t = True for i in cdc: if i not in 'ATCG': t = False return False if t: return True
Puis voici le second programme :
def CompteCysteines(n): if ADN(n) == True: h=0 for k in n: if k == 'C': h+=1 print("La séquence est bien une chaîne d'ADN et elle contient" ,h, "cystéines.") else: print("La séquence n'est pas une chaîne d'ADN")
En effet je ne savais pas que l'on pouvait faire comme cela merci !
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Nathan19_8690
Messages postés
17
Date d'inscription
dimanche 27 mars 2022
Statut
Membre
Dernière intervention
27 mars 2022
27 mars 2022 à 16:53
27 mars 2022 à 16:53
J'ai fini par trouver par moi-même, merci a vous de m'avoir aidé !
yg_be
Messages postés
23430
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
17 janvier 2025
1 559
27 mars 2022 à 17:01
27 mars 2022 à 17:01
parfait, peux-tu alors marquer la discussion comme résolue?
Utilisateur anonyme
Modifié le 27 mars 2022 à 17:15
Modifié le 27 mars 2022 à 17:15
Bon je vais faire deux analogies.
1 Tu veux faire cuire des pates.
Tu sors la casserole, tu l'amènes au robinet et du y verses de l'eau.
Ensuite tu la places sur la gazinière.
Tu sors les pates, tu lis la recette et là tu t'aperçois qu'il faut plus d'eau.
Donc tu rapportes la casserole au robinet et du rajoutes de l'eau.
Dans ce "programme", il y a une fonction RemplirDEau, qui prend en paramètre une casserole et qui retourne cette même casserole avec plus d'eau.
Il y a aussi toi (le programme principal) qui utilise cette fonction une fois, regarde le résultat qui n'est pas suffisant, donc utilise la fonction une nouvelle fois (et pourquoi pas une 3eme, 4eme, etc...)
La façon dont ADN est codée, c'est un peu comme si le robinet allait rechercher la casserole quand il n'y a pas assez d'eau, mais renverse l'eau qu'il vient de rajouter.
2 tu veux boire un café
Tu vas dans un bar, tu commandes un café.
Le serveur te demande si tu veux du sucre avec, tu lui réponds que oui.
Il te sers un café, avec un sachet de sucre en poudre, une cuillère et un chocolat en prime.
Dans ce programme, la fonction PrendreUnCafeAuBar fait tout le boulot à partir du moment où tu l'as lancée.
Elle n'a pas de paramètre, par contre elle pose des questions.
La façon dont ADN est codée, c'est un peu comme si tu passais derrière le bar après avoir passé commande pour Edit vider la tasse et la donner au serveur, avant qu'il ne te demande pour le sucre.
Les 2 façons que je trouve logiques de coder ADN sont possibles et pas compliquées.
Le mode hybride, simplement parce qu'il n'est pas logique, est un peu plus compliqué.
Donc plutôt que corriger le code tel quel, il me semble plus utile pour toi de le rendre plus logique.
Je me base sur ce que tu as décrit dans la question initiale, qui n'est pas l'énoncé à proprement parlé, puisque tu as écrit
Bref, je pense qu'ADN devrait être codé comme le cas des pates => Y'a une autre partie du programme qui demande la chaine à l'utilisateur et demande à ADN de la vérifier. Si c'est pas bon cette partie du programme recommence. Cette partie peut être une fonction ou le programme principal
Mais rien n'empêche (à part peut-être ce qui t'es exactement demandé dans ton énoncé) de le coder comme le cas du café => ADN ne reçoit pas de paramètre, demande la chaine, la vérifie et redemande tant que ça n'est bon bon. A la fin il retourne la chaine correcte.
Le choix entre les 2 méthodes c'est d'abord l'énoncé qui soit
Et dans les 2 derniers cas, c'est à toi de choisir.
Quoi qu'il en soit, une fonction ça fait un travail.
Il faut définir ce travail.
Et une fois défini, la fonction ne fait ce travail et la moitié du travail de l'autre.
1 Tu veux faire cuire des pates.
Tu sors la casserole, tu l'amènes au robinet et du y verses de l'eau.
Ensuite tu la places sur la gazinière.
Tu sors les pates, tu lis la recette et là tu t'aperçois qu'il faut plus d'eau.
Donc tu rapportes la casserole au robinet et du rajoutes de l'eau.
Dans ce "programme", il y a une fonction RemplirDEau, qui prend en paramètre une casserole et qui retourne cette même casserole avec plus d'eau.
Il y a aussi toi (le programme principal) qui utilise cette fonction une fois, regarde le résultat qui n'est pas suffisant, donc utilise la fonction une nouvelle fois (et pourquoi pas une 3eme, 4eme, etc...)
La façon dont ADN est codée, c'est un peu comme si le robinet allait rechercher la casserole quand il n'y a pas assez d'eau, mais renverse l'eau qu'il vient de rajouter.
2 tu veux boire un café
Tu vas dans un bar, tu commandes un café.
Le serveur te demande si tu veux du sucre avec, tu lui réponds que oui.
Il te sers un café, avec un sachet de sucre en poudre, une cuillère et un chocolat en prime.
Dans ce programme, la fonction PrendreUnCafeAuBar fait tout le boulot à partir du moment où tu l'as lancée.
Elle n'a pas de paramètre, par contre elle pose des questions.
La façon dont ADN est codée, c'est un peu comme si tu passais derrière le bar après avoir passé commande pour Edit vider la tasse et la donner au serveur, avant qu'il ne te demande pour le sucre.
Les 2 façons que je trouve logiques de coder ADN sont possibles et pas compliquées.
Le mode hybride, simplement parce qu'il n'est pas logique, est un peu plus compliqué.
Donc plutôt que corriger le code tel quel, il me semble plus utile pour toi de le rendre plus logique.
Je me base sur ce que tu as décrit dans la question initiale, qui n'est pas l'énoncé à proprement parlé, puisque tu as écrit
je dois... on devais....c'est donc ton interprétation de l'énoncé, que j'interprète moi même.
Bref, je pense qu'ADN devrait être codé comme le cas des pates => Y'a une autre partie du programme qui demande la chaine à l'utilisateur et demande à ADN de la vérifier. Si c'est pas bon cette partie du programme recommence. Cette partie peut être une fonction ou le programme principal
Mais rien n'empêche (à part peut-être ce qui t'es exactement demandé dans ton énoncé) de le coder comme le cas du café => ADN ne reçoit pas de paramètre, demande la chaine, la vérifie et redemande tant que ça n'est bon bon. A la fin il retourne la chaine correcte.
Le choix entre les 2 méthodes c'est d'abord l'énoncé qui soit
- te l'impose
- te l'oriente
- te laisse libre
Et dans les 2 derniers cas, c'est à toi de choisir.
Quoi qu'il en soit, une fonction ça fait un travail.
Il faut définir ce travail.
Et une fois défini, la fonction ne fait ce travail et la moitié du travail de l'autre.
Nathan19_8690
Messages postés
17
Date d'inscription
dimanche 27 mars 2022
Statut
Membre
Dernière intervention
27 mars 2022
27 mars 2022 à 18:11
27 mars 2022 à 18:11
Ca marche avec cette analogie j'ai mieux compris merci de votre temps !
Utilisateur anonyme
>
Nathan19_8690
Messages postés
17
Date d'inscription
dimanche 27 mars 2022
Statut
Membre
Dernière intervention
27 mars 2022
27 mars 2022 à 20:49
27 mars 2022 à 20:49
De rien