YouTubeでも発信中!

Pythonを初めて触る僕が最初に勉強したこと【無料】

programing

この記事は
「Pythonやってみたい!」
と思った人向けに書きます。

あなたは僕の仲間です!
僕もPythonを触ったことがなかった。
けど、今ではある程度Pythonわかってきました。

僕は、Pythonを学ぶために本を買ってないです。
だってちゃんと調べたらフツーにネットに情報あるし。

もし仮に買うとしたら「独学プログラマー」ですけど、この本でさえ半分以上はネットにある情報。
これは仕方がないこと。
プログラミングの本なんだから。
その言語の文法を説明したら、そりゃ同じ内容になってしまう。

いろいろ調べて、僕はPythonの基本を無料で学びました。
その手順をお伝えしようと思います。

筆者のレベル

申し遅れました。カツオです。
都内金融で社内SEやってます。

いままで、Pythonを触ったことはないです。

でも、

  • COBOL2年
  • Java1年
  • PHP3ヶ月
  • Linux少々
  • Webアプリ開発少々

くらいのスキルはあります。
あなたも、ちょうどこれくらいだと、この記事はぴったりだと思います。

プログラミング自体をやったことがない人へ
もしあなたが、プログラミング自体が初めてなら
・言語はなんでもええから本を買う(せっかくならPython良いと思うよ)
・誰かに教えてもらう(最初は挫折しやすいからね)
あたりから始めたほうがいいですよ。

この記事で学んでもいいですが、ちょっとハードかもしれません。

無料でPythonを学ぶ手順とは

ここから本題です。
僕がPythonを学んでいった手順を紹介します。

Progateでざっくり学ぶ

https://prog-8.com/
このサイト、神だと思います。
僕はPythonのレッスン1のみを無料でやりました。

レッスン2以降も気になるひとは、課金してみてもいいかと思いますが、正直Pythonの雰囲気がつかめればOK。

プログラミングで必要な知識は、
「こんなことをしたい!」
って思ったときに学んでいくのが一番効率がいいです。
文法を1~100まで覚える作業は、プログラミング自体が初めての人だけでいいです。

Pythonのインストール~「HelloWorld」まで

https://prog-8.com/docs/python-env-win
これもProgateの神ページ。

一番シンプルなPythonの開発環境を作れます。
どの言語もそうですけど、まずは「HelloWorld」から。

Atomというシンプルなコーディングアプリを初めて知りましたけど、めっちゃかっこいい。

Pythonのデータベースを学ぶ

ここからは、神チュートリアルをやっていきます。
全部で4回に分かれています。

参考 TodoリストWebアプリをつくってみよう(1)ー ゼロから始めるPython入門【Vol.19】DESIGNMAP
Webサーバーも音速で立つ
参考 TodoリストWebアプリをつくってみよう(2)ー ゼロから始めるPython入門【Vol.20】DESIGNMAP

僕の場合だと文字化けしてしまったので、以下の1行を削除して、とりあえず前に進みました。
<meta charset=”UTF-8″>

手順は以上となります。

STEP5の補足

紹介した手順のなかで、一番難しかったのが「STEP5」かと思います。
盛大にハマったのでメモしておきます。

途中「追加」ボタンを押すと、以下の文言が画面に出ない!

FieldStorage(None, None, [MiniFieldStorage(‘name’, ‘コーヒー豆を買いにいく’), MiniFieldStorage(‘mode’, ‘add’)])

結論としては、文字コードの問題とわかりました。
文字コードを明確に定義しないと行けないことを痛感しました。

<meta charset="UTF-8">

だと、文字化けしますが、代わりに以下としました。

<meta charset="shift-jis">

多分、コマンドプロンプト上でLiteSQLにレコードを追加していった関係で、
shift-jisで文字列が入っていたのかと。
なので、HTML全体もshift-jisに寄せました。

文字列を入れて「追加」を押すと今度は、画面が真っ白に
テーブルの中身を表示したら、レコードが文字化けしていた。

C:\Users\*****\python\todolist_lesson>python db1.py
1 ノートを買いにいく
2 切手を買いにいく
3 洋服を買いにいく
4 ?R?[?q?[??????

以下のようにして4番目のレコードを削除

>>> import sqlite3
>>> conn = sqlite3.connect('todolist.db')
>>> curs = conn.cursor()
>>> curs.execute('select * from tasks')
<sqlite3.Cursor object at 0x0135AAA0>
>>> print(curs.fetchall())
[(1, 'ノートを買いにいく'), (2, '切手を買いにいく'), (3, '洋服を買いにいく'), (4, '?R?[?q?[???\U000140c2?')]
>>> curs.execute('select * from tasks where id = 4')
<sqlite3.Cursor object at 0x0135AAA0>
>>> print(curs.fetchall())
[(4, '?R?[?q?[???\U000140c2?')]
>>> curs.execute('delete from tasks where id = 4')
<sqlite3.Cursor object at 0x0135AAA0>
>>> curs.execute('select * from tasks')
<sqlite3.Cursor object at 0x0135AAA0>
>>> print(curs.fetchall())
[(1, 'ノートを買いにいく'), (2, '切手を買いにいく'), (3, '洋服を買いにいく')]
>>>conn.commit()
>>>

いったん画面復活。
画面のフォームから再度入力すると、やはりまた画面が真っ白に。

>>> curs.execute('select * from tasks')
<sqlite3.Cursor object at 0x0135AAA0>
>>> print(curs.fetchall())
[(1, 'ノートを買いにいく'), (2, '切手を買いにいく'), (3, '洋服を買いにいく'), (5, '?e?X?g')]
>>>

結論としては、レコードを全部削除して、以下を追加したら治りました。

# -- ↓デフォルトの出力(print)がsjisになっているのをutf-8にする↓ --
import sys
import io
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
# -- ↑デフォルトの出力(print)がsjisになっているのをutf-8にする↑ --

さらに以下に戻す。

<meta charset="UTF-8">
まとめ

・コマンドプロンプト上でINSERT⇒sjis
・画面で入力「追加」⇒utf-8
・HTML生成(print)⇒sjis

となっていたので、以下のようにした。

・コマンドプロンプト上でINSERT⇒sjis ※テーブル全レコード削除
・画面で入力「追加」⇒utf-8
・HTML生成(print)⇒utf-8 ※変更