我是 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'未定义
那是因为缩进错误,你忘了:
在你的 for 循环后面放一个:
def main():
a = input("Type number")
e = int(a)
function2(e)
def function2(e):
for h in range(e):
print("X")
main()
此外,python 中不需要分号。
您的问题似乎是一系列误解。您的代码中的错误很简单,但让我们看看我是否无法引导您了解一些概念,以便当我向您展示固定代码时,您会完全理解它。请记住,我希望您已经了解很多,但我写这个答案不仅是为您,也是为偶然发现此页面的任何其他初学者。:)
似乎我们可以涵盖以下主题(每个概念本身都很简单,但您需要完全了解它们才能获得下一个主题):
您可能知道,变量只是我们给数据的标签。在大多数语言中,您必须首先声明变量,以便为它分配适当的类型(也就是说,计算机知道它是整数、字符串、布尔值等)。因此,您需要以下代码:
int myVariable1 = 3;
string myVariable2 = "hello";
bool myVariable3 = true;
(在某些语言中,您需要声明变量,然后为它们赋值。)
除了许多入门语言之外,Python 是动态类型的。这意味着变量(数据上的标签)没有类型,但值有。
这意味着您的代码可能看起来像这样
myVariable1 = 3
myVariable2 = "hello"
myVariable3 = True
python 可以根据分配给变量的数据来确定要使用的类型。
(注意:在python中,不需要;
结束一行,并且boolean
值大写(True
,`False))
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):
除了我们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 - 我看到你已经选择了最佳答案。但也许读完这篇文章后,你会改变主意;)
您的 中缺少一个冒号:
,function2
因此如果您将该位更改为:
def function2(e):
for h in range(e):
print("X")
你应该很高兴。
无 您的代码中的任何错误或语法错误 它工作正常。并且您可以通过(制表符)或一个空格或其他任何东西缩进代码。只要您保存了块