1

关于如何修复我的代码的指针?此代码要求用户输入售出的门票数量,并返回使用函数产生的收入

我不确定如何调用每个函数

secA = 20
secB = 15
secC = 10

def main():
    print("The income generated from all sections is: ", total)
def getTickets(A,B,C):
    sectionA = int(input("Please enter the number of tickets sold in section A: ")
    sectionB = int(input("Please enter the number of tickets sold in section B: ")
    sectionC = int(input("Please enter the number of tickets sold in section C: ")

    def ticketsValid():
        while sectionA > 300:
                print("ERROR: Section A has a limit of 300 seats")
        while sectionB > 500:
                print("ERROR: Section B has a limit of 500 seats")
        while sectionC > 200:
                print("ERROR: Section C has a limit of 200 seats")

    def calcIncome():
        total = secA * sectionA + secB * sectionB + secC * sectionC
        print("The income generated is $", format(total, '.2f'))   
main()
4

2 回答 2

3

要回答您的第一个问题:调用所有函数,您需要将函数名称放入main()函数中。但是,您还有其他几个错误,因此我决定逐步引导您完成该程序。

首先,我们设定价格:

secA = 20
secB = 15
secC = 10

这是第一个功能,getTickets()

def getTickets():

    global A
    A = int(input("Please enter the number of tickets sold in section A: "))

    global B
    B =int(input("Please enter the number of tickets sold in section B: "))

    global C
    C =int(input("Please enter the number of tickets sold in section C: "))

global在我使用变量之前注意这个词。这告诉计算机这个变量可以在任何地方使用。接下来,注意双括号——因为int()input()都是函数,所以我们需要通过这样做来证明这一点。

我修复了你的ticketsValid()函数代码。通常,嵌套函数不是一个好主意,所以这与上面的代码处于相同的缩进级别。

def ticketsValid(A,B,C):
    while A > 300 or A < 0:
        print("ERROR: Section A has a limit of 300 seats\n")
        A = int(input("Please enter the number of tickets sold in section A: "))
    while B > 500 or B < 0:
        print("ERROR: Section B has a limit of 500 seats")
        B =int(input("Please enter the number of tickets sold in section B: "))
    while C > 200 or C < 0:
        print("ERROR: Section C has a limit of 200 seats")
        C =int(input("Please enter the number of tickets sold in section C: "))

这从上面获取变量,并检查它们是否有效。请注意,我添加了一张负数支票——您不能出售负数票。

然后我们来calcIncome(A,B,C)

def calcIncome(A, B, C):
    total = A * secA + B * secB + C * secC
    print ("The income generated is $%d" % (total))

首先,我们将部分乘以设定价格来计算总数。然后,我们打印它。

最后,我们需要调用函数。我将您的想法用于main()函数,该函数使用其他函数。它看起来像这样。

def main():
    getTickets()
    ticketsValid(A,B,C)
    calcIncome(A, B, C)

它只是在运行时以正确的顺序调用其他函数。

最后,我们main()通过键入以下内容调用该函数:

main()

我希望这回答了你的问题。如果没有,请随时发表评论。如果是这样,请检查我的答案旁边的绿色复选标记。

于 2013-03-10T21:37:00.873 回答
1

如果您只想知道如何使用嵌套函数:

def f():
    def g(): #this defines a function but does not call it
        print "run g"
    g() # this calls g.

通常,嵌套函数不应该在其父函数之外可用。由于使用嵌套函数的目的是该函数仅帮助其父函数做事。如果您想在外面使用,请考虑将其定义为新功能。

在您的情况下,您需要考虑如何将代码分成几部分。
如果我是你,我会使用 getTickets() 来获取门票。
ticketValid 很好,但我会让它返回一个布尔值。calcIncome 将返回总收入。所以一般的设计是这样的:

def main():
    (A, B, C) = getTickets()
    if(ticketsValid(A, B, C)):
        income = calcIncome(A, B, C)
        print("The income generated from all sections is: ", income)

def getTickets():......
def ticketsValid(A, B, C):......
def calcIncome(A, B, C):......

我认为这将是一个更好的设计。

于 2013-03-10T21:57:11.933 回答