プログラミング超初心者向けの連載です。
目標は高校生が「共通テスト」ないしは「基本情報処理技術者」
でPythonライクな疑似言語に困らないレベルにすることです。
少しずつ進みつつ、超簡単に説明していく所存でございます。
ぜひ、エディタ片手に実行しながらお読みくださいませ。
セットアップの記事はこちらです。
Python、どうでしょうか?
プログラミング経験者の皆様は「便利じゃん」と思う方もいる
反面、「おいおい」と思われる方もいるでしょうね。
さて、今回は私がハマったお話を書きます。
(まず、C#で書いてみます)
int a=0;
void hoge(){
a=5;
b=10;
a=a+b;
}
hoge();
printf(a)
(pythonに直してみます)
a=0
def hoge():
a=5
b=10
a=a+b
hoge()
print(a)
えっと。
前者は当然のように15と表示されて。
後者は0って表示されますの。
なんで?
a=0
def hoge():
a=5
b=10
a=a+b
hoge()
print(a)
実はグローバルに見える先頭のaと
関数の中にあるaは
違う変数であると考えるのがPython
なので、関数の中でaを定義してしまうと、そのaを
別物として扱ってしまいます。
これまでのようにグローバル的に扱いたい場合は
a=0
def hoge():
global a
a=5
b=10
a=a+b
hoge()
print(a)
わざわざ、このaは外のaのことだからね!
っていってあげなきゃダメです。
もしくは引数を使って
a=0
def hoge(a):
b=10
a=a+b
hoge(5)
print(a)
こうすれば解決できそうですね!
これがわからんくて、しばらく悩んだ話でした。
とほほ。
続きます!