python - 如何迭代不同函数的输出?
问题描述
我正在尝试创建一个二项式展开计算器(我的第一个编码项目之一,所以我的代码可能有点不确定)并且我想出了计算每个项 a、b 和 x 的函数(in (a + bx) ^n) 分开。
我不确定如何将 ExpandA 的输出与 ExpandB 的输出相乘,同时遍历列表以打印扩展中的每个术语。
任何提示和提示将不胜感激!
二项式展开计算器
def expansion():
def ExpandA(): # Calculates a^n, a^(n-1), a^(n-2)) ... a^0
for i in range (entry_n,-1,-1): #Start,end,step
#end at entry_n.get()-1 so computer can calculate a^0
print(entry_a**i)
def ExpandB(): # Calculates b^0, b^1, b^2 ... b^n
for i in range(0,(int(entry_n)+1),1):
print(entry_b**i)
def XValues():# Prints x^0, x^1, x^2 ... x^n
for i in range(0,int(entry_n+1),1):
print("X^",i)
ExpandA()
ExpandB()
XValues()
print("Welcome to the Binomial Expansion Calculator!")
print("Please enter your inputs in the form (a + bx ^n).")
entry_a = int(input("Please enter your 'a' value."))
entry_b = int(input("Please add your 'b' value."))
entry_n = int(input("Please enter your 'n' value."))
expansion()
解决方案
好吧,从外观上看,您只是在所有 3 个函数的范围内打印数字。您可能希望返回或产生这些值,而不是打印它们。
def expandA(): # Calculates a^n, a^(n-1), a^(n-2)) ... a^0
for i in range (entry_n,-1,-1): #Start,end,step
yield entry_a**i
def expandB(): # Calculates b^0, b^1, b^2 ... b^n
for i in range(0,(int(entry_n)+1),1):
yield entry_b**i
def xvalues():# Prints x^0, x^1, x^2 ... x^n
for i in range(0,int(entry_n+1),1):
yield "X^",i
# the following will return generator objects
as = expandA()
bs = expandB()
xs = xvalues()
# so you can access the values like this:
for a, b, x in zip(as, bs, xs):
print("{} + {}{}{}".format(a, b, x[0], x[1]))
请注意,xvalues 函数产生元组而不是单个值
推荐阅读
- file - 目录列表中的 powershell 文件大小总计
- python - Python 和机器人框架在日志中没有 INFO 或 WARN
- c# - 使用 JQuery ajax 在 div 中插入控制器数据作为段落
- python - 如何在 Python 中将相同的字典值组合在一起并计算值?
- android - 如何使用 Alternatives=true 从 Google Maps 路线中找出最短路线?
- powershell - 使用 WindowServerCore 在 Docker 中没有 PowerShell 帮助
- mysql - 如何在三个月的窗口中只保留一行数据并删除其他数据?
- visual-studio - 提取 Visual Studio 2017 产品密钥
- excel - Excel 使用 SUMIF 计算多列的总数
- google-sheets - 谷歌表格;任意范围作为字符串