LoginSignup
2
3

More than 3 years have passed since last update.

Python 基本文法おさらい

Last updated at Posted at 2019-08-05

Pythonで開発しようとしていたらだいぶ文法を忘れていたので復習。

print()

python3では()が必須, ()がないとSyntaxErrorになる。

print('hoge')
=> hoge
  • 改行しない書き方

print関数はデフォルトは改行するようになっている

first_name = 'Bryan'
last_name = 'Cranston'

print(first_name)
print(last_name)
=> Bryan
Cranston

改行しないようにするにはendオプションに空文字を指定

print(first_name, end='')
print(last_name)
=> Bryan Cranston

print関数は引数に文字列を複数入れられるが、間に半角スペースが入ってしまう

state = 'ニューメキシコ州'
city = アルバカーキ

print (state, city)
=> ニューメキシコ州 アルバカーキ # 半角スペースが入る

半角スペースを入れたくない時もendオプションに空文字を指定

print(state, end='')
print(city)
=> ニューメキシコ州アルバカーキ

文字列の連結

=> f文字列を使う

上の例では、文字列を連結すれば済む話なので、連結の方法を書きます

print(f'{state}{city}')
=> ニューメキシコ州アルバカーキ

ダブルクォーテーションでも三連クォーテーションでも書けます

print(f"{state}{city}")
print(f'''{state}{city}''')
print(f"""{state}{city}""")
=> ニューメキシコ州アルバカーキ

三連クォーテーション

=> 複数行の文字列を定義するときに使用

text = '''
余命わずかの高校教師が家族のために挑む危険な副業。
それは麻薬の精製だった…。
サスペンス・ブラックユーモア・家族愛が奇跡の科学反応を起こしたドラマ。
'''

print(text)
=> 
余命わずかの高校教師が家族のために挑む危険な副業
それは麻薬の精製だった…。
サスペンスブラックユーモア家族愛が奇跡の科学反応を起こしたドラマ

最初の'''の直後から文字列なので最初に改行が入ってしまっている
最初に改行をしたくないときは \ マークを入れる

text = '''\
余命わずかの高校教師が家族のために挑む危険な副業。
それは麻薬の精製だった…。
サスペンス・ブラックユーモア・家族愛が奇跡の科学反応を起こしたドラマ。
'''

print(text)
=> 余命わずかの高校教師が家族のために挑む危険な副業
それは麻薬の精製だった…。
サスペンスブラックユーモア家族愛が奇跡の科学反応を起こしたドラマ

タプル型

タプル型とは変更不可の配列のこと
タプルの方が配列より実行速度が速い

# 書式
hoge = (1, 2, 3, 4, 5)

# タプルは()を省略できる
hoge = 1, 2, 3, 4, 5

ミュータブルとイミュータブル

変更可能な型をミュータブル
変更不可な型をイミュータブル

配列はミュータブル(変更可)、文字列や整数はイミュータブル(変更不可)

# 配列はミュータブル
arr = [1, 2, 3, 4, 5]
arr[2] = 4
print(arr)
#=> [1, 2, 4, 4, 5]

# タプルはイミュータブル
tuple = (1, 2, 3, 4, 5)
tuple[2] = 4
#=> TypeError

# 配列をタプルにする
tuple(arr)

# タプルを配列にする
list(tuple)

# タプルで値が1つしかないものを作るときはカンマを書く
# NG
tuple = ('hoge')
print(type(tuple))
#=> <class 'str'>

# OK
tuple = ('hoge', )
print(type(tuple))
#=> <class 'tuple'>

モジュールを使う

# インポート
# import モジュール名
import calendar

# クラスを読み込む
# from モジュール名 import クラス名1, クラス名2...
from calendar import TextCalendar

# モジュールのクラスからインスタンス生成
# モジュール名.クラス名(引数)
calendar = calendar.TextCalendar(firstweekday=6)

in演算子

=> 要素があるか調べる

drama = 'prison break'
movie = 'dark night'

dramas = ['24', 'prison break', 'lost', 'breaking bad']

drama in dramas
#=> True

movie in dramas
#=> False

# not in で要素がないか調べる
drama not in dramas
#=> False

movie not in dramas
#=> True

三項演算子(Pythonでは条件式という名前)

# 書式
# 変数 = 真の場合 if 条件 else 偽の場合

age = 19
msg = 'お酒NG' if age < 20 else 'お酒OK' 
print(msg)
#=> お酒NG

for文

# 書式

# for 変数 in イテレート可能なオブジェクト:
#   処理

artists = ['ダヴィンチ', 'ミケランジェロ', 'ルーベンス']
for artist in artists:
  print(artist)

#=> ダヴィンチ
ミケランジェロ
ルーベンス

# range()を使って指定回数繰り返す

for i in range(3):
  print(i)

#=> 0
1
2

# for文1行目「:(コロン)」をとにかく忘れやすい
# Pythonではインデントをそろえた部分がブロックとなっている

if文

# 書式
# if 条件式1:
#   処理1
# elif 条件式2:
#   処理2
# else:
#   処理3

elif...elif...$\mathbb{elif}$

クラス定義

# class クラス名:
#   def メソッド名(引数):

class DragonQuestYourStory:
  def throw_poop(mental):
    mental * 0.8

コロン地獄

while

# 書式
# while 条件式:
#   処理
#   処理

# 無限ループ
# while (True):
#   処理
#   処理

# IoTだと無限ループ使うと思いますが、どこかでbreakを入れる

num = 0
while True:
  if num > 10:
    print('試行回数10回を超えました')
    break
  num += 1

とりあえず今回はここまで。本当にコロン忘れがち。

2
3
2

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
2
3