🐍

サラッとPython入門 ~条件分岐から関数まで~

2021/01/30に公開

条件分岐

値比較

name = "kite"

if name == "kite":
    print("Hi {}".format(name))
elif name == "nancy" or name == "michel":
    print("Hello {}".format(name))
else:
    print("Oops, sorry what was your name again")
Hi kite

数値比較

BIRTH_AGE = 0
ADULT_AGE = 20
age = 19

if BIRTH_AGE <= age < ADULT_AGE:
    print("You are a minor")
You are a minor

その他

指定した値が含まれているかの確認にはinを使います。

friends = {"kite", "michel", "nancy"}
purpose_name = "kite"

if purpose_name in friends:
    print("You are friends")
You are friends

繰り返し

for

  • インデックス指定によるfor文
friends = ['kite', 'taylor']

# len()によりfriendsの長さを取得し、取得した長さに対しrange()を使う
# range()では0からfriends長さ-1までの数値を生成する
for i in range(len(friends)):
    print("Hi {}".format(friends[i]))
Hi kite
Hi taylor
  • 拡張for文
friends = ['kite', 'taylor']

for friend in friends:
    print("Hi {}".format(friend))
Hi kite
Hi taylor
  • enumerateによるfor文
friends = ['kite', 'taylor']

# インデックスと値をセットでforを回す
for idx, friend in enumerate(friends):
    print("{}. {}".format(idx, friend))
0. kite
1. taylor
  • Dictのfor文
person_info = {"name": "kite", "age": 15, "height": 175}

for key, value in person_info.items():
    print(key, value)
name kite
age 15
height 175
  • zipによるfor文
name_data = ["kite", "satoru", "taylor"]
age_data = [15, 18, 20]
height_data = [175, 180, 173]

# 複数のリストをまとめて回す際などに使う
for name, age, height in zip(name_data, age_data, height_data):
    print("--------------")
    print("name : {}".format(name))
    print("age : {}".format(age))
    print("height : {}".format(height))
--------------
name : kite
age : 15
height : 175
--------------
name : satorusyouya
age : 18
height : 180
--------------
name : taylor
age : 20
height : 173

while

while True:
    remark = input("Come clean!! -> ")
    if remark == "I did":
        print("Arrest you!!")
        break
    print("Do not tell a lie!!")
Come clean!! ->  I did not
Do not tell a lie!!
Come clean!! ->  I did not..
Do not tell a lie!!
Come clean!! ->  Probably not...
Do not tell a lie!!
Come clean!! ->  I did
Arrest you!!

内包表記

list内包表記

# 1~100の数から偶数だけを抽出したリストを生成したい場合
even_numbers = [x for x in range(101) if x % 2 == 0]
print(even_numbers)
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38,
40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76,
78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100]

dict内包表記

# 名前のリストにIDを付与してdictに変えたい場合
names = ['kite', 'satoru', 'taylor']
name_holder = {idx:name for idx, name in enumerate(names)}
print(name_holder)
{0: 'kite', 1: 'satoru', 2: 'taylor'}

関数

my_friends = ['michel', 'kite', 'satoru', 'taylor']

# name="kite"などと記述すれば、引数指定が無い場合のデフォルト引数の設定も可能となります
def is_friend(name):
    return name in friends

print(is_friend('kite'))
print(is_friend('nancy'))
True
False

ラムダ式

lambda

# 指定された数値が偶数か確認する
# lambda 引数: 引数に対してする処理
func = lambda x: x % 2 == 0
print(func(1))
print(func(10))
False
True

map

# friendsに対して、lambdaで一つづつ回して小文字変換を適用させる
# map(処理, 処理を適用させたい変数)
friends = ['SATORU', 'KITE', 'NANCY']
friends = list(map(lambda name: name.lower(), friends))
print(friends)
['satoru', 'kite', 'nancy']

filter

# 1~100の間で偶数のみを抽出
# filter(条件処理, 処理を適用させたい変数)
even_numbers = list(filter(lambda x: x % 2 == 0, range(101)))
print(even_numbers)
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38,
40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76,
78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100]

Discussion