2016-10-13 4 views
2

Ich brauche eine Funktion zu schreiben, die die Faktoren für eine negative Zahl und gibt sie auf eine Liste finden. Wie würde ich das tun? Ich kann meine Funktion bekommen, positive Zahlen zu machen (siehe unten), aber keine negativen.Funktion, die Faktoren einer negativen Zahl zu finden

#Finds factors for A and C 
def factorspos(x): 
    factorspos = [1,-6]; 
    print("The factors of",x,"are:") 
    for i in range(1, x + 1): 
     if x % i == 0: 
      factorspos.append(i) 
      print(i) 

ich versuchte, die Werte zu ändern, dass die Schleife zählt von so würden sie von der Anzahl auf 1 (Code unten) gewählt zählen aber noch keine Ergebnisse ergab :(

#Finds factors for A and C 
def factorspos(x): 
    factorspos = [int(-6),1]; 
    print("The factors of",x,"are:") 
    for i in range(int(-6), x + 1): 
     if x % i == 0: 
      factorspos.append(i) 
      print(i) 

I geändert haben CCO eine feste Zahl.

#Finds factors for A and C 
def factorspos(x): 
    Cco = -6 
    factorspos = [int(Cco),1]; 
    print("The factors of",x,"are:") 
    for i in range(int(Cco), x + 1): 
     if x % i == 0: 
      factorspos.append(i) 
      print(i) 
      return factorspos 
+2

Dank, dass Sie uns kennen. Hast du eine Frage? – jonrsharpe

+0

@ Sepy13: Was ist der Wert von 'Cco'? und Sie sollten Ihren "Rückgabewert" nicht so nennen wie Ihre Funktion. Dies ist nicht Visual Basic (also eigentlich Sie etwas oder Ihre Funktion wird nicht funktionieren _Enter_ müssen –

+0

@ Sepy13. Dies lesen: Sie zurück _have_ 'factorpos' –

Antwort

1
def factorspos(x): 
    x = int(x) 
    factorspos = [] 
    print("The factors of",x,"are:") 
    if x > 0: # if input is postive 
     for i in range(1,x+1): 
      if x % i == 0: 
       factorspos.append(i) 
       print(i) 
     return factorspos 
    elif x < 0: #if input is negative 
     for i in range(x,0): 
      if x % i == 0: 
       factorspos.append(i) 
       print(i) 
     return factorspos 


print(factorspos(12)) #outputs [1, 2, 3, 4, 6, 12] 
print(factorspos(-12)) #outputs [-12, -6, -4, -3, -2, -1] 

Sie zur Festsetzung Ihr Problem tatsächlich sehr nahe waren. ich habe mir erlaubt eine extr des Hinzufügens eine Funktion zu dem, was Sie hatten. Im Grunde habe ich einen Condiction Checker hinzugefügt, um zu sehen, ob die Eingabe x positiv oder negativ ist, die Funktion hat zwei verschiedene Dinge getan. Was sie gemacht haben, war was du zur Verfügung gestellt hast, aber aufgeräumt.

Things range() beginnt, sich von einer der ersten Nummer inklusive, zu beachten und endet eine Nummer hinter dem zweiten Parameter. range(1,10) geben Ihnen 1 bis 9. Also, warum, wenn Sie der negativer Abschnitt aussehen, geht der Bereich von x auf 0, da das wird x sagen auf -1. Im positiven Bereich wird es von 1 bis x + 1 gehen, da +1 versichert, dass wir unsere Eingabe einschließen. Den Rest, von dem du seither weißt, nun, du hast es geschrieben; wenn nicht zögern, Fragen zu stellen.

+0

Danke! Sorry, wenn ich ein wenig nooby war :) – Sepy13

+0

@ Sepy13 Jeder beginnen hat, ein noob zu sein, ist kein Thema. Stellen Sie einfach sicher, dass Sie sich selbst einen Gefallen tun und erst nachforschen, dann fragen Sie eine vollständige Antwort, die Ihren Code enthält, was Sie versucht haben, was Ihre Frage/Problem ist und Wunsch Eingabe und Ausgabe. Auf diese Weise können Menschen Ihnen schneller und einfacher helfen. – MooingRawr

Verwandte Themen