#python #division
Вопрос:
»’
numlist = [ 81, 9, 3]
#List methods
for num in numlist:
numlist[numlist.index(num)] = int(num)
#list comprehension
numlist = [int(num) for num in numlist]
i=0
for i in numlist:
a = i
b = i 1
quotient = a / b
print(numlist[-1])
»’
То, что я пытаюсь сделать, — это получить 81/9, а затем коэффициент делится на 3. Вся операция дает мне 3, и я намерен получить результат 1.
Любой совет был бы великолепен.
Цель этого основного вопроса состоит в том, чтобы разделить дивиденд на делитель, чтобы дать мне частное. Затем частное делится на следующий делитель, и это частное становится дивидендом.
Я пытался:
numlist = input("Enter space-separated numbers (2 min) ").split()
#List methods
for num in numlist:
numlist[numlist.index(num)] = int(num)
#list comprehension
numlist = [int(num) for num in numlist]
from functools import reduce
reduce(lambda x,y:x/y, numlist)
print(numlist[-1])
но в результате получается 3
Комментарии:
1. Вы сказали, что хотите сделать 81/9, а затем коэффициент делится на 3. 81/9 равно 9, а 9/3 равно 3. Почему вы ожидаете, что в результате этой операции будет возвращен 1?
Ответ №1:
Если вы хотите последовательно делить целые числа, содержащиеся в итерируемом в Python, functools.reduce может сделать это очень эффективно:
>>> from functools import reduce
>>> reduce(lambda x,y: x/y, [81,9,3])
3.0
>>>
Функция reduce принимает функцию и повторяется в качестве аргументов. Он передает (в данном случае) 81 и 9 из итерируемых в качестве входных данных x,y в лямбда-функцию. Затем он принимает результат этой операции и следующее значение в итерации (в данном случае 3) и передает их на входы x,y для лямбда-функции. Результат тот же, что и при выполнении (81 / 9) / 3
Ответ №2:
numlist = [int(num) for num in numlist]
следует заменить на numlist = list(map(int,numlist))
, потому что вы никогда не должны связываться с повторяемым, которое вы повторяете.
Во-вторых, ваш последний цикл for для выполнения деления неверен. Вместо этого попробуйте вот это.
nextNum = numlist[1]
for i in range(len(newList)-1):
nextNum = newList[i] / nextNum
все вместе.
numlist = [ 81, 9, 3]
newList = [int(num) for num in numlist]
nextNum = numlist[1]
for i in range(len(newList)-1):
nextNum = newList[i] / nextNum
print(nextNum)
из
1
Ответ №3:
Проверь свою математику. Правильный ответ-только 3. Кроме того, какой бы код вы ни опубликовали, он даже не пытается выполнить последовательное деление, вы просто возвращаете последний элемент своего списка, который в данном случае оказался 3.
Простым способом выполнения последовательного деления было бы:
numlist = [ 81, 9, 3]
res = numlist[0]
for num in numlist[1:]:
res = res/num
print(res)
Из:
3.0