处理函数(基本Python)

2024-06-16 10:49:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我是编程的新手(python),最近做了一些功课,但我真的被这个简单的函数实现卡住了。本质上,我必须请求在main()中执行的用户输入,然后定义另一个函数,用分配给用户输入的变量来计算。怠速运行时,输出0。任何帮助或提示都会非常有帮助,谢谢。以下是我目前掌握的代码:

#global variables
firstClass = 0.0
businessClass = 0.0
economyClass = 0.0
soldFirstClass = 0.0
soldBusinessClass = 0.0
soldEconomyClass = 0.0
totalFC = 0.0
totalBC = 0.0
totalEC = 0.0

######################################
###########MAIN FUNCTION#############
######################################

def main():

    print('***WELCOME***\n')
    print('***Please ENTER the Airlines ticket prices***\n')

    firstClass = float(input ('Please ENTER a ticket price for First Class: '))
    businessClass = float(input ('Please ENTER a ticket price for Business Class: '))
    economyClass = float(input ('Please ENTER a ticket price for Economy Class: '))

    print('\nThank You\n')

    soldFirstClass = float(input ('Please ENTER the number of sold tickets for First Class: '))
    soldBusinessClass = float(input ('Please ENTER the number of sold tickets for Business Class: '))
    soldEconomyClass = float(input ('Please ENTER the number of sold tickets for Economy Class: '))

    calcClass()

def calcClass():

    global firstClass, soldFirstClass, businessClass, soldBusinessClass, economyClass, soldEconomyClass

    totalFC = firstClass*soldFirstClass
    print('Total money earned for First Class = %0.0f ') % totalFC
    totalBC = businessClass*soldBusinessClass
    print('Total money earned for Business Class = %0.0f ') % totalBC
    totalEC = economyClass*soldEconomyClass
    print('Total money earned for Economy Class = %0.0f ') % totalEC

main()

Tags: theforinputfloatticketclassprintenter
3条回答

您的main()正在分配给局部变量。将global …语句从calcClass()复制到main()。在

尽管如此,使用全局变量来传递信息几乎总是一个坏主意。应将它们作为参数传递:

# No globals; just go straight into main
def main():
    print('***WELCOME***\n')
    print('***Please ENTER the Airlines ticket prices***\n')

    firstClass = float(input ('Please ENTER a ticket price for First Class: '))
    ⋮
    calcClass(firstClass, soldFirstClass, businessClass, soldBusinessClass, economyClass, soldEconomyClass)

def calcClass(firstClass, soldFirstClass, businessClass, soldBusinessClass, economyClass, soldEconomyClass):
    totalFC = firstClass*soldFirstClass
    print('Total money earned for First Class = %0.0f ') % totalFC
    ⋮

不要使用全局变量。相反,让calcClass获取参数,如下所示:

totalFC = 0.0
totalBC = 0.0
totalEC = 0.0

def main():
    print('***WELCOME***\n')
    print('***Please ENTER the Airlines ticket prices***\n')

    firstClass = float(input ('Please ENTER a ticket price for First Class: '))
    businessClass = float(input ('Please ENTER a ticket price for Business Class: '))
    economyClass = float(input ('Please ENTER a ticket price for Economy Class: '))

    print('\nThank You\n')

    soldFirstClass = float(input ('Please ENTER the number of sold tickets for First Class: '))
    soldBusinessClass = float(input ('Please ENTER the number of sold tickets for Business Class: '))
    soldEconomyClass = float(input ('Please ENTER the number of sold tickets for Economy Class: '))

    calcClass(firstClass, businessClass, economyClass, soldFirstClass, soldBusinessClass, soldEconomyClass)

def calcClass(firstClass, businessClass, economyClass, soldFirstClass, soldBusinessClass, soldEconomyClass):
    totalFC = firstClass*soldFirstClass
    print('Total money earned for First Class = %0.0f ') % totalFC
    totalBC = businessClass*soldBusinessClass
    print('Total money earned for Business Class = %0.0f ') % totalBC
    totalEC = economyClass*soldEconomyClass
    print('Total money earned for Economy Class = %0.0f ') % totalEC

if __name__ == '__main__':
    main()

代码中的第一个问题是反向使用global(这实际上是python中更令人困惑的事情之一)。在

你要使用全局变量来声明全局变量。只要不写入与全局变量同名的变量,就可以从该全局变量中读取,而不必使用全局声明。在

分配两个全局变量是正确的,你可以相应地添加全局变量。在

然而,要做的是消除任何要写入的全局变量。相反,向函数添加参数,并使用参数在函数之间传递值。在

相关问题 更多 >