首页 > 解决方案 > 如何迭代不同函数的输出?

问题描述

我正在尝试创建一个二项式展开计算器(我的第一个编码项目之一,所以我的代码可能有点不确定)并且我想出了计算每个项 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()

标签: pythonfunctiontkinter

解决方案


好吧,从外观上看,您只是在所有 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 函数产生元组而不是单个值


推荐阅读