Easy Coding

ノートみたいなもの。

【入門】pythonで繰り返し処理【while, for】

pythonで繰り返し処理、やっていきます

まず、while文で「条件を満たしているあいだループする」、ということをやっていきます

#whileループ
i = 0

while i<10 :
	print(i)
	i += 1 # i++ というインクリメントは使えないようだ.注意しておこう

結果は

0
1
2
3
4
5
6
7
8
9

OK. 見慣れた挙動で安心する



次に、forループの扱いについてなのだけれど

少しだけCやJavaと違った感じの印象を受ける使い方だった

「for 変数 in リスト」という書き方をして、リストの要素数ぶんの回数ループを回し、各回ごとに変数にリストの各要素が順番に入るらしい

自分で言っていても、よくわからないので書く、まず、書こう

l = ["いちばんめ","にばんめ","さんばんめ"] #これがリストですね 要素は3つ

for n in l:
	print(n)

結果は

いちばんめ
にばんめ
さんばんめ

こうなるんですねぇ

慣れればすごく便利そうだ

それでも、いつもの「for(i=0;i<10;i++){}」みたいなのが恋しくなったら、[0,1,2,3,4,5,6,7,8,9]というリストは「range(10)」で表現され、

「for i in range(10):」とすれば、あの普通のfor文っぽく使える模様

試しておく

for i in range(10):
	print(i)
0
1
2
3
4
5
6
7
8
9

グッド



while文とfor文の確認ができました

満足した

【入門】pythonで条件分岐【if, else】, それとキーボード入力【input】

pythonで条件分岐(もし~~なら実行)、やっていきたいと思います

pythonの記法の特徴として、if文の範囲を決める、他の多くの言語で言う中カッコ{}はインデントで表現するらしい

#条件分岐
num = 1

if num == 1 :
	print("numは1です")

if num != 1 :
	print("numは1ではない")

実行結果

numは1です

良い 

続いて他の言語で言う「else」や「else if」の扱い

elseはそのままなのだけれど、else ifは「elif」になるらしいです


それと、条件分岐の確認ついでにキーボード入力も勉強しました

input()で文字列を入力できるみたいだ

やってみる

print ("入力を")
inputNum = input()

if inputNum == 1:
	print("入力は1ですね")
elif inputNum == 0:
	print("入力は0ですね")
else :
	print("入力は1でも0でもないですね");

実行結果

入力を
0
入力は1でも0でもないですね

あれぇ

ググってきました(参考サイト:
Python入門(2)
)

文字列(inputはstr型で受け取っているらしい)とint型整数を比較しているので、条件分岐に引っかからなかったみたいです

入力した文字列型の数字を、int型に直してやって分岐し直しました

print ("入力を")
inputNum = input()

if int(inputNum) == 1:
	print("入力は1ですね")
elif int(inputNum) == 0:
	print("入力は0ですね")
else :
	print("入力は1でも0でもないですね");

結果

入力を
0
入力は0ですね

できた



条件分岐とキーボード入力を確認できた

満足である

【入門】pythonで算術演算【+, -, *, /, %, **, //】

pythonで算術演算をする確認をします 

まずは基本の四則演算から 

#! /usr/bin/python

#四則演算
num1 = 5
num2 = 3

ans1 = num1+num2
ans2 = num1-num2
ans3 = num1*num2
ans4 = num1/num2

print(ans1)
print(ans2)
print(ans3)
print(ans4)

実行結果は......

8
2
15
1.6666666666666667

正しそう 良い



次に、num1をnum2で割ったときの余りを出す「%」の確認

#! /usr/bin/python

num1 = 5
num2 = 3

#割ったあまり
ans5 = num1%num2
print(ans5)

実行結果は......

2

これも定番だ できてる 



そしてここで、pythonの便利さに舌を巻くことになる

「**」でn乗できる

「//」で切り捨て除算できる

#! /usr/bin/python

num1 = 5
num2 = 3

#n乗と切り捨て除算
ans6 = num1 ** num2
ans7 = num1 // num2
print(ans6)
print(ans7)

実行結果は......

125
1

できてる!

べき乗の計算は他の言語ではいつも関数を呼び出さないといけなかったのを思うと、演算子でできるのはたいへんクールだ!



以上、算術演算各種まとめ

他の言語と同じようにできることや、べき乗の簡単さに満足した

【入門】pythonで数値を扱う【int, long, float, complex】

pythonで計算を行います

型は自動になっているよう

まずはint型

#! /usr/bin/python
#pythonで計算する

#int型
num1 = 1
num2 = 2
print(num1)
print(num2)

実行結果

1
2

int型だ。範囲は2^31-1や2^63-1など、システムごとに変化するらしい

ぼくの環境(Python 3.4.3)でのintのmaxValueを求めてみておく

import sys
intMaxValue = sys.maxint
print(intMaxValue)

ところがエラー

AttributeError: 'module' object has no attribute 'maxint'

ググったところ、pythonのバージョン3系ではint型がlong型と統合しており、最大値がいくらでも増加し続けられるらしい

(javaやCしか使ったことのないぼくとしては”すごい! 感動した!”という感じだぜ......)

ただ、無限と判定したいときや、経路探索で評価最低などが欲しい時に”とにかく大きい数値”というのは需要がある

そのためにmaxsize定数というのが存在しているらしい

#intの大きな数値
import sys
intMaxValue = sys.maxsize
print(intMaxValue)

さぁ、結果は

2147483647

おお、見慣れた21億......

intMaxOver1 = 2147483647 + 1
intMaxOver2 = 2147483647 * 10000000
print(intMaxOver1)
print(intMaxOver2)

実行結果

2147483648
21474836470000000

しかも、確かに最大値を大きく超えても問題がないようだ、すごい

(ぼくがキャリを用意するのが面倒でjavaで実装できなかったライフゲームのビットボードを、pythonなら実装できそうだ。それに付随して、次は二進数や論理演算の記事を書きたい)



さて、次はfloat型

#float型
num1 = 3.14
num2 = 3.14e5 # 3.14*10^5
print(num1)
print(num2)

実行結果

3.14
314000.0

小数点を打てば浮動小数点(float)型になり、「eN」を使って10のN乗を表現

うん、もんだいない



それに加えて、complex型というのを不勉強なぼくは初めて知った

虚数を扱えるとのこと。制御などで多分に出番がありそう

#complex型
num1 = 3.14j
num2 = 3.14j * 3.14j
print(num1)
print(num2)
3.14j
(-9.8596+0j)

二乗で負の数になっている

しかも、表記がちゃんと複素表記で「0j」を残すなんて、有能そうな感じだ



満足した

かなり使い勝手が良さそう



(参考サイト:
Python : 整数最大値、辞書項目数の最大値: enajet
このサイト様の最大値がぼくのよりはるかに大きいのが気になる......)