応用力をつける学習方法の紹介¶
ここでは、応用力をつける学習方法を紹介します。それは下記の3つです。
試行錯誤で基本と応用の確認
print(変数)で変数確認公式ドキュメントで確認
最初にprintを例にして試行錯誤の仕方を紹介します。
試行錯誤で基本と応用の確認¶
PyQで判定OKにするためには、求められている回答を記述する必要があります。 ですが、知識を深めるためには、試行錯誤がかかせません。
PyQでは、自由にプログラムを書いて実行できます。
写経を基本として、プログラムを色々変更して実行してみましょう。
何を変えたら動かないかを確認 → 変えてはいけない基本がわかる。エラーを恐れずやってみよう。
何を変えたら結果が変わるかを確認 → 変えたものの役割がわかり、応用できるようになる。
printを変えてみよう¶
シンプルな例で説明します。
print(1)
上記を色々変えてみましょう。
その1
Print(1)
上記を実行すると、NameError: name 'Print' is not definedというエラーになります。
このことからprintは変えてはいけないという基本がわかります。
その2
print ( 1 )
上記を実行すると、エラーにはならずに同じ結果になります。
このことからprintの後ろや数字の前後に空白があっても良いという応用がわかります。
ただし、標準的な空白の入れ方があります。空白については写経通りにすると良いでしょう。
標準的なプログラムの書き方は、クエスト「Pythonのコーディング規約を学ぶ」で学べます。
その3
print(1)
上記は、printの前に空白を入れています。実行すると、IndentationError: unexpected indentというエラーになります。
このことから行の先頭に空白を入れるとエラーになるという基本がわかります。
行の先頭の空白はインデントといいます。
インデントは、クエスト「条件が成り立つ場合だけ計算しよう」で学べます。
その4
print 1
上記を実行すると、SyntaxError、すなわち文法エラーになります。
このことからprintの後ろの括弧は省略できないという基本がわかります。
printは関数です。関数を実行する場合は、括弧をつけます。
その5
print(2)
上記を実行すると、2が出力されます。
このことからprintの括弧内には好きな数字が書けるという応用がわかります。
その6
print("abc")
上記を実行すると、abcが出力されます。
このことからprintの括弧内には文字列が書けるという応用がわかります。
その7
print(1, "abc")
上記を実行すると、1 abcが出力されます。
このことからprintの括弧内にはカンマ区切りで複数の値が書けるという応用がわかります。
最初は、エラーになることが多いでしょうが、恐れずに試してみましょう。
たくさん試さないといけないことはありません。気になったことだけ試せばOKです。
print(変数)で変数確認¶
プログラムがどのように動いているか知るために、変数の値を確認することが重要です。
ここでは、readとreadlinesの違いを例にして、print(変数)で変数を確認する方法を具体的に紹介します。
クエスト「ファイルの内容をプログラムで利用しよう」では、readでファイルの内容取得を学びました。
次のクエスト「ファイルの内容を1行ずつリストの要素にしよう」では、readの代わりにreadlinesを使っています。
readとreadlinesの違いは何だろう
このような疑問が浮かびますね。
readlinesをreadに変えよう¶
クエスト「ファイルの内容を1行ずつリストの要素にしよう」の1問目の写経の内容は、以下の通りです。
f = open("input/donation_202004.txt", "r", encoding="utf-8")
donations = f.readlines()
f.close()
for donation in donations:
print(donation)
実行すると下記のように出力されます。
1300
700
(略)
ここで、下記のように、readlinesをreadに変えて実行してみましょう!
f = open("input/donation_202004.txt", "r", encoding="utf-8")
donations = f.read()
f.close()
for donation in donations:
print(donation)
下記のように出力が変わりました。
1
3
0
0
7
0
0
(略)
何が起きたのでしょうか?
この疑問を調べるために次のようにdonationsを確認しましょう。
print(donations)で変数を調べよう¶
変数donationsの値を確認するためには、print(donations)を追加します。
f = open("input/donation_202004.txt", "r", encoding="utf-8")
donations = f.readlines()
f.close()
print(donations) # この行を追加
for donation in donations:
print(donation)
出力は以下のようになりました。
['1300\n', '700\n', (中略)]
(略)
このことから、readlines()は、文字列のリストを返すことがわかります。
readもやってみましょう。
f = open("input/donation_202004.txt", "r", encoding="utf-8")
donations = f.read() # readlines → read
f.close()
print(donations) # この行を追加
for donation in donations:
print(donation)
出力は以下のようになりました。
1300
700
(略)
出力はファイルの内容そのものです。read()は、文字列を返します。
for 変数 in 文字列:で繰り返すと、一文字ずつ繰り返します。
このことから、readの場合、forでは一文字ずつ出力されたのでした。
公式ドキュメントで確認¶
試行錯誤で理解のための土台ができたら、公式ドキュメントを確認し理解を補強しましょう。
readとreadlinesの公式ドキュメントは以下の通りです。
https://docs.python.org/ja/3/library/io.html#io.RawIOBase.read
https://docs.python.org/ja/3/library/io.html#io.IOBase.readlines
関連するものを調べたい場合には、公式ドキュメントの右上から検索できます。
Web上には、真偽混在の情報があります。正しい情報を知るには、1次情報を確認しましょう。 Pythonの公式ドキュメントは、Pythonの1次情報になります。
公式ドキュメントの活用については、下記のPython学習チャンネルも参考にしてください。
注意¶
クエストによっては、写経と異なる記述をすると、続く問題に影響することがあります。 そのような場合は、試行錯誤したあとに、写経通りに戻してください。
まとめ¶
応用力をつける学習方法を紹介しました。
写経を色々変えて実行してみよう。
よくわからないときは、
print(変数)で確認しよう。公式ドキュメントで調べて、しっかり理解しよう。