0
def main():
    section = 'A'
    while section:
        section = (input('What section are you inputing ticket numbers for? '))
        if section in ('a', 'A') :
            limit = 300
            cost = 20
            ticketSold = getTickets(section, limit)
            sectionACost = calcIncome(ticketSold, cost)
        elif section in ('b', 'B'):
            limit = 500
            cost = 15
            ticketSold = getTickets(section, limit)
            sectionBCost = calcIncome(ticketSold, cost)
        elif section in ('c', 'C'):
            limit = 200
            cost = 10
            ticketSold = getTickets(section, limit)
            sectionBCost = calcIncome(ticketSold, cost)
    displayTotals()



def getTickets(section, limit):
    ticketSold = int(input('How many tickets were sold? '))
    return int(ticketSold)
    if ticketsValid(ticketSold, limit):
         return ticketsValid

def ticketsValid(ticketSold, limit):
    if ticketSold <= limit:
        status = True
    else:
        status = False
    return status

def calcIncome(ticketSold, cost):
    sectionIncome = ticketSold * cost
    return sectionIncome

 def displayTotals():
     print('Section A generated {}'.format(sectionACost))
    print('Section B generated {}'.format(sectionBCost))
    print('Section C generated {}'.format(sectionCCost))
    totalRevenue = sectionACost + sectionBCost + sectionCCost
    print('The total revenue is {}'(totalRevenue))


main()

我现在的问题是循环没有退出以显示总数

附加问题要求:

• 创建一个主模块作为您的程序启动模块

• 在主模块中使用本地命名常量来获取座位成本和部分座位限制,这些常量将传递给以下几点所描述的模块和功能。

• 尽管问题中有三个座位区,但将创建一组通用模块和函数,用于基于传递的参数的任何给定部分。这些函数的一般逻辑描述如下:

o 包括输入函数 (getTickets),它将给定部分的部分字母和座位限制作为参数。返回给定部分的票数。这个函数应该只返回有效数量的票;应该从此函数调用验证函数ticketValid。

o 包括验证函数 (ticketsValid),它将每节售出的门票和每节的座位限制作为传递的参数。返回一个布尔值,指示为给定部分出售的通过票是否在有效范围内。此验证函数将从先前定义的 getTickets 函数中调用。

o 包括收入计算函数(calcIncome),它将售票和座位成本作为传递的参数,并返回该部分产生的收入。

• 请务必使用currencyFormat

4

1 回答 1

1

在我解决您的主要问题之前,此代码中存在一些问题:

def main():  
    section = (input('What section are you inputing ticket numbers for? '))
    if section == 'a' or 'A': # You mean if section in 'Aa':
        limit = 300
        cost = 20
    if section == 'b' or 'B': # You mean elif section in 'Bb':
        limit = 500
        cost = 15
    if section == 'c' or 'C': # You mean elif section in 'Cc':
        limit = 200
        cost = 10
    ticketSold = getTickets(section, limit)
    calcIncome(ticketSold, cost)

def getTickets(section, limit): # Doesn't actually use section.
    ticketSold = int(input('How many tickets were sold? '))
    return int(ticketSold) # Everything after this is dead code.
    if ticketsValid(ticketSold, limit): # Even if this did get called, 
        return ticketsValid # What should it return if the tickets aren't valid? 0?

既然我们已经解决了这个问题,让我们解决提出的问题:

显示每个部分的产生收入以及剧院总收入。

当前编写代码的方式很简单,因为您只调用main一次,并且 main 只处理部分。答案总是0针对除一个部分之外的所有部分。

但是让我们看看如果我们假设您main连续调用直到满足某些条件会发生什么:

def main():
    while section:
        section = (input('What section are you inputing ticket numbers for?'))
        if section in 'Aa':
            limit = 300
            cost = 20
    elif section in 'Bb':
        limit = 500
        cost = 15
    if section in 'Cc':
        limit = 200
        cost = 10
    ticketSold = getTickets(section, limit)
    calcIncome(ticketSold, cost)

好吧,我们可能会看到一些相当复杂的解决方案,但基于这段代码,我将假设最简单的事情:每个部分一个变量。我们可以使用全局名称……</p>

section_a_cost = 0
section_b_cost = 0
section_c_cost = 0

我们需要一个函数来显示最终总数:

def displayTotals():
    '''display the totals'''
    print('Section A generated {}'.format(section_a_cost)
    print('Section B generated {}' …) # I leave the rest to you.
    # How do we generate the total for the theater?

def main():
    section = 'A' # whatever, just to get us started
    while section:
        section = input('What section are you inputing ticket numbers for? ')
        if section in 'Aa':
            limit = 300
            cost = 20
            ticketSold = getTickets(section, limit)
            section_a_cost += calcIncome(ticketSold, cost)
        elif section in 'Bb':
            limit = 500
            cost = 15
            ticketSold = getTickets(section, limit)
            section_b_cost += calcIncome(ticketSold, cost)
        elif …
            …
    displayTotals()

(旁白:如果不清楚,我的目标并不是解决现实世界问题的最佳解决方案——我正在假设 OP 在课程作业中的位置,并尽量不要通过使用复杂的数据跳得太远结构或聚合器。我也试图不给出完整的答案,而是以如何回答家庭作业问题的方式回答。)

于 2013-10-22T02:25:16.010 回答