pythonに慣れよう5

配列を使ってwhile文

# coding: utf-8
list = ["王将","飛車","角行","金将","銀将","桂馬","香車","歩兵"]
num = len(list)

i = 0
while i < num:
	print(list[i])
	i += 1
else:
	print("end")

[vagrant@localhost python]$ python app.py
王将
飛車
角行
金将
銀将
桂馬
香車
歩兵
end

while文の途中でbreakを入れる場合は

i = 0
while i < num:
	if list[i] == "桂馬":
		print("あとは雑魚")
		break
	print(list[i])
	i += 1
else:
	print("end")

なるほど
[vagrant@localhost python]$ python app.py
王将
飛車
角行
金将
銀将
あとは雑魚

range
以下のように書くと、10 9 8 .. 2 1 0となるかと思ったが、何も表示されない。rangeは足す時だけのようね。

for i in range(10, 0):
	print(i)
for i in range(0, 10):
	print(i)

あーはいはい、こういうことね。そりゃ出来ない訳ないよね♪

for i in range(10, 0, -1):
	print(i)

[vagrant@localhost python]$ python app.py
10
9
8
7
6
5
4
3
2
1

pythonに慣れよう4

pythonのif文を麻雀の役の計算で書いてみる。

chair = "parent"
yaku = int(input("yaku ? "))

if yaku == 1:
	print("lon, 2000")
elif yaku == 2:
	print("lon, 3900")
elif yaku == 3:
	print("lon, 7700")
elif yaku < 6:
	print("mangan, 12000")
elif yaku < 8:
	print("haneman, 18000")
elif yaku < 11:
	print("baiman, 24000")
elif yaku < 13:
	print("sanbaiman, 36000")
else:
	print("48000, shuryodesu")
&#91;/python&#93;

&#91;vagrant@localhost python&#93;$ python app.py
yaku ? 6
haneman, 18000
yaku ? 24
48000, shuryodesu

ifを入れ子にする場合。インデントでずらす。
&#91;python&#93;
chair = "child"
yaku = int(input("yaku ? "))

if chair == "parent":
	if yaku == 1:
		print("lon, 2000")
	elif yaku == 2:
		print("lon, 3900")
	elif yaku == 3:
		print("lon, 7700")
	elif yaku < 6:
		print("mangan, 12000")
	elif yaku < 8:
		print("haneman, 18000")
	elif yaku < 11:
		print("baiman, 24000")
	elif yaku < 13:
		print("sanbaiman, 36000")
	else:
		print("48000, shuryodesu")
elif chair == "child":
	if yaku == 1:
		print("lon, 1500")
	elif yaku == 2:
		print("lon, 2900")
	elif yaku == 3:
		print("lon, 5800")
	elif yaku < 6:
		print("mangan, 8000")
	elif yaku < 8:
		print("haneman, 12000")
	elif yaku < 11:
		print("baiman, 18000")
	elif yaku < 13:
		print("sanbaiman, 24000")
	else:
		print("36000, shuryodesu")
else:
	print("see you again")
&#91;/python&#93;

&#91;vagrant@localhost python&#93;$ python app.py
yaku ? 4
mangan, 8000

Yes sir!

改行せずに1行で書くこともできる。
&#91;python&#93;
chair = "child"
yaku = int(input("yaku ? "))

print("tobimashita" if yaku > 4 else "I'm winner")

while文

i = 1
while i < 29: print("2月{0}日".format(i)) i += 1 [/python]

pythonに慣れよう3

# coding: utf-8
name = "Gennadiy"
skill = "3D modeling"
location = "West Hollywood, Russia"

print("name: %s, skill: %s, location: %s" % (name, skill, location))

[vagrant@localhost python]$ python app.py
name: Gennadiy, skill: 3D modeling, location: West Hollywood, Russia

この記法は、mysqlのset valueみたいですね。変数をstringからnumberに変えます。

# coding: utf-8
name = "Gennadiy"
skill = "3D modeling"
age = 18

print("name: %s, skill: %s, age: %d" % (name, skill, age))

[vagrant@localhost python]$ python app.py
name: Gennadiy, skill: 3D modeling, age: 18

%f はfloatになるので、コンパイルエラーになります。
Traceback (most recent call last):
File “app.py”, line 6, in
print(“name: %s, skill: %s, age: %f” % (name, skill, age))
TypeError: float argument required, not str

型指定しない記法もある。

print("name: {0}, skill: {1}, age: {2}".format(name, skill, age))

pythonに慣れよう2

# coding: utf-8
x = 598
print(x / 3)

[vagrant@localhost python]$ python app.py
199

print(True and False)

プログラミングの基礎やるとき、いつも思うんだが、これ何でFalseになるかね?
[vagrant@localhost python]$ python app.py
False

TrueとFalseなら、TrueFalseでいいと思うんだが。
美女 and 野獣 => 美女と野獣 でしょ。
美女 and 野獣 => 野獣 でもあながち間違いではないが。 あ、例がまずかった。

print("Data Scraping" + " +S\n")
print("Data Science" + " +A\n")

改行コードいれなくても勝手に改行されますね。この辺は、phpと違うようです。
[vagrant@localhost python]$ python app.py
Data Scraping +S

Data Science +A

pythonに慣れよう

# coding: utf-8
print("hello world")

[vagrant@localhost python]$ python app.py
hello world

変数

# coding: utf-8

msg = "機械学習頑張るぞ!"
print(msg)

[vagrant@localhost python]$ python app.py
機械学習頑張るぞ!

Python では 定数 はサポートされていない。慣習的に大文字とアンダーバー(_)のみの変数が固定値を表現する。

PI = 3.14
MAX_BUFFER_SIZE = 1024
msg = "機械学習\n頑張る\tぞ!"
print(msg)

[vagrant@localhost python]$ python app.py
機械学習
頑張る ぞ!

html = """<html><body>machine learning</body>
</html>"""
print(html)

[vagrant@localhost python]$ python app.py
machine learning

matlabとは

>>MATLAB(マトラボ)は、アメリカ合衆国のMathWorks社が開発している数値解析ソフトウェアであり、その中で使うプログラミング言語の名称

なるほど、機械学習に強いエンジニアだと、matlab使ってる人多いなー、という印象。
とりあえず、python行きましょうかね。

[vagrant@localhost ~]$ python -V
Python 2.7.14

[vagrant@localhost ~]$ python
Python 2.7.14 (default, Mar 12 2018, 22:03:33)
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 3 + 2
5
>>> exit()

file sizeの取得

$filename = "img/test.jpg";
$size = filesize($filename);
echo "ファイルサイズ:".$size."byte";

拡張子をxlsxとして、excelをアップロードすると、

move_uploaded_file($_FILES["file"]["tmp_name"], "./img/test.xlsx");

excelがアップロードされる。

pptxだと上手くいかない。何故だ。。

wordは”*.docx”でいける。何故だ。
もしかして、upload_max_filesize?

やっぱりそうか。

画像のアップロード

try {
	if($_FILES["file"]){
	move_uploaded_file($_FILES["file"]["tmp_name"], "./img/test.jpg");
	}
} catch(Exception $e){
	echo "error:", $e->getMessage().PHP_EOL;
}

?>

<body>
	<form action="" method="POST" enctype="multipart/form-data">
		<input type="file" name="file">
		<input type="submit" value="upload">
	</form>
</body>

amazon driveを自作しよう

機能としてはこんな感じか。
-ドキュメント、ビデオ、写真をアップロードできる。
-ドラック&ドロップでアップロードできる。
-ファイルサイズを表示する。
-アップロードファイルをURLで共有することができる。
-ファイルの中身をサムネイルで表示する。

URL共有、サムネイル表示あたりがわからん。

drop box, google drive, one drive, icloud

drop box

google drive

one drive

icloud

何気に、dropbox, google drive, one drive, icloud 全部使ってましたね。

ヤフーにも、Yahoo!ボックス というストレージサービスがあるらしいです。全然知りませんでした。

アマゾン drive

楽天はないみたい。。ストレージサービスつくりたいな。。