Registreer FAQ Berichten van vandaag


Ga terug   Scholieren.com forum / School & Studie / Huiswerkvragen: Exacte vakken
Reageren
 
Topictools Zoek in deze topic
Oud 12-01-2008, 11:14
Tripp
Avatar van Tripp
Tripp is offline
Ik heb een klein probleempje met een vraag over het programmeren in python.

De Vraag:

Perfect numbers
A perfect nuber is one whose factors (except itself) sum to itself. For example, the facors of 6 are 1,2,3 and 6. Since 1+2+3 is 6, it (6) is considered a perfect number. Write a function called isperfect() which takes a single integer input and outputs 1 if the number is perfect and 0 otherwhise.

Op dit moment heb ik dit staan, alleen het werkt niet:


Code:
n = int(raw_input("Vul een getal in:"))

def factorial( n):
     if n == 0:
         return 1
     else:
         return n * factorial(n-1)

Misschien dat iemand kan helpen?

Groetjes,
Tripp
__________________
They say it is for the commen good.
But good, is not the same as right.

Laatst gewijzigd op 12-01-2008 om 11:57. Reden: code-tags
Met citaat reageren
Advertentie
Oud 12-01-2008, 11:56
ILUsion
Avatar van ILUsion
ILUsion is offline
Let erop: Python is white-spacegevoelig (en er zijn nog meerdere regeltjes daarvoor; maar die zou je normaal wel moeten kennen). Zet hier je code (eigenlijk bij om het even welke programmeertaal tussen [code][/code]-tags.

Code:
def factorial(n):
    if n <= 0:
        return 1
    else:
        return n * factorial(n-1)

def fac(n):
    sum = 1
    for i in range(1,n+1):
        sum *= i
    return sum
Beide functies zouden volgens mij moeten uitkomen (voor de natuurlijke getallen tenminste). Ik heb ze niet getest, trouwens. Het verschil tussen beiden: in de eerste roep je heel veel functies aan, zeker in een scripttaal als Python is dat niet aan te raden (het geheugengebruik gaat in dat geval heel snel oplopen. Bij de tweede ga je dat niet doen (gewoon een lus, dus het geheugengebruik is ongeveer constant en ook de uitvoertijd gaat bijgevolg korter zijn: je computer zal niet bezig zijn met het aanmaken van zoveel functies; maar gewoon de teller met eentje verhogen elke keer).

Maar volgens mij ben je ook naast de vraag aan het werken: een factorial/faculteit gaat je niet geven of je een volmaakt getal krijgt.

Wat je volgens mij moet doen: je input is N; als je nu daarvan alle mogelijke delers afgaat en nagaat welke getallen deler zijn, en die getallen allemaal optelt en controleert of dat hetzelfde is als N, dan kan je daarop gaan vergelijken. Waarschijnlijk zal er ook een iets betere methode bestaan (of eentje die beter gebruik maakt van de mogelijkheden van Python).

Code:
def is_perfect(n):
    sum = 1
    for i in range(2,n//2+1):
        if n%i == 0:
          sum += i
    return (sum == n)
En mijn bedenkingen bij je boek: 1 of 0 laten teruggeven bij dergelijke functie is nogal unpythonic (mooier zou True of False zijn; dat is ook wat ik gedaan heb).
__________________
vaknar staden långsamt och jag är full igen (Kent - Columbus)
Met citaat reageren
Advertentie
Reageren


Regels voor berichten
Je mag geen nieuwe topics starten
Je mag niet reageren op berichten
Je mag geen bijlagen versturen
Je mag niet je berichten bewerken

BB code is Aan
Smileys zijn Aan
[IMG]-code is Aan
HTML-code is Uit

Spring naar

Soortgelijke topics
Forum Topic Reacties Laatste bericht
Huiswerkvragen: Exacte vakken [IN] Hoe maak je dit 'huisje' met programmeren?
student123452
2 02-10-2015 10:07
Huiswerkvragen: Exacte vakken [IN] Programmeren ti84
thieske
11 12-01-2013 09:48
Huiswerkvragen: Exacte vakken [IN] Stoplicht Programmeren
lol24
0 20-09-2009 20:05
Huiswerkvragen: Exacte vakken [IN] programmeren met jcreator
willemhoofd
2 19-05-2008 19:47
Software & Hardware [Server-side scripting] PHP of JSP?
DZHAW
45 16-07-2007 15:06
Software & Hardware programmeren in GR
icecool
3 29-11-2006 19:33


Alle tijden zijn GMT +1. Het is nu 14:17.