如何在函数中声明参数

时间:2013-10-25 14:35:10

标签: python function for-loop

我是Python新手。我不知道这是怎么工作的。

我有这段代码:

def main():
 a=input("Type number")
 e=int(a)
 function2(e);
def function2(e):
 for h in range(e):
  print("X")
main();

写这个错误: 追溯(最近的呼叫最后) 对于范围(e)中的h: NameError:名称'e'未定义

4 个答案:

答案 0 :(得分:2)

这是因为缩进错误,而您忘记在for循环后放置:

def main():
    a = input("Type number")
    e = int(a)
    function2(e)


def function2(e):
    for h in range(e):
        print("X")


main()

此外,python中不需要分号。

答案 1 :(得分:2)

你的问题似乎是一般的一系列误解。您的代码中的错误很简单,但是,让我们看看我是否可以引导您完成一些概念,这样当我向您展示固定代码时,您就完全理解了它。请记住,我希望你已经知道了很多,但我不仅仅是为你写这个答案,而是为了偶然发现这个页面的其他任何初学者。 :)

似乎我们可以涵盖以下主题(每个概念本身都很简单,但你需要完全获取它们才能获得下一个主题):

  • 编程中的变量
  • python中的变量
  • python中的空格
  • 功能:参数与参数
  • 解决方案:修复代码

编程中的变量

您可能知道,变量只是我们为数据提供的标签。在大多数语言中,您必须先声明变量,以便为其分配适当的类型(也就是说,计算机知道它是否是整数 string boolean 等)。因此,您需要以下代码:

int myVariable1 = 3;
string myVariable2 = "hello";
bool myVariable3 = true;

(在某些语言中,您需要声明变量,然后为它们赋值。)

python中的变量

除了许多入门语言之外,Python是动态类型的。这意味着变量(数据上的标签)没有类型,但没有。

这意味着您的代码可能如下所示

 myVariable1 = 3
 myVariable2 = "hello"
 myVariable3 = True

python可以根据分配给变量的数据确定要使用的类型。

(注意:在python中,你不需要;来结束一行,而boolean值是大写的(True,`False))

python中的空格

Python的设计易于阅读。计算机使用语言内的提示((), [], {}, :, ;, etc)来了解正在进行的操作。在Python中,whitespace      )是提示的一部分,或syntax。在大多数语言中,whitespace被忽略,但由于Python不忽略它,它可以用于以一种视觉上令人愉悦的方式格式化您的语言。在C ++中,

function myFunction() {string myString = "wow such learn good job, many doge wow";}

function myFunction() {
string myString = "wow such learn good job, many doge wow";
}

是一样的。您可以看到这可能会让新程序员感到困惑,因为它甚至不会看起来。但在Python中,代码必须看起来像

def myFunction():
    myString = "wow such learn good job, many doge wow"

正是这种统一性使Python对很多人来说更容易使用。

功能:参数与参数

在每一种体面的语言中,功能的使用都至关重要,完全理解它们更为重要。

函数很容易与代数的基本概念相关。函数已经存在于代数中,这就是比较如此简单的原因。

在代数中,函数是包含变量的等式。在功能内部,工作已经准备好完成设置的等式,它只是等着你填补缺失的部分。也就是说,

f(x) = 3 + 2x + x^2

是一个准备好的功能,但它需要你输入x

这在编程中是一样的。我写的时候

def myFunction(x):
    3+2x+x**2

我写的与f(x)完全相同;一个工作方程,取决于给出的信息。

注意:并非所有编程函数都完全按 math 进行操作,有些函数对字符串进行操作,但它们都会改变数据,这就是我的观点。有些功能甚至不需要 输入,因为它们的操作与您正在做的事情无关。在这里,比较有些分歧,但我希望你还在船上。

那么,什么是参数什么是参数

定义函数然后调用函数时:

def myFunction(x): #defining the function f(x)
    3+2x+x**2


print myFunction(3) #calling the function f(x) where x=3

参数在第一行是x参数是您放入函数的定义的变量。

参数是您在调用函数时放入3位置x参数是用于填充函数中变量的值。

因此,您现在为函数赋予值3,它解决了以下问题:

3+2*(3)+(3)^2
3+6+9
9+9
18

结果输出当然是print

18.

解决方案:修复代码

现在我们已经查看了导致代码出错的所有基本概念。这是您的原始代码:

 def main():
  a=input("Type number")
  e=int(a)
  function2(e);
def function2(e):
 for h in range(e):
  print("X")
main();

这里有很多错误:

  • 您的def main():写得大多正确,但缩进可能不够。 Python标准,可能会混淆不太复杂的解释器,需要 4个空格作为其whitespace和缩进。

  • 您的def main():最后也使用;,这是Python和许多其他语言之间的区别,是语法问题。 Python并不需要;,只需删除它就可以修复该错误。

  • 除了我们在def function2(e):

  • 中看到的whitespace问题外,您的def main():似乎没有任何错误
  • 您的def function2(e):使用print(),虽然这不是错误,但是Python 2.7和Python 3.3之间的语法差异很大;出于这个原因,我会添加标记Python 3.3以防将来出现。

  • 当您致电main();时,结尾;是不必要的,可以删除。

以下是您的代码的修订版本。

def main():
    a = input("Type number")
    e = int(a)
    function2(e)

def function2(e):
    for h in range(e):
        print("X")

main()

你现在明白它是如何完全运作的吗?对不起,所有的阅读,希望你现在更舒服,经历了整个事情!

如有任何问题,请在下面的评论中不要犹豫。

快乐的编码!

PS - 我看到你已经选择了最佳答案。但也许在读完这篇文章后,你会改变主意;)

答案 2 :(得分:1)

您错过了:内的冒号function2,因此如果您将该位更改为:

def function2(e):
 for h in range(e):
  print("X")

你应该好好去。

答案 3 :(得分:-1)

无您的代码中的任何错误或语法错误它工作正常。 并且您可以通过(制表符)或通过一个空格或任何其他内容缩进代码。只要您保存了块