[英]How declare for in function with parameter
我是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不會忽略whitespace
,因此可以使用whitespace
以一種令人愉悅的方式格式化語言。 在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
。 參數是您放入函數定義中的變量。
參數是調用函數時代替 x
的3
。 參數是用於在函數中填寫變量的值。
這樣,您現在給函數賦予值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):
除在def main():
看到的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")
你應該很好。
無代碼中有任何錯誤或synatx erorr,它工作正常。 而且,只要保存了代碼塊,就可以用(tab)或空格或其他任何東西縮進代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.