bug in python code

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

bug in python code

krimble

[code]bestand = open('weer.txt', 'r')

temperatuur = {}
totaal = 0
lijst = []

lijstgroter = []
lijstkleiner = []

for line in bestand :
    if not line[0] == '#' :
        l = line.split()
       

        ## for calculating gemiddelde
        getallen = l[1]
        lijst.append(getallen)
        totaal += int(getallen)
        gemiddelde = totaal / len(lijst)

        temperatuur[l[0]] = l[1]

        ## if getal in l > gemiddelde then do something, else do something else
        if  int(l[1]) >= gemiddelde :
            lijstgroter.append(l)
        elif int(l[1]) < gemiddelde :
            lijstkleiner.append(l)

print "De gemiddelde temperatuur = " + str(gemiddelde) + " graden." + "\n \n"
print "De steden met minstens de gemiddelde temperatuur: " + "\n" + str(lijstgroter) + "\n \n"
print "De steden met een temperatuur onder het gemiddelde:" + "\n" + str(lijstkleiner)

bestand.close()[/code]

en de output is:

De gemiddelde temperatuur = 15 graden.
 

De steden met minstens de gemiddelde temperatuur:
[['Athene', '19'], ['Istanbul', '19'], ['Las-Palmas', '17'], ['Lissabon', '18'], ['Mallorca', '14'], ['Marseille', '14'], ['Moskou', '16'], ['Rome', '15'], ['Bangkok', '37'], ['Curacao', '27'], ['Jakarta', '31'], ['Johannesburg', '17'], ['Los-Angeles', '15'], ['Mexico-Stad', '17'], ['Nairobi', '19'], ['Peking', '20'], ['Perth', '21'], ['Sydney', '20'], ['Tel-Aviv', '21']]
 

De steden met een temperatuur onder het gemiddelde:
[['Barcelona', '15'], ['Berlijn', '7'], ['Londen', '12'], ['Madrid', '6'], ['Milaan', '12'], ['Munchen', '6'], ['Parijs', '11'], ['Praag', '7'], ['Stockholm', '6'], ['Warschau', '8'], ['Wenen', '11'], ['Buenos-Aires', '9'], ['Chicago', '11'], ['New-York', '10'], ['Tokyo', '13'], ['Toronto', '5'], ['Vancouver', '14']]


Wat niet klopt omdat in de eerste lijst ['Mallorca', '14'], ['Marseille', '14'] onder het gemiddelde zijn, deze 2 zouden dus eigenlijk in de onderste lijst moeten zitten.

Weet iemand hoe dit kan ?

Bedankt.
Reply | Threaded
Open this post in threaded view
|

Re: bug in python code

Remco Gerlich
Hoi,

Op het eerste gezicht loop je maar 1x door de lijst heen. Dat betekent
dat je gemiddelde telkens verandert; bij de 4e stad heb je het
gemiddelde over de eerste vier steden, niet over alles. Het kan best dat
die stad met 14 graden hoger is dan het gemiddelde tot dan toe.

Dus: eerst gemiddelde berekenen, dan nog een keer door de lijst en
opsplitsen.

Omdat wij je nu met je huiswerk helpen, is hier de nieuwe opdracht: maak
je oplossing beter door het werk in mooie functies als 'vind_gemiddelde'
en 'splits_lijst' onder te verdelen, met de juiste argumenten, en het
resultaat hier heen te sturen. Succes :-)

Remco


krimble wrote:

>[code]bestand = open('weer.txt', 'r')
>
>temperatuur = {}
>totaal = 0
>lijst = []
>
>lijstgroter = []
>lijstkleiner = []
>
>for line in bestand :
>    if not line[0] == '#' :
>        l = line.split()
>        
>
>        ## for calculating gemiddelde
>        getallen = l[1]
>        lijst.append(getallen)
>        totaal += int(getallen)
>        gemiddelde = totaal / len(lijst)
>
>        temperatuur[l[0]] = l[1]
>
>        ## if getal in l > gemiddelde then do something, else do something
>else
>        if  int(l[1]) >= gemiddelde :
>            lijstgroter.append(l)
>        elif int(l[1]) < gemiddelde :
>            lijstkleiner.append(l)
>
>print "De gemiddelde temperatuur = " + str(gemiddelde) + " graden." + "\n
>\n"
>print "De steden met minstens de gemiddelde temperatuur: " + "\n" +
>str(lijstgroter) + "\n \n"
>print "De steden met een temperatuur onder het gemiddelde:" + "\n" +
>str(lijstkleiner)
>
>bestand.close()[/code]
>
>en de output is:
>
>De gemiddelde temperatuur = 15 graden.
>
>
>De steden met minstens de gemiddelde temperatuur:
>[['Athene', '19'], ['Istanbul', '19'], ['Las-Palmas', '17'], ['Lissabon',
>'18'], ['Mallorca', '14'], ['Marseille', '14'], ['Moskou', '16'], ['Rome',
>'15'], ['Bangkok', '37'], ['Curacao', '27'], ['Jakarta', '31'],
>['Johannesburg', '17'], ['Los-Angeles', '15'], ['Mexico-Stad', '17'],
>['Nairobi', '19'], ['Peking', '20'], ['Perth', '21'], ['Sydney', '20'],
>['Tel-Aviv', '21']]
>
>
>De steden met een temperatuur onder het gemiddelde:
>[['Barcelona', '15'], ['Berlijn', '7'], ['Londen', '12'], ['Madrid', '6'],
>['Milaan', '12'], ['Munchen', '6'], ['Parijs', '11'], ['Praag', '7'],
>['Stockholm', '6'], ['Warschau', '8'], ['Wenen', '11'], ['Buenos-Aires',
>'9'], ['Chicago', '11'], ['New-York', '10'], ['Tokyo', '13'], ['Toronto',
>'5'], ['Vancouver', '14']]
>
>
>Wat niet klopt omdat in de eerste lijst ['Mallorca', '14'], ['Marseille',
>'14'] onder het gemiddelde zijn, deze 2 zouden dus eigenlijk in de onderste
>lijst moeten zitten.
>
>Weet iemand hoe dit kan ?
>
>Bedankt.
>  
>

_______________________________________________
Python-nl mailing list
[hidden email]
http://mail.python.org/mailman/listinfo/python-nl
Reply | Threaded
Open this post in threaded view
|

Re: bug in python code

krimble
aaa bedankt, ja ik zal eens kijken ofdat het met die functions lukt. Bedankt voor je snelle reply