Zien jullie fouten in deze code?

Pagina: 1
Acties:
  • 723 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])

Acties:
  • +2 Henk 'm!

  • Reinier
  • Registratie: Februari 2000
  • Laatst online: 09:06

Reinier

\o/

Betaalt is met een t.

  • Hatsjoe
  • Registratie: Februari 2008
  • Laatst online: 16-05 21:56
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: 16-03 08:13
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.