0

我是 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

4 回答 4

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 中不需要分号。

于 2013-10-25T14:37:06.937 回答
2

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

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

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

编程中的变量

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

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) 完全相同的东西;一个取决于所提供信息的工作方程。

注意:并非所有编程函数都精确地进行数学运算,有些函数对字符串进行操作,但它们都会改变数据,这就是我的观点。有些函数甚至不需要输入,因为它们独立于你正在做的事情对数据进行操作。在这里,比较有点分崩离析,但我希望你还在船上。

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

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

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():还使用了 a ;,作为 Python 和许多其他语言之间的区别,这是一个语法问题。Python 不需要;,只需将其删除即可修复该错误。

  • def function2(e):除了我们whitespacedef 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 - 我看到你已经选择了最佳答案。但也许读完这篇文章后,你会改变主意;)

于 2013-10-25T15:15:34.520 回答
1

您的 中缺少一个冒号:function2因此如果您将该位更改为:

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

你应该很高兴。

于 2013-10-25T14:38:01.303 回答
-1

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

于 2013-10-25T14:46:07.330 回答