簡體   English   中英

如何在帶有參數的函數中聲明

[英]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中不需要分號。

通常,您的問題似乎是一系列誤解。 您在代碼中的錯誤很簡單,但是讓我們看看我是否無法帶您了解一些概念,以便在向您展示固定代碼時,您可以完全理解它。 請記住,我希望您已經了解了很多,但是我寫的答案不僅是為您,還有其他偶然發現此頁面的初學者。 :)

看來我們可以涵蓋以下主題(每個概念本身都很簡單,但是您需要完全理解它們才能獲得下一個主題):

  • 編程中的變量
  • 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不會忽略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 參數是您放入函數定義中的變量。

參數調用函數時代替 x3 參數是用於在函數中填寫變量的值。

這樣,您現在給函數賦予值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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM