使用函数简化以下代码。
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页
老实说,我不知道我该怎么做。
有人可以指出看似明显的东西吗?
答案 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
您认为函数中可以抽象一个模式吗?