使用函数来简化c0de?

时间:2018-09-11 18:05:59

标签: python function

  

使用函数简化以下代码。

salary1 = float(input("Enter previous salary"))
benefits1 = float(input("Enter previous benefits"))
bonus1 = float(input("Enter previous bonus"))
salary2 = float(input("Enter new salary"))
benefits2 = float(input("Enter new benefits"))
bonus2 = float(input("Enter new bonus"))
if salary2 > salary1:
    salaryincrease = salary2 - salary1
else:
    salaryincrease = 0
if benefits2 > benefits1:
    benefitsincrease = benefits2 - benefits1
else:
    benefitsincrease = 0
if bonus2 > bonus1:
    bonusincrease = bonus2 - bonus1
else:
    bonusincrease = 0

https://guidebookstgc.snagfilms.com/9151_ComputerScience.pdf第102页

老实说,我不知道我该怎么做。

有人可以指出看似明显的东西吗?

5 个答案:

答案 0 :(得分:2)

这似乎是一个作业问题,但例如:

 $.ajax({url: 'http://url/columnutil.jsp',
            data: {somedata:"hello!"}});

然后您将其称为:

def determine_increase(num1, num2):
    if num2 > num1:
        return num2 - num1
    else:
        return 0

这采用了您重复执行的逻辑并将其浓缩为一个功能,因此,如果您说要增加一定的百分比,则只需修改一个功能,而只需修改一个功能即可,而不必修改所有3个实例原始代码。

答案 1 :(得分:2)

这里是编写处理用户输入的函数的示例。实际上,它在一个函数中处理所有这些问题。

def get_floats(*names):
    return (float(input("Enter %s: " % name)) for name in names)

salary1, benefits1, bonus1, salary2, benefits2, bonus2 = get_floats(
     "previous salary", "previous benefits", "previous bonus",
     "new salary", "new benefits", "new bonus")

在这里,我们取出了原始行之间所有相同的部分(包括提示字符串的部分!),并将它们放入新函数中。这里几乎没有冗余。

答案 2 :(得分:1)

您需要寻找图案。在代码中一致地重复的事情。不要看特定的变量名,而是它们在代码中的相对位置以及如何使用它们。

我将在这里简单查找的区域之一是if-else语句。

答案 3 :(得分:1)

您还可以通过使用预定义的函数并用它们替换条件来简化逻辑:

salaryincrease = max(0, salary2 - salary1)
bonusincrease  = max(0, bonus2  - bonus1)  
benefitsincrease = max(0, benefits2-benefits1) 

这是if的有效替代者-max()是内置的:max(...)

它不像@hgoscenski答案那样明确,但是使用函数可以有效简化。

答案 4 :(得分:0)

此练习的目的是寻找重复的模式并将其抽象为自己的功能。

选中此块:

if salary2 > salary1:
    salaryincrease = salary2 - salary1
else:
    salaryincrease = 0

,此块:

if benefits2 > benefits1:
    benefitsincrease = benefits2 - benefits1
else:
    benefitsincrease = 0

和此块:

if bonus2 > bonus1:
    bonusincrease = bonus2 - bonus1
else:
    bonusincrease = 0

您认为函数中可以抽象一个模式吗?