LoginSignup
4
6

More than 5 years have passed since last update.

Python 基礎文法(雑)めも(2)

Last updated at Posted at 2016-01-13

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'

4
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
6