python - 在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
解决方案
你有两个问题:
首先,我们的函数没有返回值。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
通过用 声明函数参数*
,给定的任何额外参数都将作为列表打包到其中。然后,您可以将参数传递给它而不将它们放入列表中,或者您可以使用另一个*
将列表解压缩为多个参数。
推荐阅读
- beautifulsoup - 如何在beautifulsoup中获取name的值
- linux - 无法在 Manjaro 中连接 MongoDB 服务器,退出代码为 100 时出错
- pine-script - 绘制形状时如何使用 location.absolute 设置 y 坐标?
- mongodb - 猫鼬按地理位置分组
- flutter - 颤振医生抛出错误'curl:(6)无法解析主机:storage.googleapis.com'
- typescript - 如何在`typescript`中的箭头函数上设置`decorator`?
- uml - 在 VS Code 中编写 EPIPE UML
- python - 为什么 %%timeit 在 Jupyter Notebook 中工作正常,但在 Python Shell IDLE 中抛出 SyntaxError?
- java - How does dependency injection work in EJB's following polymorphism
- c - 关于使用 malloc 和 free 指针的建议