Fonction ne fonctionne pas dans la boucle for
Fermé
Hempates
-
Modifié le 23 avril 2021 à 04:09
mamiemando Messages postés 33318 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 15 octobre 2024 - 23 avril 2021 à 04:28
mamiemando Messages postés 33318 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 15 octobre 2024 - 23 avril 2021 à 04:28
A voir également:
- Fonction ne fonctionne pas dans la boucle for
- Fonction si et - Guide
- Downloader for pc - Télécharger - Téléchargement & Transfert
- Copytrans heic for windows - Télécharger - Visionnage & Diaporama
- Fonction somme excel - Guide
- Download instagram for pc - Télécharger - Divers Communication
2 réponses
Phil_1857
Messages postés
1872
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
28 février 2024
168
22 avril 2021 à 17:08
22 avril 2021 à 17:08
Bonjour,
Au début de ton code, on voit:
mais code1 est initialisée où ?
Sinon:
L'indentation étant importante en Python, merci de copier/coller ici ton code complet avec les balises de code
mode d'emploi:
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Visuellement, ça doit ressembler à ceci (avec la coloration syntaxique) :
Au début de ton code, on voit:
listetotal = list(code1)
mais code1 est initialisée où ?
Sinon:
L'indentation étant importante en Python, merci de copier/coller ici ton code complet avec les balises de code
mode d'emploi:
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Visuellement, ça doit ressembler à ceci (avec la coloration syntaxique) :
def test(): print('test') test()
mamiemando
Messages postés
33318
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
15 octobre 2024
7 796
Modifié le 23 avril 2021 à 04:33
Modifié le 23 avril 2021 à 04:33
Bonjour,
@Phil :
Plusieurs remarques en vrac :
... ou avec une liste compréhension :
place = findoccurence(x, listetotal)
Si le but est de créer une structure qui compte la distribution des caractères ASCII dans une chaîne de caractère
Bonne chance
@Phil :
code1est spécifié dans l'énoncé, pas dans le code ;
Plusieurs remarques en vrac :
- Donne-nous un code minimal, qui se lance et qui reproduit le problème ;
- Je te recommande d'utiliser des indentations de taille 2 ou 4 (tu peux configurer ton éditeur pour que lorsque tu appuies sur la touche tabulation, cela engendre un nombre donné d'espaces) ; généralement on prend 4 espaces ;
- Merci d'expliquer brièvement le but de ton programme, et en particulier le résultat attendu ;
- Nomme tes variables de manière plus explicites ; en particulier je te recommande de noter au pluriel les listes (genre
characters
au lieu decar
), cela rend le code plus lisible (et permet par la suite d'écrire des choses du genrefor element in elements
) - En PEP8 tes variables devrait avoir un nom du genre
ma_variable
au lieu demavariable
; idem pour les fonctions ; - Inutile de transformer le résultat de
len()
enint
: c'est déjà une valeur entière ; - Il est plus naturel d'itérer sans utiliser d'indice, ainsi ta fonction devient :
def findoccurence(fcx, fclistetotal): fcplace = [] for c in fclistetotal): if c == fcx: fcplace.append(n) return fcplace
... ou avec une liste compréhension :
def findoccurence(fcx, fclistetotal): return [c for c in fclistetotal) if c == fcx]
- Ton test
if int(len(findoccurence(x, listetotal))) <= 1:
vérifie si le résultat defindoccurence(x, listetotal)
est une liste vide ce qui s'écrit plus simplement :
if not findoccurence(x, listetotal):
- le test dans le
elif
est inutile (et relance le calcul pour rien), un simpleelse
suffit. En fait il faudrait plutôt écrire :
place = findoccurence(x, listetotal)
if not place: print("test") else: ...
- Pas besoin de créer une liste pour lister les caractères intéressants. Une chaîne est au même titre qu'une liste un itérable indexé. Donc tu peux directement utiliser une chaîne dans laquelle sont concaténés tous les caractères. Note que ce que tu veux est sans doute simplement
string.printable
:
import string car = string.printable
Si le but est de créer une structure qui compte la distribution des caractères ASCII dans une chaîne de caractère
code1, voici comment je procèderais :
import string from pprint import pprint from collections import defaultdict def compute_distribution(s): distribution = defaultdict(lambda: 0) for a in s: if a in string.printable: distribution[a] += 1 return distribution pprint(compute_distribution("ababaabc"))
Bonne chance