LoginSignup
3

More than 3 years have passed since last update.

posted at

updated at

Python 基本文法おさらい

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

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

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
What you can do with signing up
3