首页 > 解决方案 > 在for循环中将多个数字相除

问题描述

试图在 for 循环中除以多个数字,输出是错误的答案

为答案创建了一个变量,在每个 for 循环中,它将使答案等于前一个循环的答案除以 for 循环列表中的整数。

def div(x):
    ans = 0
    for i in x:
        ans = ans / int(i)

b = int(input("How many numbers would you like to " + opt + "?"))
c = range(0,b)
d = list()
for i in c:
    d.append(input("What number would you like to " + opt + "?"))
print(div(d))

如果将 3 个数字输入到列表 (d) 中。我想将这 3 个数字相除并使变量 (ans) 等于商

示例:输入 3 个数字 - 200、10、2

结果:10

脚本的实际结果:0.0

标签: pythonpython-3.x

解决方案


你有两个问题:

首先,我们的函数没有返回值。return ans您可以通过在函数末尾添加来解决此问题。

其次,如果你从 开始ans = 0,除法ans只会得到更多的零。

这是一个解决方案,使用占位符跳过解决方案:

def div(x):
    ans = None
    for i in x:
        if ans is None:
            ans = i
        else:
            ans = ans / int(i)
    return ans

这是一个稍微优雅的替代方案,使用任意参数 list

def div(init, *divisors):
    ans = init
    for x in divisors:
        ans /= x # divide and assign together
    return ans

div(100, 10, 2) # returns 5
div(*[100, 10, 2]) # returns 5

通过用 声明函数参数*,给定的任何额外参数都将作为列表打包到其中。然后,您可以将参数传递给它而不将它们放入列表中,或者您可以使用另一个*将列表解压缩为多个参数。


推荐阅读