全くコードが書けなかったころの話

2017年12月22日 金曜日

プログラミングに興味あったし、HTML、CSSは存分に書けるので少し勉強すれば習得できると考えていた。しかし、勉強を始めて数年間全くコードを書けなかった。

なんとなく理解してるが、コードは書けない

やりたいことはある。書くべきコードもなんとなく想像できる。使うアルゴリズムもぼやっと思いつく。

でもコードが書けない。

1から100までの偶数をすべて表示

for i in range(100):
    if 偶数かどうか?: # ここがどうしても書けない
        print(i)

文字列内の半角スペースを''に置換し、置換後の文字数を取得

s = 'あいう えお かきくけ こ'
sの半角スペースを消す # コードが書けない
その後の文字数を数える # コードが書けない

数字の表現でint型とstr型の区別がつかない

a = 123
s = '321'
a + s # 123'321'と出力されることを期待している
s = '123'
'好きな数字はsです。' # '好きな数字は' + s + 'です。'とは書けない

変数、関数の理解に乏しい

def square(num):
    x = num ** 2
    return x

square(123) # a = square(123)とは書けない

print(a) # あとで使いまわすため、aという変数を使いたい
# 諦めてprint(square(123))とか書いてしまったり

引数が理解できない

def square():
    num = 5
    x = num ** 2
    return x

square # square()とは書けない
# カッコの中に何もないのに何故カッコが必要なの?とか考える
square() # ならばと、コピペを試す

↑このコピペしたら動いたという発想と成功体験(?)が下記の間違いを生む

def square(num):
    x = num ** 2
    return x

square(num) # コピペしたのに動かない……
# square(5)とは書けない

配列の添え字を使えない

配列の例題としては下記のようなものだとしよう。

spamという名前の変数に格納されているリストの3番目の要素に'hello'という値を代入するにはどうすればよいですか?(spamの値は[2, 4, 6, 8, 10]とします。

O'Reilly Japan - 退屈なことはPythonにやらせよう

答えは

spam[2] = 'hello'

なのだが、コードが書けなかったときは以下のように考えていた。

spamの3番目が添え字でいえば2なのは分かる。spamの3番目の値は6だ。ここまではOK。

で、この6を'hello'にするのだから

6 = 'hello'

こういうことだろう。でもこれが動かないことは分かっている。なぜなら6は変数じゃないからだ。ならこの6を'hello'に変えるにはどうすればいいのだろう?分からない……。

# もしspamが以下のような状態なら簡単に解けるのに
n = 6
spam = [2, 4, n, 8, 10]

これの答えなら

n = 'hello'

これで文句あるまい。

と。こういった具合でコードが書けなかった。

ちなみに、添え字でアクセスする手法をいつ理解したかは覚えていない。

更新情報

2018.1.13配列の添え字を使えないを追記しました。