2016-10-13 6 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) 

Я изменил КОК фиксированное число.

#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

Спасибо! Извините, если я был немного nooby :) – Sepy13

+0

@ Sepy13 Каждый должен начать, будучи noob не проблема. Просто убедитесь, что вы сначала сделаете одолжение и исследования, а затем спросите полный ответ, который включает в себя ваш код, что вы пробовали, какой ваш вопрос/вопрос и хотите ввода и вывода. Таким образом, люди могут помочь вам быстрее и легче. – MooingRawr

Смежные вопросы