2016-10-13 97 views
2

我需要編寫一個函數,它將查找負數的因子並將它們輸出到列表中。我會怎麼做?我可以讓我的功能做正數(見下文),但不是負數。查找負數因子的函數

#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) 

我試圖改變,從使循環計數它會從選擇1(下面的代碼)數量計值,但仍然沒有結果:(

#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) 

我已經改變了CCO來一個固定的數字。

#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

感謝您告訴我們。你有問題嗎? – jonrsharpe

+0

@ Sepy13:Cco的價值是多少?你真的不應該像你的函數一樣調用你的「返回值」。這不是基本的視覺效果(所以你實際上必須返回一些東西或者你的功能不起作用) –

+0

@ Sepy13:閱讀這個:你有_have_返回'factorpos' –

回答

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] 

你實際上是非常接近固定您的問題。我把添加抽的自由一個功能,你有什麼。基本上我添加了一個檢驗器來判斷輸入x是正數還是負數,函數做了兩件事情。他們所做的是你提供的,但清理乾淨。

注意事項range()從包含第一個數字的一​​個數字開始,並且在第二個參數之後結束一個數字。 range(1,10)會給你1到9.所以這就是爲什麼如果你看,爲負的部分範圍從x到0,因爲那會說x到-1。在積極部分,它將從1到x + 1,因爲+1確保我們包含我們的輸入。其他你知道的,那麼你寫的;如果不是隨意提問的話。

+0

謝謝!對不起,如果我是一個小白癡:) – Sepy13

+0

@ Sepy13每個人都必須開始,作爲一個noob不是一個問題。只要確保你先幫自己一個忙,然後問一個完整的答案,其中包括你的代碼,你試過的,你的問題是什麼,渴望輸入和輸出。這樣人們可以更快更輕鬆地幫助你。 – MooingRawr