なぜpythonか?
pythonの世界的な人気ランキングは?
PYPL PopularitY of Programming Language
米国のpythonプログラマーの平均年収は?
プログラミング言語別年収中央値を発表、求人検索エンジン「スタンバイ」調べ
Top 10 of Programming Languages With The Highest Salaries In 2017
なぜpythonか?
Python 周辺の優れたライブラリや周辺ツール集
素晴らしいツール群 Awesome Python
GitHub Trend (Trending Python repositories on GitHub today
python docs
https://docs.python.org/ja/3/contents.html
Python YoutubeでもPython勉強可能
https://youtu.be/Gh0qRBHbnVs?t=5831
(0)python が公式的に推奨しているコーディング規約です。キッチリとして美しいコードを書きたい人はご参考に。
http://pep8-ja.readthedocs.io/ja/latest/
Pythonの基本的なコードフォーマットの話
(1)オンライン開発環境 Google Colab (データ分析のためのクラウドでの開発環境)
ブラウザChromeにてgoogleアカウントログイン(GoogleDrive)が利用できる状態でスタート
https://colab.research.google.com/notebooks/welcome.ipynb?hl=ja
日本語解説
Google Collabの日本語解説 (やや古い)
Google Colab ブラウザだけでPython実行
https://qiita.com/firedfly/items/9b76d4f4ea2b563777af
Google Colaboratory(Colab)ならPythonですぐに学べる
https://gammasoft.jp/blog/google-colaboratory-for-learning/
Collaboratory再生ボタンを動かせばいきなりpythonを起動できる。
x = 3
y = 4.5
print(x)
print(x + 1) # 加算
print(x - 1) # 減算
print(x * 2) # 乗算
print(x ** 2) # 冪乗 x^2
print(x + y)
print((3 + 2j) - (6 + 4j)) # 虚数
print(type(x))
print(type(y))
t = True
f = False
x=t
print(type(x))
print(type(t)) # => "<type 'bool'>"
print(t and f) # 論理積; "False"
print(t or f) # 論理和; "True"
print(not t) # 否定; "False"
print(t != f) # 排他的論理和; "True"
hello = 'hello' # シングルクォートか、
world = "world" # ダブルクォートで文字列を表す
print(hello) # => "hello"
print(world)
print(len(hello)) # 文字列の長さ;=> "5"
hw = hello + ' ' + world # 文字列の結合
print(hw) # => "hello world"
# 文字列の代入↓
hw12 = '%s %s %d' % (hello, world, 12)
print(hw12) # => "hello world 12"
nihongo = u'日本語' # 明示的にUnicode型を作るにはuをつける
print(nihongo) # => '日本語'
#(3-A)やってみよう
a = 10 # 整数型(int)
b = "みかんの数は"
sum = b + str(a)
print(sum)
#(3-B)
b = "hoge"*10 # 文字列繰り返し
print(b)
s = "hello"
print(s.capitalize()) #=> "Hello"
print(s.upper()) #=> "HELLO"
print(s.upper().lower()) #=> "HELLO"->"hello"
print(s.rjust(7)) # 右寄せ;=> " hello"
print(s.center(7)) # 中央寄せ;=> " hello "
print(s.replace('l', '(ell)')) # 部分文字列の置換;=> "he(ell)(ell)o"
# 3つだけ文字列を入れ替える
b = "aaaaaaaaaaaaaaaa"
c=b.replace("a", "love", 3)
print(c)
print(' world '.strip()) # 空白の削除;=> "world"
# 文字列の長さを取得
moji = "python面白いね"
print(len(moji))
#その他の文字列メソッド
#http://docs.python.jp/3.6/library/stdtypes.html#string-methods
moji = """
明日は何しようか。
pythonの勉強をしよう"""
print(moji)
# .formatの便利な使い方{0} に 変数1の値 、{1} に変数2の値 が割り当てられます。
sokudo = 30 # [km/h]
kyori = 120 # [km]
zikan = kyori / sokudo
ans = "{0}[km/h]で、{1}[km]を走るとすると、{2}[h]かかります。".format(sokudo, kyori, zikan)
print(ans)
# 入力させる
tate = float(input("縦の長さは何[cm]?"))
yoko = float(input("横の長さは何[cm]?"))
s = tate * yoko
print("面積 s =" + str(s) + "[cm^2]です")
# 上記プログラムをmenseki.pyと保存してpythn3 mesenki.pyの実行できます。
#リストはJavaで言う所の配列に相当します。ただし、リストはサイズを変えることができ、また複数のデータ型を含むことができます。
xs = [3, 1, 2] # リスト作成
print(xs, xs[2]) #=> "[3, 1, 2] 2"
print(xs[-1]) # 負のインデックス値は後ろから数えます;=> "2"
xs[2] = 'foo' # リストには複数のデータ型を混ぜられます
print(xs) #=> "[3, 1, 'foo']"
xs.append('bar') # データを後ろに追加します
print(xs) #=> "[3, 1, 'foo', 'bar']"
x = xs.pop() # データを後ろから取り除きます
print(x, xs) #=> "bar [3, 1, 'foo']"
#その他のList操作:
#https://docs.python.org/ja/3.7/tutorial/datastructures.html#more-on-lists
nums = range(5) # rangeは整数範囲を作成する組み込み型関数です
range(5, 10)
# 5, 6, 7, 8, 9
range(0, 10, 3)
# 0, 3, 6, 9
range(-10, -100, -30)
# -10, -40, -70
range(1,5,1)
range(5)
#0以上 5
nums = [0, 1, 2, 3, 4] # 整数配列
print(nums) # => "[0, 1, 2, 3, 4]"
print(nums[2:4]) # インデックス2以上4未満;=> "[2, 3]"
print(nums[2:]) # インデックス2以上最後まで;=> "[2, 3, 4]"
print(nums[:2]) # 最初から2未満;=> "[0, 1]"
print(nums[:]) # 全要素;=> ["0, 1, 2, 3, 4]"
print(nums[:-1]) # 負のインデックスも可能;=> ["0, 1, 2, 3]"
moji = "ABCDEF"
print(moji[::2]) # 2 刻みで全て抽出
# 'ACE'
# indexを使おう
a = ["a", "b", "c", "d"]
print(a.index("b")) # 1
print(a.index("d")) # 3
# リストに値が存在するかどうか
a = ["a", "b", "c", "d"]
print("b" in a) # True
print("f" in a) # False
# 個数をカウント使用
a = ["a", "b", "c", "c", "b"]
print(a.count("c")) # 2
print(a.count("g")) # 0
# ソートする
a = [5, 2, 4, 3, 0, 1]
s = sorted(a)
print(s) # [0, 1, 2, 3, 4, 5]
a = ["b", "g", "a", "d"]
s = sorted(a)
print(s) # ['a', 'b', 'd', 'g']
# 降順ソート
a = [5, 2, 4, 3, 0, 1]
a.sort(reverse=True)
print(a) # [5, 4, 3, 2, 1, 0]
# タプルをリストへ変換
a = ("takasi", "jun", "tomoki")
print(list(a)) # ['takasi', 'jun', 'tomoki']
print(list((1, 2, 3, 4, 5))) # [1, 2, 3, 4, 5]
# タプルアンパック
d = ("python", "Java", "c")
a, b, c = d
print(a) # python
print(b) # Java
print(c) # c
#for 変数 in データの集まり:
# 処理
#
#if 条件:
# 処理A
# 処理B
#処理C
animals = ['cat', 'dog', 'monkey']
for animal in animals:
print(animal)
# ↑改行が最後にいります。
# => "cat", "dog", "monkey"
for char in 'Hello':
print(char)
----
for i in range(5):
print(i)
#0以上5未満
----
for i in range(1, 6):
print(i)
#6未満
----
for i in range(1, 11):
if i % 3 == 0:
print(i)
----
strings = ['ruby', 'python', 'perl', 'java', 'c']
for string in strings:
if string == 'python':
print('OK')
break # 一致したので、breakで抜ける
print(string)
----
#以下は、テストの点数をまとめたリストがあり、70点以下がなければ「合格」と表示されます。
scores = [100, 71, 80, 99, 75] # 70点以下はないので、合格
for score in scores:
if score <= 70:
break
else:
print('合格')
#---while
index = 1
while index <= 5:
print(index)
index += 1
print("終了")
#---whileb
cnt=0;
while cnt < 10 :
print("繰り返しております!")
print(cnt+1)
cnt = cnt + 1
# 入力すべき行数を取得
print("何行入力するか数字をまず入力してください。")
num_lines = int(input())
print("入力を開始してください。")
# 1行ずつ取り出し
for i in range(num_lines):
line = input()
print(i + 1, "行目:" + line)
#別解 6行の入力
input_line = input()
s = [input() for i in range(6)]
print(s)
#https://code-graffiti.com/turtle-graphics-in-python/
#https://docs.python.jp/3/library/turtle.html
from turtle import *
n = 150
length = 4
angle = 15
speed(0)
color('red', 'yellow')
begin_fill()
for _ in range(n):
for _ in range(4):
forward(length)
left(90)
left(angle)
length = length * 1.03
end_fill()
done()
def hello():
print('hello, world')
hello() # hello, world
# 引数付き
def greet(to):
print('hello, ' + to)
greet('Alice') # hello, Alice
# 足し算 (戻り値を返す)
def sum(num1, num2):
return num1 + num2
print(sum(3, 4)) # 7
# 型が指定されていないので文字列連結にも使えてしまう!
print(sum('hoge', 'fuga')) # hogefuga
# 再帰を使ったフィボナッチ数列
def fib(n):
if n <= 2:
return 1
return fib(n - 1) + fib(n - 2)
print(fib(4)) # 3
print(fib(20))
#関数について
#http://www.tohoho-web.com/python/function.html
#キーワード lambda を使うと、名前のない小さな関数を生成できます。例えば lambda a, b: a+b は、二つの引数の和を返す関数です。ラムダ式の関数は、関数オブジェクトが要求されている場所にならどこでも使うことができます。
pairs = [(1, 'one'), (2, 'two'), (3, 'three'), (4, 'four')]
pairs.sort(key=lambda pair: pair[0])
print(pairs)
pairs.sort(key=lambda pair: pair[1])
print(pairs)
# yield を使ったフィボナッチ数列
# 難しいのでこんなのもあるよ程度に
def yield_fib(n):
a = 1
b = 1
while a < n:
yield a
a, b = b, a + b
for i in yield_fib(4):
print(i, end=", ") # 1, 1, 2, 3
def myfunc():
yield 'one'
yield 'two'
yield 'three'
for x in myfunc():
print(x)