A voir également:
- Typeerror: 'list' object cannot be interpreted as an integer
- Shockwave flash object - Télécharger - Divers Web & Internet
- List disk - Guide
- Directory list & print - Télécharger - Divers Utilitaires
- Cannot play jvc - Forum Autoradio
- Vba concatenate string and integer ✓ - Forum VB / VBA
7 réponses
Bonjour
Tout d'abord une remarque
D'un point de vue strictement mathématique, faire la moyenne de tous les éléments en une seule fois te donnera le même résultat.
En informatique, il peut y avoir une différence sensible, mais ce sera dû à la façon de transcrire les nombre décimaux en binaire qui arrondit beaucoup de valeurs à un plus proche que l'on peut coder.
Et donc pour obtenir un résultat le plus vrai possible, il est préférable de faire la moyenne d'un coup.
Sauf bien sûr, si les moyennes intermédiaires ont de l'intérêt pour toi (et encore que....)
Si tu n'es pas sensibilisé à ce point, voir ceci https://forums.commentcamarche.net/forum/affich-35846831-erreur-de-calcul#3
Bref, maintenant que tu es averti, une solution est de faire une boucle dans une boucle, une autre est de faire une boucle qui va de 4 en 4
Tout d'abord une remarque
j'aimerais calculer la moyenne des 4 premières valeurs puis des 4 suivantes etc.... jusqu'à la fin.
Pour enfin faire la moyenne de toutes ces moyennes ....
D'un point de vue strictement mathématique, faire la moyenne de tous les éléments en une seule fois te donnera le même résultat.
En informatique, il peut y avoir une différence sensible, mais ce sera dû à la façon de transcrire les nombre décimaux en binaire qui arrondit beaucoup de valeurs à un plus proche que l'on peut coder.
Et donc pour obtenir un résultat le plus vrai possible, il est préférable de faire la moyenne d'un coup.
Sauf bien sûr, si les moyennes intermédiaires ont de l'intérêt pour toi (et encore que....)
Si tu n'es pas sensibilisé à ce point, voir ceci https://forums.commentcamarche.net/forum/affich-35846831-erreur-de-calcul#3
Bref, maintenant que tu es averti, une solution est de faire une boucle dans une boucle, une autre est de faire une boucle qui va de 4 en 4
Bonjour,
Je ne code pas en Python, mais la logique devrait être la même que dans les autres langages.
Initialise une variable
Pour chaque tour de boucle, ajoute 1 sur
Lorsque tu atteins 4, remet
Je ne code pas en Python, mais la logique devrait être la même que dans les autres langages.
Initialise une variable
nbLoopen dehors de ta boucle avec la valeur 0, et une autre
tmpTotalqui servira à stocker le total des 4 dernières valeurs.
Pour chaque tour de boucle, ajoute 1 sur
nbLoop, et tu additionnes
tmpTotal.
Lorsque tu atteins 4, remet
nbLoopà 0 et recommence ton addition dans
tmpTotal.
Bonjour,
En dehors de l'aspect signalé par Whismeril, c'est typiquement le rôle d'une boucle avec un pas d'incrément, 4 dans ton cas. Exemple
En dehors de l'aspect signalé par Whismeril, c'est typiquement le rôle d'une boucle avec un pas d'incrément, 4 dans ton cas. Exemple
import random taille=32 tab = [random.randint(0, 100) for x in range(taille)] print(tab) cumulGlobal=0 for i in range(0,taille,4): print("i =",i) cumul=0 for j in range(4): print(" j =",j," i+j =",i+j,"tab[i+j} =",tab[i+j])
Merci
j'ai éssayer d'intégrer le code au mien mais j'obtiens cette erreur
" line 40, in <module>
for i in range(0,turbi,4):
TypeError: 'list' object cannot be interpreted as an integer
voilà mon programme:
turbi = []
prof = []
temp = []
date = []
a = 4 # convertir min
b = 4 * 24
c = 4 * 24 * 7
with open("C:\\Users\John\Desktop\PYTHON\Poizot\STBD_33002_20130712_085653.txt",
"r") as data: # ouverture et lecture des datas
data = [e.replace(',', '.') for e in data]
data = data[5:]
for ligne in data: # lecture des lignes dans data , exclusion des 6 premieres
liste = ligne.split(';') # supprimation des espaces
turbi.append((float(liste[0])))
prof.append((float(liste[1])))
temp.append((float(liste[2])))
date.append(((liste[3])))
cumulGlobal=0
for i in range(0,turbi,4):
cumul=0
for j in range(4):
print(" j =",j," i+j =",i+j,"tab[i+j} =",tab[i+j])
si vous pouvez m'aider ? :)
merci
j'ai éssayer d'intégrer le code au mien mais j'obtiens cette erreur
" line 40, in <module>
for i in range(0,turbi,4):
TypeError: 'list' object cannot be interpreted as an integer
voilà mon programme:
turbi = []
prof = []
temp = []
date = []
a = 4 # convertir min
b = 4 * 24
c = 4 * 24 * 7
with open("C:\\Users\John\Desktop\PYTHON\Poizot\STBD_33002_20130712_085653.txt",
"r") as data: # ouverture et lecture des datas
data = [e.replace(',', '.') for e in data]
data = data[5:]
for ligne in data: # lecture des lignes dans data , exclusion des 6 premieres
liste = ligne.split(';') # supprimation des espaces
turbi.append((float(liste[0])))
prof.append((float(liste[1])))
temp.append((float(liste[2])))
date.append(((liste[3])))
cumulGlobal=0
for i in range(0,turbi,4):
cumul=0
for j in range(4):
print(" j =",j," i+j =",i+j,"tab[i+j} =",tab[i+j])
si vous pouvez m'aider ? :)
merci
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 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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Merci pour le petit tuto whismeril , de mon coté sa n'avance toujours pas vraiment je suis toujours bloqué sur la partie
boucle de jee pee
je vois pas trop comment l'adapter pour mon projet :/
si vous pouvez m'éclairer ! merci d'avance
boucle de jee pee
turbi = [] prof = [] temp = [] date = [] a = 4 # convertir min b = 4 * 24 c = 4 * 24 * 7 with open("C:\\Users\John\Desktop\PYTHON\Poizot\STBD_33002_20130712_085653.txt", "r") as data: # ouverture et lecture des datas data = [e.replace(',', '.') for e in data] data = data[5:] for ligne in data: # lecture des lignes dans data , exclusion des 6 premieres liste = ligne.split(';') # supprimation des espaces turbi.append((float(liste[0]))) prof.append((float(liste[1]))) temp.append((float(liste[2]))) date.append(((liste[3]))) MoyTh = sum(turbi) / (len(date) *a ) MoyPh = sum(prof) / (len(date) * a) MoyTph = sum(temp) / (len(date) * a) MoyTj = sum(turbi) / (len(date) * b) MoyPj = sum(prof) / (len(date) * b) MoyTpj = sum(temp) / (len(date) * b) MoyTs = sum(turbi) / (len(date) * c) MoyPs = sum(prof) / (len(date) * c) MoyTps = sum(temp) / (len(date) * c) taille=len(turbi) tab = [random.randint(0, 100) for x in range(taille)] print(tab) cumulGlobal=0 for i in range(0,taille,4): print("i =",i) cumul=0 for j in range(4): print(" j =",j," i+j =",i+j,"tab[i+j} =",tab[i+j])
je vois pas trop comment l'adapter pour mon projet :/
si vous pouvez m'éclairer ! merci d'avance
Bonjour,
A mon avis, les lignes 15 à 21 devraient être indentées, donc sous le with()
Je me demande comment se présente ton fichier texte ...
Sinon:
# ouverture et lecture des datas : pas de s a data, c'est déjà un mot au pluriel (singulier : datum)
# supprimation des espaces : c'est plutôt suppression :-) :-)
et calcul de moyennes
A mon avis, les lignes 15 à 21 devraient être indentées, donc sous le with()
Je me demande comment se présente ton fichier texte ...
Sinon:
# ouverture et lecture des datas : pas de s a data, c'est déjà un mot au pluriel (singulier : datum)
# supprimation des espaces : c'est plutôt suppression :-) :-)
et calcul de moyennes
Si les valeurs à traiter sont dans turbi :
tu peux te passer de cumulGlobal si en fin tu effectues la moyenne des moyennes, tu pourrais te passer de la boucle j si tu mets en dur les 4 indices i, i+1, i+2, i+3 pour calculer la moyenne directe, tu peux utiliser sum(turbi), ... suivant ce que tu connais des instructions, mais utiliser les boucles i et j avec des prints doit te permettre de décomposer l'algorithme
cumulGlobal=0 moyenne4=[] for i in range(0,len(turbi),4): print("i =",i) cumul=0 for j in range(4): print(" j =",j," i+j =",i+j,"turbi[i+j] =",turbi[i+j]) cumul += turbi[i+j] cumulGlobal += turbi[i+j] moyenne4.append(cumul/4) print(moyenne4) moyenneGlobale = cumulGlobal / len(turbi) print(moyenneGlobale)
tu peux te passer de cumulGlobal si en fin tu effectues la moyenne des moyennes, tu pourrais te passer de la boucle j si tu mets en dur les 4 indices i, i+1, i+2, i+3 pour calculer la moyenne directe, tu peux utiliser sum(turbi), ... suivant ce que tu connais des instructions, mais utiliser les boucles i et j avec des prints doit te permettre de décomposer l'algorithme
moyenneGlobale = sum(turbi)/len(turbi) moyenne4=[] for i in range(0,len(turbi),4): moyenne4.append((turbi[i]+turbi[i+1]+turbi[i+2]+turbi[i+3])/4)
Merci à tous pour votre aide !
Ducoup après bidouillages je suis partie sur une boucle permettant de calculer mes moyennes du type :
Merci encore!
Ducoup après bidouillages je suis partie sur une boucle permettant de calculer mes moyennes du type :
i , pas = 0,4 while 1: s=0 try: for x in range(pas): s=s+turbi[i+x] #calcule de la somme MoyTh.append(s/pas) #Liste apprend les valeurs somme/pas i=i+pas #passer aux "pas" suivant except: break MoyTh1= sum(MoyTh)/len(MoyTh)
Merci encore!
bidouillages c'est exactement ce que je pensais en lisant ton code. Tu cherches les complications, gérer un indice à la main alors qu'une boucle le fait mieux et surtout la sortie est horrible, générer une erreur d'indice pour quitter. C'est comme scier la branche sur laquelle on est assis, juste pour ne pas avoir à prendre la décision de sauter pour descendre ;-)
j'étais obligé de créer une boucle avec condition car sinon j'avais une erreur de range quand j'utilisais le tien , car je penses qu'il était impossible de classer toute les valeurs de la liste par groupe de 4.
De plus , j'ai commencé python il y'a une semaine, donc forcement je suis pas encore un "maitre" dans le domaine.
Mais merci pour la remarque...
De plus , j'ai commencé python il y'a une semaine, donc forcement je suis pas encore un "maitre" dans le domaine.
Mais merci pour la remarque...