Python 互联网服务提供商计划

Python 互联网服务提供商计划,python,Python,我正在写一个互联网服务提供商程序。我对代码的问题是它没有正确打印每月账单 例如: 如果用户输入包A和使用的小时数,则表示为9小时 当调用函数printBill时,它应该打印9.95 我的问题:如何将数据从getPackage调用到函数printBill #Bill for Package A def getPackageA(hours): if (hours < 10): return 9.95 #Cost of Package A else:

我正在写一个互联网服务提供商程序。我对代码的问题是它没有正确打印每月账单

例如: 如果用户输入包A和使用的小时数,则表示为9小时 当调用函数printBill时,它应该打印9.95

我的问题:如何将数据从getPackage调用到函数printBill

#Bill for Package A
def getPackageA(hours):
    if (hours < 10):
        return 9.95 #Cost of Package A
    else:
        return (hours-10)*2 + 9.95

#Bill for Package B
def getPackageB(hours):
    if (hours < 20):
        return 13.95 #Cost of Package B
    else:
        return (hours - 20) + 13.95

#Bill for Package C
def getPackageC():
    return 19.95 #Cost of Package C

#Print Bill and savings
def printBill(bill):
    if (bill != 0):
        print("Your monthly bill is $", format(bill, '.2f'), 
        sep = '')
        getSavings(bill)
        print()
        print()
    else:
        print()


#Checks and display savings if applicable
def getSavings(bill):
    if(bill > getPackageA(hours)):
        print("If you had package A, you'd save $",\
            format(bill - getPackageA(hours),'.2f'), sep = 
            '')
    if(bill > getPackageB(hours)):
        print("If you had package B, you'd save $",\
            format(bill - getPackageB(hours),'.2f'), sep = 
            '')
    if(bill > getPackageC()):
        print("If you had package C, you'd save $",\
              format(bill - getPackageC(), '.2f'), sep = '')

def main():
    bill = 1
    #Asks user to enter choice of package and hours used
    packageChoice = str(input("Enter package purchased (A, 
    B, or C): "))
    hours = int(input("Enter the number of hours used: "))

    if(packageChoice == 'A' or packageChoice == 'a'):
        getPackageA(hours)
    elif (packageChoice == 'B' or packageChoice == 'b'):
        getPackageB(hours)
    elif (packageChoice == 'C' or packageChoice == 'c'):
        getPackageC()
    else:
        print("Package choice must be A, B, or C.")

    printBill(bill)

main()

可以将多个参数传递给函数

def printBill(bill)
变成:

def printBill(bill,hours):
你把它叫做:

printBill(bill,hours)

您还必须以同样的方式将其传递给getSavings。

您需要将时间传递给需要使用它的每个函数,而且当您返回某个东西时,它需要一个可以返回的地方。你是说如果小时数小于10,返回9.95,但是当你说返回时,它会把代码发送回调用它的地方,你没有把它赋给一个变量,所以比尔默认为1美元。下面是更新后的代码

    #Bill for Package A
def getPackageA(hours):
    if hours < 10:
        return 9.95 #Cost of Package A
    else:
        return (hours-10)*2 + 9.95


#Bill for Package B
def getPackageB(hours):
    if hours < 20:
        return 13.95 #Cost of Package B
    else:
        return (hours - 20) + 13.95


#Bill for Package C
def getPackageC():
    return 19.95 #Cost of Package C


#Print Bill and savings
def printBill(bill, hours):
    if (bill != 0):
        print("Your monthly bill is $", format(bill, '.2f'), sep='')
        getSavings(bill, hours)
        print('\n')


#Checks and display savings if applicable
def getSavings(bill, hours):
    if bill > getPackageA(hours):
        print("If you had package A, you'd save $",\
            format(bill - getPackageA(hours),'.2f'), sep='')
    if bill > getPackageB(hours):
        print("If you had package B, you'd save $",\
            format(bill - getPackageB(hours),'.2f'), sep='')
    if bill > getPackageC():
        print("If you had package C, you'd save $",\
              format(bill - getPackageC(), '.2f'), sep='')


def main():
    bill = 1
    #Asks user to enter choice of package and hours used
    packageChoice = str(input("Enter package purchased (A, B, or C): "))
    hours = int(input("Enter the number of hours used: "))

    if packageChoice in ('a', 'A') :
        bill = getPackageA(hours)
    elif packageChoice.lower() == 'b':
        bill = getPackageB(hours)
    elif packageChoice.upper() == 'C':
        bill = getPackageC()
    else:
        print("Package choice must be A, B, or C.")

    printBill(bill, hours)


main()

我还编辑了你的主要功能,向你展示了检查回复的不同方法。您也不需要在IF语句中用Python的括号括起来。

要回答您的问题,您只需执行以下操作:

bill = 1
bill += getPackage()  # call function and add return value to total bill
printBill(bill)

getSavingsbill中包含可变小时数,但您尚未定义小时数是多少?如下面的mentioend所示,将需要的所有变量传递到函数def myfuncinput1、input2、input3、,