2.7ベース。
(1) はこちら。
条件文・制御構造
真偽
Python ではすべてのオブジェクトに対し、bool値として扱われたときに True になるか False になるかが決められている。
オブジェクト | 真偽 |
---|---|
False、None、0(整数、浮動少数、虚数)、空文字列、空リスト、空タプル、空ディクショナリ | False |
それ以外 | True |
>>> a = 0
>>> print a == 0
True
>>> print a == True
False
>>> print a == False
True
>>> a = 1
>>> print a == True
True
>>> print a == False
False
if
条件式の末尾にはコロンを付ける。
>>> a = 0
>>> if a:
print 'TRUE'
else:
print 'FALSE'
FALSE
# not による反転
>>> if not a:
print 'TRUE'
else:
print 'FALSE'
TRUE
# isinstance で型の判定
>>> if isinstance(a, int):
print 'Integer'
Integer
# 比較演算子は標準的なもの
>>> if a <= 3
print 'Less than 3'
Less than 3
# リストやタプルの要素に含まれるかどうかを in または not in で
>>> list = [0,1,2,3,4]
>>> if 3 in list
print 'found'
found
# elif で条件追加
a = raw_input('input number >')
a = int(a)
if a < 5:
print 'less than 5'
elif a < 10:
print 'less than 10'
else:
print 'greater than or equal to 10'
論理演算子
- x and y
- x or y
- not x
>>> a = 5
>>> if a > 3 and a < 5:
print 'True'
else
print 'False'
False
while
>>> while a < 3:
... print('sushi')
... a += 1
...
sushi
sushi
sushi
for..in..
リストやタプルに対して Iterator として使う。
>>> sushi = ['maguro', 'hamachi', 'engawa']
>>> for s in sushi:
... print s
...
maguro
hamachi
engawa
range
組み込み関数 range()は、等差数列を要素とするリストを生成する。
>>> for i in range(3):
... print 'hoge'
...
hoge
hoge
hoge
- range(x)
0〜xまでのリストを作成 - range(x, y)
x〜yまでのリストを作成 - range(x, y, z)
x〜y-1までの範囲でzごとのリストを作成
例外処理
try:
例外が発生する可能性のある処理
except 例外名:
エラー処理
else:
例外が発生しなかったときの処理
finally:
必ず通る処理
a = ['a', 'b', 'c']
number = int(raw_input('input a number > '))
try:
b = a[number]
except IndexError:
print 'index error!(' + str(number) + ')'
else:
print b
finally:
print 'end of program'
サンプル:計算問題チャレンジ
# モジュールをインポート
import time
import random
num_of_times = 5
game_time = 25
num_of_range = 100
start_time = time.time() # 現在時刻
for i in range(num_of_times):
# 2ケタのランダム足し算を作成
a = random.randint(1, num_of_range)
b = random.randint(1, num_of_range)
c = a + b
ans = input(str(a) + '+' + str(b) + '= ' ) # キーボードからの入力を ans に代入
if ans != c:
print 'wrong answer'
print 'answer is ' + str(c)
break
elif time.time() - start_time > game_time:
print 'timeout'
break
else:
print 'Bingo!'
else:
# forループを抜けたとき(全問正解)のみここを通る
print 'Complete!'
print 'end of program'