【问题标题】:Function is not executing [closed]函数未执行[关闭]
【发布时间】:2014-05-04 07:51:12
【问题描述】:

我是 Python 新手,所以我在代码中遇到了一些问题。我有一些功能,但 tota_additional_bonus()tota_bonus() 不起作用,因为它们没有显示 print 值。

import sys
def compute(sale,persent):      #function to compute bonus
    return(sale*persent/100)
while (1):
    try:
        print ("Enter Sales Price For Toyata $")
        toyota=int(input())
        print ("Enter Sales Price For Nissan $")
        nissan=int(input())
        print ("Enter Sales Price For Ford $")
        ford=int(input())

        print ("Enter Number Of Sales For Toyata in 2014")
        to=int(input())
        print ("Enter Number of Sales For Nissan in 2014")
        ni=int(input())
        print ("Enter Number Of Sales For Ford in 2014")
        fo=int(input())



    except ValueError:
        print ("Enter An Integer")
        sys.exit()

    sales= ((toyota*to)+(nissan*ni)+(ford*fo))         #calculating total sales of abc



    ct=(toyota*to)             # total sells toyata
    cn=(nissan*ni)             # total sells nissan
    cf=(ford*fo)               # total sells toyata

    print ("Contribution Of Toyota $",ct,"in Total Sales")
    print ("Contribution Of Nissan $",cn,"in Total Sales")
    print ("Contribution Of Ford $",cf,"in Total Sales")
    print ("Total Sales for ABC",sales)

    if sales <= 500000:
        bonus=compute(sales,0.1)

    elif sales >=500001 and sales <=1000000:
        bonus=compute(sales,0.2)+500

    elif sales >=1000001 and sales <=5000000:
        bonus=compute(sales,0.3)+1500

    elif sales >=500001 and sales <=10000000:
        bonus=compute(sales,0.4)+13500
    elif sales >10000000:
        bonus=compute(sales,0.5)+33500

    print ("Total Bonus\n",bonus)       #total bonus

    cty=(ct*bonus)/sales             #bonus contribution toyata
    cny=(cn*bonus)/sales             #bonus contribution nissan
    cfy=(cf*bonus)/sales             #bonus contribution toyata

    print ("Contribution Of Toyota $",cty,"in Total Bonus")
    print ("Contribution Of Nissan $",cny,"in Total Bonus")
    print ("Contribution Of Ford $",cfy,"in Total Bonus")


    print ("Input the Additional bonus for toyota in %")
    x=int(input())
    print ("Input the Additional bonus for Nissan in %")
    y=int(input())
    print ("Input the Additional bonus for Ford in %")
    z=int(input())


    def additionalbonus(bonus,extra):       #function to calculate additional bonus
        return (bonus*extra)
    xn= additionalbonus(bonus,x)
    yn= additionalbonus(bonus,y)
    zn= additionalbonus(bonus,z)


    print("Additional Bonus for toyota",xn)
    print("Additional Bonus for nissan",yn)
    print("Additional Bonus for ford",zn)


    def tota_additional_bonus(xn,yn,zn):       #calculating total additional bonus 
        t_n = xn +yn + zn
        print ("Total Adiitional Bonus is",t_n)

    def tota_bonus(bonus,t_n):                 #calculating total bonus distributed by ABC
        bonus_n=bonus+t_n
        print ("Total Bonus distributed is",bonus_n)

    print ("Enter Y to Calculate for another Year or N to Exit")
    var= input()

    if var == 'y':
        pass
    elif var == 'n':
        exit()


input()

【问题讨论】:

  • 那是很多代码。你能把它简化成一个最小的例子吗?
  • 另外,请查看缩进 - 这在 Python 中很重要。如果现在你的代码真的已经布置好了,难怪你会遇到麻烦。
  • @user3600866 好吧,您正在定义函数,但从未真正调用它们。如果您只想执行其中的代码,请不要将这些行放在方法中。如果你想要方法中的代码,你需要在定义方法之后调用方法。
  • @user3600866 我强烈建议您在运行后将此代码交给codereview.stackexchange.com
  • @user3600866 “仍然 [原文如此] 没有打印任何东西”。你是什​​么意思“仍然”?你做了什么改变?编辑您的问题并(再次)请查看代码格式

标签: python function python-3.x


【解决方案1】:

在您的主 while 循环的末尾:

print("Additional Bonus for ford",zn)


def tota_additional_bonus(xn,yn,zn):       #calculating total additional bonus 
    t_n = xn +yn + zn
    print ("Total Adiitional Bonus is",t_n)

def tota_bonus(bonus,t_n):                 #calculating total bonus distributed by ABC
    bonus_n=bonus+t_n
    print ("Total Bonus distributed is",bonus_n)

print ("Enter Y to Calculate for another Year or N to Exit")

定义两个函数,print 是它们参数的总和,但从未真正调用它们。此外,似乎第二个函数需要一个在第一个函数中计算但未返回的值。

请尝试:

print("Additional Bonus for ford",zn)


def tota_additional_bonus(xn,yn,zn): # define function 
    t_n = xn +yn + zn
    print ("Total Adiitional Bonus is",t_n)
    return t_n # return result

t_n = tota_additional_bonus(xn, yn, zn) # call function and assign result

def tota_bonus(bonus,t_n): # define function 
    bonus_n=bonus+t_n
    print ("Total Bonus distributed is",bonus_n)

tota_bonus(bonus, t_n) # call function 

print ("Enter Y to Calculate for another Year or N to Exit")

【讨论】:

  • 没问题。您的代码中仍然存在很多问题,因此我仍然建议您进行代码审查。您应该在那里编辑您的问题,以提供完整的、有效的代码、正确的格式,并添加有关您正在尝试做什么的信息;社区不接受未经介绍的代码转储。尝试阅读他们的帮助中心和一些现有问题,以了解该网站。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-18
  • 2021-08-05
  • 1970-01-01
相关资源
最近更新 更多