Рейтинг:
1
Richard MacCutchan
Subtraction = 0
def sub(*x):
l2 =list(x)
l2.sort(reverse=True)
sortedValue = l2
for i in sortedValue:
global subtraction
У вас есть два разных написания:
Subtraction
и
subtraction
codeXprojectX
Спасибо за ответ, Ричард.Тем не менее,результат остается тем же самым..(вычитание-=i делает вычитание = 0-i). Я хочу, чтобы мое первое значение было нетронутым, а не отрицательным целым числом. Это должно работать идеально, когда есть 'n' количество значений, передаваемых в вызове функции.
Если def(20,2,5) передается, то переменная temp(вычитание) должна повторяться следующим образом
вычитание = 20/2 -- 10
вычитание = 10/5 -- 2
наконец возвращаем значение 2
Richard MacCutchan
Я запустил ваш исходный код, и он правильно вернул значение -4, выполнив повторные вычитания. Откуда берется это разделение?
codeXprojectX
Извини,это была ошибка.
когда функция sub(20,2,5) вызывается после повторных вычитаний, мой ожидаемый результат равен 13.
например, вычитание = 18(20-2), а затем вычитание = 13 (18-5)
Но с приведенным выше кодом он возвращает значение -27 при вызове функции sub(20,2,5)
Richard MacCutchan
Да, -27 - это правильный ответ. Ваш код начинается со значения 0 и многократно вычитает каждое число из этого значения. Если вам нужен какой-то другой расчет, то ваш код должен быть изменен. Зачем вам нужен список, отсортированный в обратном порядке?
codeXprojectX
Я понимаю, что код должен быть изменен. Как уже упоминалось в моем предыдущем комментарии,мой ожидаемый результат отличается.Я хотел знать, какие изменения в моем коде приведут к получению желаемого результата.. как ТЭМП=параметр1-параметр2 и тогда темп = param3-темп.
Я хочу, чтобы вычитаемое значение трех переданных параметров..20-2-5 привело к 13 после итерации.
Спасибо
Richard MacCutchan
Во-первых, не сортируйте свой список, так как это может повлиять на ответ.
Во-вторых, вы должны установить subtraction
поле до первого числа в списке, а затем несколько раз вычесть остальные. Что-то вроде:
l2 = list(x)
subtraction=l2[0] # start with the first number
l2 = l2[1:] # create a new list of the remaining numbers
for x in l2: #
subtraction -= x # subtract each number from the first one
codeXprojectX
Я использовал функцию сортировки, чтобы убедиться, что элементы списка находятся в порядке убывания(так что результат не будет отрицательным).
Я хотел проверить, можно ли динамически вычитать значения с помощью вызова функции.Однако код, который вы даете для вычитания, работает правильно.
Спасибо за ваше драгоценное время :)