我是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'未定义
答案 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)
你的问题似乎是一般的一系列误解。您的代码中的错误很简单,但是,让我们看看我是否可以引导您完成一些概念,这样当我向您展示固定代码时,您就完全理解了它。请记住,我希望你已经知道了很多,但我不仅仅是为你写这个答案,而是为了偶然发现这个页面的其他任何初学者。 :)
似乎我们可以涵盖以下主题(每个概念本身都很简单,但你需要完全获取它们才能获得下一个主题):
您可能知道,变量只是我们为数据提供的标签。在大多数语言中,您必须先声明变量,以便为其分配适当的类型(也就是说,计算机知道它是否是整数, string , boolean 等)。因此,您需要以下代码:
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)完全相同;一个工作方程,取决于给出的信息。
注意:并非所有编程函数都完全按 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)
无您的代码中的任何错误或语法错误它工作正常。 并且您可以通过(制表符)或通过一个空格或任何其他内容缩进代码。只要您保存了块