2016-04-01 2 views
0

Я пытаюсь умножить элементы в списке, чтобы они дали мне их общее количество, но только с использованием сложения и вычитания. Например, список [1,3,6,8] будет иметь выход 144. Код у меня до сих пор:Умножение списка чисел без умножения

numbers = [1,3,6,8] 
def no_sign(numbers): 
    total = 0 
    answer = 0 
    for i in range(len(numbers)): 

     first_number = numbers[i] 
     print str(first_number) + ' pop' 
     for j in range(first_number): 
      #print first_number 
      answer = first_number + answer 
      print str(first_number) + ' firstnum' 
      print str(answer)+ " answeer " 

     total = total + answer 
     print str(total) + " total" 

    return total 

печати no_sign (номера)

Это только дает мне 110 , чего недостаточно. Какие-либо предложения?

+0

Ну, первое, что я заметил, это то, что ваш 'for j in range (...):' loop в основном возводит в квадрат каждое число, а не умножает любые другие. – glibdud

ответ

1

Ваш код принимает квадрат каждого элемента и добавляет его. Следовательно, вы получаете 1 + 9 + 36 + 64 = 110

Поскольку вы хотите сделать то же самое пару раз, написать свою функцию multiplication(num1, num2) самостоятельно только с добавлением и использованием этого, когда умножение будет намного лучшим выбором.

Умножение двух чисел, как вы знаете, добавляет firstNumber к себе secondNumber раз. S вы можете написать функцию multiplication, как показано ниже, и использовать ее в списке.

def multiplication(num1, num2): 
    answer = 0 
    for i in range(num2): 
     answer += num1  
    return answer 

numbers = [1,3,6,8] 
def no_sign(numbers): 
    total = 1 
    for number in numbers: 
     total = multiplication(total, number)  
    return total 

print no_sign(numbers) 
Смежные вопросы