基本功能帮助-Python

cmimm101

我对Python还是很陌生,我正忙于弄清楚这些讨厌的函数是如何工作的。我正在编写的程序应该可以解决三角形的问题,但实际上我无法它可以将局部变量返回给其他函数。任何帮助将不胜感激!

# Area of a triangle

base = 0
height = 0
area = 0

def inData():
    base = float(raw_input("Base:"))
    height = float(raw_input("Height:"))
    return base
    return height

def triangle(b,h):
    area = b / 2 * h
    return area

if __name__ == '__main__':
    inData()
    triangle(base, height)
    print "The area of a triangle of base", base, "and height" , height, "will be", area
war

我在您的代码中看到了很多问题和误解。让我看看我是否可以从头开始,并尝试为您传达完成这些功能的正确方法。最后,我们将提供您的代码的有效版本。:)

注意:您不必在Python中提前声明函数-它本身就是这样做的!因此,不需要base, height, area顶部!

功能

简而言之,功能是捆绑在一起运行的命令集。你知道这个。不过,您缺少的是参数和参数以及return vs print的概念

参数与参数定义函数时,您要设置自己希望将来执行的操作,并且随时随地调用。就像f(x)数学中的任何函数一样,您需要一个方程,该方程可以与您输入的任何内容一起使用。对于f(x)x是您的输入。

在编程中,这称为参数因此,当您使用Python编写代码时:

def Function(x):
    y = x*x
    return y

您已定义x为参数。现在,参数是您放入函数中参数所在的值。在代数中,适用的想法是定义一个变量知道这一点后,当您实际使用该功能时:

Function(2)

您会回来的,因为您说了4 run Function(x) where x = 2

这是“参数与参数”的概念这非常有用,因为您并不总是希望在功能内部要求用户输入您的功能越直接,它所能做的就越少。例如,有时您想使用相同的函数在后台进行数学运算。raw_input()如果您希望该过程在后台独立运行,您将不会很好,对吗?

这是Arguments vs Parameters的真实值

退货与打印

与不使用相同,raw_input()因为它太直接了,您要避免使用printreturn而是改用。我知道您没有print在这里使用,但是您误解了它的工作原理,return我认为同样的教训适用。

这是一个示例:您有两个功能。

def Function1(x,y):
    z = x*y
    print z

def Function2(x,y):
    z = x*y
    return z

函数1打印 z,这意味着,无论您要执行什么操作,它都会始终显示print z在控制台上,即使您只是想进行数学计算也是如此。

同时,函数2returns z表示将其值返回z给被调用的程序。还值得注意的是,一旦函数上线return,它将停止进一步运行函数。除此之外,没有理由编写代码,因为不再运行该函数,除非您跳过了更高级的代码return(例如,一条if语句)。

为什么在return概念上如此重要?

因为在您的原始代码中运行了该函数inData(),然后,您不仅运行了return两次,而且在您的if语句中,甚至不使用inData返回值,而只是告诉程序运行 inData()

当函数返回值时,您必须将其分配给某些对象。以任何随机编程语言中的简单数学为例。代码:

 x = sqrt(4)
 print x

将输出2,因为在函数末尾sqrt(),它将返回其答案。在这里,我们分配了一个xto的变量确实是这样的:sqrt(4)return

 sqrt(4)

也会打印2到控制台,这是由于语言开发人员的防呆设计,实际上,该语言假定您要打印代码。您不是在告诉它这样做。

因此,当您运行代码行时:

inData()
triangle(base, height)

您基本上是在说:

run the function inData()
run the function triangle(base, height)

当由于他们的原因时returns,您需要说:

set <variable1> equal to the return of inData()
set <variable2> equal to the return of triangle(base,height)

(这里需要做更多的简化,但是我们稍后会介绍)。

最后一件事return在编程中,写:

x = 1+1
return x

return 1+1完成同一件事时。因此,没有必要界定一下area三角形会和随后 returnarea只需告诉函数returnarea在同一行代码中计算出的内容即可!

我失去了你吗?还在我这儿?好!

简化代码

您的代码有一些结构性问题,尽管它可能会起作用,但会使查看它的更多经验丰富的程序员感到困惑。当我们在这里时,为什么不让我知道您是否可以理解这是一个更好的做法。

在您的代码中,您已经编写了(摘要形式)

variables defined that you don't need
def FunctionThatGathersData()
def FunctionThatDoesTheMath(x,y)
if (condition)
     FunctionThatGathersData()
     FunctionThatDoesTheMath(x,y)
     print out the results

这种结构会使具有更多经验的程序员感到困惑。他可能会问以下问题:

  • 什么?
  • 你为什么这样退货?
  • 为什么要定义变量?
  • 你为什么不合并FunctionThatGathersDataFunctionThatDoesTheMath

其中一些原因已在上面阐明,但让我们来看最后两个问题。

为什么要定义变量?:一方面,Python在执行期间处理变量。因此,您不必提前定义它们,但是您可以定义,其优点如下:

x = 0
def Function()
    x = 5
    y = 10

查看此代码,您可能想知道为什么x要定义。简单的答案是,Python将看到您已经有一个x,因此,当您运行时Function(),您希望使用函数中的工作将其覆盖y另一方面,由于没有先前的定义,因此将创建一个新变量。

但是,在您的函数中,我们不需要任何这些,因为您的答案以最佳形式出现,无需依赖x函数外部。

为什么我们不能仅使用我们了解的有关参数,参数和返回值的方法将两个函数组合在一起提示:我们可以!

这是一个新的代码片段,您现在应该可以阅读和理解。将您的内容清除一下,看看是否有意义。在其中,您将:

  • 定义你的功能 DoTheMathAndThenGiveMeTheValueBack
  • 决定是否 __name__ == '__main__'
  • 提供您的值(将它们放入变量中)
  • 将这些变量作为参数传递给函数
  • 告诉程序打印baseheight,然后area根据函数的返回。

代码

def CalculateTriangleArea(b,h):
    return b / 2 * h

if __name__ == '__main__':
    base = float(raw_input("Base:"))
    height = float(raw_input("Height:"))
    area = CalculateTriangleArea(base,height)
    print "The area of a triangle of base", base, "and height", height, "will be", area

如果你不神交此,请评论并问我了,因为我记得这个挣扎,知道您有什么误会。


哦! 而且我忘了向您提及如何处理多个问题returns

如果您需要在一个函数中返回多个值,则可以通过array来返回tuple这只是您存储的值的列表。您可以在访问任何项目arraytuple通过包括index在形式结束[i],其中第一项是在[0]例如:

def Function():
    string1 = "nobody"
    string2 = "expects"
    string3 = "the"
    string4 = "spanish"
    string5 = "inquisition"
    return string1, string2, string3, string4, string5

print Function()[0]
print Function()[1]
print Function()[2]
print Function()[3]
print Function()[4]
print Function() #prints the whole tuple!

会给你:

nobody
expects
the
spanish
inquisition
('nobody', 'expects', 'the', 'spanish', 'inquisition')

理解?:)

欲了解更多动手在Python的工作,尝试这个惊人的Python教程。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

获取python基本功能列表

来自分类Dev

Python 3:URLlib模块基本功能不起作用

来自分类Dev

JavaScript帮助在单击按钮时运行基本功能

来自分类Dev

Haskell基本功能

来自分类Dev

cljc文件的基本功能

来自分类Dev

在Haskell中创建基本功能

来自分类Dev

对象返回中的基本功能

来自分类Dev

JavaScript使用变量的基本功能

来自分类Dev

基本功能的奇怪行为

来自分类Dev

AngularJS中的基本功能

来自分类Dev

对象返回中的基本功能

来自分类Dev

C ++需要基本功能的指导

来自分类Dev

JavaScript:后退/前进的基本功能

来自分类Dev

Unity基本功能说明

来自分类Dev

基本功能N cov / contravariance

来自分类Dev

MATLAB中的基本功能

来自分类Dev

球拍基本功能列表

来自分类Dev

mangoose 加入 mangodb 的基本功能?

来自分类常见问题

Laravel 4帮助程序和基本功能的最佳实践?

来自分类Dev

该功能是否覆盖基本功能?

来自分类Dev

与基本功能同名的球拍宏功能

来自分类Dev

WordPress功能可为管理面板创建基本功能

来自分类Dev

Gradle项目同步失败的基本功能

来自分类Dev

R的基本功能中的表观异常

来自分类Dev

如果我包含jQuery,则找不到基本功能

来自分类Dev

哪些R版本包含哪些基本功能

来自分类Dev

如何使用“ CImg”及其基本功能

来自分类Dev

使用Matlab中的基本功能重建图像

来自分类Dev

包含基本功能的特定类型的集合类