0

私はPythonが初めてです。これがどのように機能するかわかりません。

私はこのコードを持っています:

def main():
 a=input("Type number")
 e=int(a)
 function2(e);
def function2(e):
 for h in range(e):
  print("X")
main();

このエラーを書いてください:範囲内の h のトレースバック (最新の呼び出しが最後)(e): 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の空白
  • 関数: パラメータと引数
  • 解決策: コードを修正する

プログラミングにおける変数

おそらくご存知のように、変数は単にデータに付けるラベルです。ほとんどの言語では、変数に適切な型を割り当てることができるように、最初に変数を宣言する必要があります(つまり、コンピューターは、それがintegerstringbooleanなどであるかどうかを認識します)。したがって、次のコードが必要です。

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が必要です。

  • 最後にadef main():も使用していますが;、これは 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

なし コードの間違いまたは構文エラー 正常に動作しています。また、ブロックを保存している限り、(タブ)または1つのスペースまたはその他のものでコードをインデントできます

于 2013-10-25T14:46:07.330 に答える