Toon posts:

Zien jullie fouten in deze code?

Pagina: 1
Acties:
  • 635 views

Onderwerpen


  • djierra
  • Registratie: Januari 2020
  • Laatst online: 17-02-2022
#0. afdrukken naam, klas en studentnummer
print("Dit programma is gemaakt door: Erhan Dogan , IB105A1 , 500798213")

#5. functie bereken totaalprijs van computeronderdelen
def berekenTotaalPrijs(prijzen):
totaalPrijs = 0.0
for prijs in prijzen:
#prijs = float(prijzen[i])
totaalPrijs +=prijs
return totaalPrijs

#6. functie te betalen verkoop kosten
def berekenVerkoopKosten(totaalprijs):
verkoopKosten = totaalprijs * 0.05
if verkoopKosten < 3:
verkoopKosten = 3
return round(verkoopKosten)


#1. aantal computeronderdelen invoeren
aantalComputeronderdelen = int(input("Hoeveel computeronderdelen wil je verkopen? "))
while aantalComputeronderdelen < 1 or aantalComputeronderdelen > 25:
print("\tAantal computeronderdelen moet tussen de 1 en 25 liggen")
aantalComputeronderdelen = int(input("Hoeveel computeronderdelen wil je verkopen? "))

#2. Geef per onderdeel beschrijving
onderdeelNaam= []
onderdeelPrijs= []

#3. vraag omschrijving voor ieder onderdeel
print("Geef per onderdeel de beschrijving")
for i in range (0, aantalComputeronderdelen):
naam = input("\t"+str (i+1) + ": ")
onderdeelNaam.append(naam)

#4. vraag prijs van ieder onderdeel met begleidende tekst
print("Geef voor elke onderdeel de verkoopprijs")
for i in range (0, aantalComputeronderdelen):
prijs = float(input("\tPrijs " + onderdeelNaam[i]+ ": "))
onderdeelPrijs.append(prijs)

#5+6+7. printen totaalprijs en verkoopkosten met gebruik van functie
totaalPrijs = berekenTotaalPrijs(onderdeelPrijs)
verkoopKosten = (berekenVerkoopKosten(totaalPrijs))

print("De totaalprijs van alle onderdelen bedraagt: ", totaalPrijs, "euro. ")
print("Hierover betaald u verkoopkosten: ", verkoopKosten,"euro. ")
print("Indien alle onderdelen worden verkocht, ontvangt u: ", totaalPrijs - verkoopKosten, "euro. ")

#8. lijst onderdelen printen
print('\nLijst van de onderdelen: ')
for i in range(0, aantalComputeronderdelen):
print(onderdeelNaam[i], onderdeelPrijs[i])

  • Reinier
  • Registratie: Februari 2000
  • Laatst online: 16:30
Betaalt is met een t.

  • Hatsjoe
  • Registratie: Februari 2008
  • Laatst online: 17:53
Ja, je hebt geen indents. De code gaat dus nooit werken.

Tip: gebruik [code=python]je code hiertussen[/code] om je code enigszins leesbaar te maken op het forum. Hierbij blijven ook al je spaties intact zodat je indenting klopt (of het zichtbaar wordt wanneer deze niet klopt).

Vervolgvraag:

Heb je je code al gedraaid? Zo ja, draait deze zonder problemen? Zo nee, welke errors krijg je?

  • Dr.Greg
  • Registratie: Oktober 2006
  • Laatst online: 03-02 22:45
Als ik de indents toevoeg, runt het zonder errors. Een code op fouten beoordelen kan verder niet zonder verdere specificatie of opdracht.

Wat ik zelf sowieso anders zou doen:
  • De style guide for python eens doorlezen: camelCase is bijvoorbeeld niet gebruikelijk voor namen van variabele of functies in python. En behalve indents (die echt noodzakelijk zijn), missen soms ook "esthetische" spaties: "onderdeelNaam= []" -> "onderdeelNaam = []"
  • De functie berekenTotaalPrijs is onnodig lang, gebruik gewoon de som-functie: "return sum(prijzen)".
  • Buitenste haakjes zijn hier overbodig: "verkoopKosten = (berekenVerkoopKosten(totaalPrijs))"
  • Geldbedragen afronden en weergeven in twee decimalen, kan met de format-functie.
  • Ik weet niet in hoeverre je user-input moet valideren, maar negatieve verkoopprijzen zijn mogelijk en als de input niet naar een float of int "gecast" kan worden, krijg je ook een ValueError.
  • En het bedrag dat je ontvangt neemt ook niet monotoom toe met de totaalprijs van de onderdelen. Bij een totaalprijs van 69.99 euro ontvang je 66.99. Bij een totaalprijs van 70.00 euro ontvang je minder, namelijk maar 66.00 euro. Lijkt mij persoonlijk onlogisch, maar is inherent aan de keuze om verkoopkosten op hele euro's af te ronden.

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Op deze manier willen we het hier dus niet zien. Zeker aangezien het overduidelijk een opdracht voor school is, verwachten we minstens dat je er zelf wat moeite in stopt om te vertellen wat er niet werkt, of over welk gedeelte je twijfels hebt en waarom. Niet gewoon alleen een stuk code dumpen en verwachten dat mensen het voor je checken.

Dit topic gaat dus ook op slot

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Dit topic is gesloten.


Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee