#ハンズオンで学ぶ:python入門編
##ハンズオンの目次とゴール
###ハンズオンの目次
・ハンズオンのゴールの確認
・ハンズオンの進め方、プログラム実行環境の確認
・文字列の出力
・数値の出力
・四則演算
・変数
・条件分岐
・リスト(配列)
・ループ(for文のみ)
・実践問題(Fizzbuzz問題)
・まとめ
###ゴール
基礎的なpython文法を覚える
簡単なプログラミングの問題(プチハッカソン)を解けるようにする。(時間があれば)
プログラミング学習のきっかけ作り
###対象者
プログラミング未経験、初心者、ITに興味がある方、progateや授業で勉強したけど、軽く復習しておきたい方などです。基本的に超初心者向けになります。
###ハンズオンの進め方
- 文法説明 →(例題) →ハンズオン(実際に手を動かす) → その文法を使う意義の説明(変数、リスト、for文)
###ハンズオンのコツ
1.実際に手を動かしてプログラムを実行する(コピーアンドペーストNG)
2.プログラミングは楽しんだもん勝ち
###必要な環境
- Paiza Cloud
ハンズオンを参加者全員が同一環境下でPythonプログラムを実行できるため。
paiza cloudの動作確認
###動作確認
- paiza cloudへアクセス
- Python2は2020年1月1日にサポート終了
- https://www.atmarkit.co.jp/ait/articles/1906/27/news016.html
##文字列の出力(ハンズオン演習)
- print()を使い文字を出力。
- 文字列はシングルコーテーション('')またはダブルコーテーション("")で囲む
print("Hello World")
- シングルコーテーション('')またはダブルコーテーション("")で囲むのを忘れるとエラー
File "Main.py", line 4
print(hello world)
^
SyntaxError: invalid syntax
##数値(ハンズオン演習)
- 数値は文字列と違って、クォーテーションで囲む必要がない
- 半角で記述
- 数字同士で足し算、引き算が可能
print(3)
print(3 + 7)
print(7 - 5)
###文字列と数値の違い
- クォーテーションで囲むと、文字列、囲まなければ数値として認識
- 文字列の
#文字列
print("7 - 5")
#実行結果
7 - 5
#数値
print(7 - 5)
#実行結果
2
##四則演算
###四則演算(ハンズオン演習)
- +(足し算)
-
- (引き算)
-
- (掛け算)
- / (割り算)
- % (割り算の余り)
# 割り算
print(8 / 3)
#実行結果 2.6666666666666665
# 掛け算
print(4 * 5)
#実行結果 20
# 余り
print(7 % 2)
#実行結果 1
##変数
変数とは、データ(値)を入れておく箱のようなもの。
箱には変数名をつけることが可能
変数を定義するためのルール
- 「変数名 = 値」で定義
- プログラミングの「=」は「右辺を左辺に代入する」みたいな感覚
- 変数名をクォーテーションで囲む必要はありません。


###変数の定義(ハンズオン演習)
# 変数の定義
name = "tanaka"
# 変数の定義
age = 22
### 変数の値を取り出す(ハンズオン演習)
- print(変数名)で変数の値を出力
- クォーテーションで囲ってしまうと、nameが変数ではなく文字列として認識されてしまうので注意
# 変数の定義
name = "tanaka"
# 変数の定義
age = 22
# 変数の値を取り出す
print(name)
#実行結果 tanaka
# 変数の値を取り出す
print(age)
#実行結果 22
# クォーテーションで囲ってしまうと、nameが変数ではなく文字列として認識されてしまう
print("age")
#実行結果 age
### 変数名の命名規則
name = "komaneko" ○英単語
komazawa_major = "business" ○ 二語以上の場合はアンダーバーで繋げる
1name ×数字開始
aaaa ×意味を持たない変数名
名前 ×日本語を使う
##変数を使う意義
####1,扱っているデータの中身が明確で分かりやすい
####変数を使わない場合####
total = 3 * 100
print(total)
#表示結果 300
####変数を使う場合####
apple_count = 3
apple_price = 100
total = apple_count * apple_price
print(total)
#表示結果 300
####2,同じデータを繰り返し使える
####3,変数の値に変更が必要になった場合、変更する箇所が1箇所で済む
- 正方形の計算
length = 4
#同じデータを繰り返し使える
area = length * length
print(area)
#表示結果 16
##文字列の連結(ハンズオン演習)
- 文字列同士、変数同士の連結
#文字列同士の連結
print("Hello" + "World")
#表示結果 Hello World
#変数同士の連結
family_name = "yano"
given_name = "daiki"
print(family_name + given_name)
#表示結果 yano daiki
##if文(条件分岐)
###条件分岐の役割
条件分岐とは、プログラム中で、ある条件が満たされているかどうかによって次に実行するプログラム上の位置を変化させること
###条件分岐の身近な例
- ユーザーのログイン判定
もし、ユーザーがログインしていなかったら、ログインボタンを

もし、ユーザーがログインしていたらログアウトボタンを表示させる。
##if文(条件分岐)の文法
if <分岐条件>:
<実行内容> (グループ1)
elif <分岐条件>:
<実行内容> (グループ2)
else:
<実行内容> (グループ3)
##if文(条件分岐)のコード例
age = 18
if age < 20:
#半角4つ分のインデントでブロックを区別
print("お酒を購入することができません") #ブロック1(グループ)
else:
#半角4つ分のインデントでブロックを区別
print("お酒を購入することができます。") #ブロック2(グループ)
##Pythonのインデントルール
- pythonはインデントで文をグループ化するというルールがある
- グループ(ブロック)は実行内容ごとに分けられる
- インデントは半角4つ分
- インデントルールを守らないと期待とは異なるプログラム結果が表示されたり、エラーが表示されたりする
##if文(条件分岐)(ハンズオン演習)
- 条件分岐を使ってユーザーのログイン判定をやってみよう!
login_ckeck = True;
if login_check == True:
print("ユーザーはログイン中です")
else:
print("ユーザーはログアウトしています")
##リスト(配列)
- 複数のデータをまとめて管理するにはリストを使う
- リストに入っているそれぞれの値のことを要素と呼ぶ

[要素,要素,要素] #リスト
["yano","nakatani","tanaka"] #文字列型のリスト
[21,20,10] #数値のリスト
["yano","nakatani",20,21] #文字列型と数値のリスト
###リストを作成し、変数に代入する(ハンズオン演習)
- 駒大付近のラーメン屋をまとめたリストを作成する
*リストを代入する変数名は慣習上複数形
komazawa_noodles = ["駒大商店","TETSU","おか本"]
print(komazawa_noodles)
#表示結果 ["駒大商店","TETSU","おか本"]
###リストの特定の要素を取得
["yano","tanaka","nakatani"]
#インデックス番号 0 1 2
komazawa_students = ["yano","tanaka","nakatani"]
print(komazawa_students[0])
#表示結果 yano
-
リストの要素には、前から順に「0, 1, 2,・・・」と数字が割り振られています。これをインデックス番号という
-
リストを代入した変数の右に[index番号]を指定してあげることによって特定のリストの要素を取得
-
変数[index番号]
###リストの特定の要素を取得する(ハンズオン演習)
- ラーメン屋のデータを取り出して「駒澤大学付近のラーメン屋は○○です。」と表示させる
komazawa_noodles = ["駒大商店","TETSU","おか本"]
print("駒澤大学付近のラーメン屋は" + komazawa_noodles[0] + "です。")
#表示結果 駒澤大学付近のラーメン屋は駒大商店です。
###リストのデータを全て取得する
- リストの要素を全て出力したいような時、以下のコードのように書くのは非常に面倒
- そこでループを使ってみる
students = ["yano","nakatani","tanaka"]
print("私の名前は" + students[0] + "です。")
print("私の名前は" + students[1] + "です。")
print("私の名前は" + students[2] + "です。")
#表示結果 私の名前はyanoです。
#表示結果 私の名前はnakataniです。
#表示結果 私の名前はtanakaです。
###リストを使う意義
- リスト(配列)を使うと大量のデータを扱える
###リスト(配列)が使われているところをKOMANEKOで確認してみよう
- KOMAFOODはGoogle APIを使いGoogle MAPのデータを取得して表示させている。
- レストランのデータはGoogle MAPからリスト(配列)で取得している。(Pythonじゃなくて(*1)JSONだけど)
KOMANEKO中のKOMAFOODを例にみていきましょう。
例えば、KOMAFOODは(*2)APIという技術を使ってGoogle MAPのレストラン情報を取得して表示させています。下の図のようにGoogle mapとデータのやりとりを行っていてレストランのデータはユーザーがサイトにアクセスする度に毎回、Google MAPから今回学んだリスト(配列)チックな形で取得しています。リストチックと表現しているのは、リスト以外にもディクショナリや連想配列、二次元配列など今回のハンズオンでは紹介しない文法を使われているのでこのような表現をしています。三つ目の画像はgoogle mapから送られてきた実際のレストランのデータです。画像をよく見てみるとリストチック、ディクショナリ、二次元配列で画像が渡されていて一つ一つの要素をみていくとレストランのお店、住所、画像などのデータが格納されています。このようにリスト(配列)は大量のデータを扱う際に活用することができます。以上が、かなり噛み砕いてはいますがリストを使う意義についての紹介でした。
(*1)JSON ・・・ JavaScript Object Notationの略。ソフトウェアやプログラミング言語間におけるデータの受け渡しに使えるデータ記述言語
(*2)API ・・・ Application Programming Interfaceの略
- ソフトウェア同士を繋ぐインターフェース
####API技術の使用例
サイトで会員登録する際にメールアドレスとパスワードを入力せずに既存のgoogle,Facebook,Twitterアカウントを使用して本登録した経験がある方が多いと思います。この機能を実装するにはアプリ同士がコミュニケーションをしながらデータのやり取りをする必要があります。このアプリ同士のコミュニケーションはAPI技術を活用した分かりやすい例です。

####KOMAFOODの仕組み

####google mapから送られてきた実際のレストランデータ

####KOMAFOODの実際のコード
- PythonでGoogle Places APIを使って取得したデータを表示させる方法
##for文(ループ)
- for文を使うと、リストの要素を順に取り出して処理
- for 変数名 in リスト: と書くことで、リストの要素の数だけ、処理を繰り返す
###for文の文法と処理の流れ
for <変数名> in <リスト>:
<繰り返す内容>
students = ["yano","nakatani","tanaka"]
for student in students:
print("生徒の名前は" + student "です。")
#表示結果
#生徒の名前はyanoです。
#生徒の名前はnakataniです。
#生徒の名前はtanakaです。
for文処理の流れ
①変数studentにリストの要素yanoが代入されてfor文の中身の処理が実行されます。
②変数studentにリストの要素nakataniが代入されてfor文の中身の処理が実行されます。
③変数studentにリストの要素tanakaが代入されてfor文の中身の処理が実行されます。
- 処理はリストの要素の数だけ繰り返し行われます
- 変数名はリスト名の単数形にすることが慣習上多い
###for文(ハンズオン演習)
- 駒大周辺のラーメン屋をリスト化して、「駒大付近のラーメン屋は○○です。」とFor文を使って表示させる
noodle_shops = ['横浜ラーメン岡本', '横浜家系ラーメン駒大商店', 'つけ麺TETSU']
for noodle_shop in noodle_shops: #コロンを忘れない
print('駒大付近のラーメン屋は' + noodle_shop + 'です')
#インデント半角四つ分空ける
#表示結果 好きなラーメン屋は横浜ラーメン岡本です。
#表示結果 好きなラーメン屋は横浜家系ラーメン駒大商店です。
#表示結果 好きなラーメン屋はつけ麺TETSUです。
##for文を使う意義
- 大量のデータをループして処理することができる
- 少ないデータであれば一つずつ記載できるが、例えば大学のシラバス情報など大量のデータを一覧で表示させるにはFor文を使うのがベスト

##Fizzbuzz問題(確認問題)
FizzBuzzとは、1〜100までの数字を言い合うゲームで、このようなルールがあります。
- 3で割り切れれば、「Fizz!」という
- 5で割り切れれば、「Buzz!」という
- 3と5で割り切れれば、「Fizz Buzz!」という
- 上記以外の場合は、そのまま数字をいう
- これをPythonで書いて表示させてみましょう。
ステップ1 range関数とfor文を使って1から100までの数字を表示させる
ステップ2 条件分岐で3の倍数、5の倍数、3と5で割り切れる数字の三つに分けて処理を記述する。
ステップ3 print()関数を使って分岐ごとに結果を表示させる
- ヒントと答えはネットに載っているのでググって調べてみましょう。
##ハンズオンで学ぶ:python入門編のまとめ
###今回のハンズオンで学んだこと
1,Pythonコードの実行方法
2,Pythonの基礎文法の習得(文字列、数値、文字列・数値,
変数、リスト、条件分岐、for文)
3,変数、条件分岐、リスト、for文を使う意義の確認
##今回、お伝えできなかったその他のPython文法
- ループ(While,each文等)
- ディクショナリ(連想配列)
- ディクショナリ
- 関数
- クラス
などなど。
###参考サイト
◆Python 言語リファレンス
https://docs.python.org/ja/3/reference/index.html
##今後のプログラミング学習で参考にしたい情報リソースまとめ
### プログラミング学習サイト
◆Progate
https://prog-8.com/
◆ドッドインストール
https://dotinstall.com/
◆Udemy
https://www.udemy.com/
◆Paiza
https://paiza.jp/
◆SCHOO
https://schoo.jp/#_ebcv=3kxCAMrX.liskul2so.1
IT系メディア
◆qiita
https://qiita.com/
◆POSTED
https://postd.cc/
◆Tech Clunch
https://jp.techcrunch.com/
◆News Pick
https://newspicks.com/
###Q&Aサイト
◆teratail
https://teratail.com/
◆Stack Overflow
https://stackoverflow.com/
◆Quora
https://jp.quora.com/
###就活向けに無料で受講できるプログラミングコース
◆Intee
https://intee.jp/
◆TECHBASE
・https://engineer-shukatu.jp/techbase/
###エンジニアインターンの求人サイト
◆Wantedly
https://www.wantedly.com/
◆キャリアバイト
https://careerbaito.com/
◆Infla
https://www.in-fra.jp/
◆Jeek
https://jeek.jp/
◆ゼロワン
https://01intern.com/
###勉強会・TECH系イベント
◆TECHPLAY
https://techplay.jp/
◆connpass
https://connpass.com/
◆サポーターズColab
https://supporterzcolab.com/
##当イベントの関係サイト
◆PAOPAL HP
https://paopal.localinfo.jp/
◆PAOPAL Twitterアカウント
https://twitter.com/paopal2018
◆KOMANEKO
https://www.komaneko.site/
◆KOMANEKO Twitter アカウント
https://twitter.com/Komanek43918143
◆Pythonハンズオン担当者のTwitterアカウント
https://twitter.com/for_engineerb
##参考文献
◆Progate
https://prog-8.com/
◆Python文法チュートリアル - SWEST
http://swest.toppers.jp/LED-Report/Camp4/materials/prep/python_tutorial.html
◆Python3基礎文法
##最後に
トビタテの立ち上げに貢献したメンバーの一人喜多 恒介さんがFacebookのトビタテ!留学JAPAN全期生コミュニティに投稿した文章を引用して掲載します。
喜多 恒介(Kosuke Kita)"【「いつか」トビタテで留学したいと思っている皆さんへ】"
投稿日2019年1月6日 アクセス日2019年1月7日 Facebook
【「いつか」トビタテで留学したいと思っている皆さんへ】
残念なことに、その「いつか」はやってきません。なぜならもう「現行のトビタテ」はもうあと10日ほどで応募が終わってしまうからです。そうです。これが正真正銘ラストチャンスです。「いつか」では無いのです。「今」しか無いのです。
(申込締切は2月末だけど、大学経由で応募が必要です。そしてその大学の締切が恐らく1月中です。)
多くの大学生は、「いつか留学しよう」「いつか起業しよう」「いつか○○しよう」と言いながら、判断を保留する。
…が!それがダメ。大甘の甘。チャンスなんてものは簡単に目の前から逃げていく。その証拠に、最高の奨学金(学費も渡航費も生活費も全部もらえて、期間も行く場所も自由で、学校に行かない留学もOK)であるトビタテは、もう今の形では無くなってしまう。
…そう、無くなってしまうのだ。二度とやってこないのだ。さらには、留学だけでなく、起業ブームも恐らく2019年でいったん落ち着くだろう(資金調達マーケットが冷えてきているのだ)。
そうやって君が指を咥えて行動に移さないがために、君の目の前にあるチャンスは、もう無くなってしまう。
恐らく、もうじき日本の大学生は「応援される存在」ではなくなるだろう。現に社会の支援の軸足は「高校生」に移りつつある。
若者を支援する人たちは口を揃えてこう言う。
「大学生になってからじゃ、もう遅いよね。」と。
そう。彼ら曰く、大学生になっても動き出さない人は、もう手遅れなのだ。実際に、トビタテをはじめとして、大学生に対する支援の手は引き揚げられつつある。
…本当に「手遅れ」なのか?今動き出していない君には、可能性が全く無いのか?
違うだろ。君には、可能性があるはずだ。その存在を一番知っているのは、君自身のはずだ。君が自分の可能性を信じてやらなくて、どうすんだよ。
もし、君が少しでも自分のことを信じているならば、行動でそれを示さなければならない。動かなければ、何も現実は変わらないからだ。
もし留学に少しでも興味があるならば、今回絶対にトビタテに応募しよう。例え落ちても失うものは何もない。なぜならこれがラストチャンスだからだ。
応募して例え結果として落ちてしまっても、自分の留学に対する想いをエントリーシートに書くだけでも、自分は大きく変われる。君の可能性はグンと広がる。
繰り返すぜ。これが、ラストチャンスだ。
タイムリミットは、もうあと10日あまり。君が君の可能性を信じているならば、絶対にトビタテに応募しよう(各大学の締切は大学に確認しよう。)
もし自分のやりたいことが明確でないなら、NCSを使えばいい。ちょうど今週末に、やりたいことを見つけるためのプログラムが開催される。トビタテに受かるための本当の君の想いを、ここで言語化てまきる
もう、自分の可能性に蓋をするのは、やめよう。苦しくなるのは、自分自身だ。
自分の心の声に耳を傾けよう。「怖い」や「自信がない」の奥に隠れた、本当の自分の声を聴こう。
君の可能性を信じてやれるのは、君だけだ。親でも、先生でも、友達でもない。君だけなんだ。
◆トビタテ留学JAPAN HP
https://www.tobitate.mext.go.jp/