[Python3] 特徴と基本構文
CS50 の week 6 で Python 3 の基本的な書き方を学んだ。これからのために、 Python 3 の特徴と基本構文をメモしておく。これまでの講義で使っていた C 言語の構文との違いを比較しながら。ここでは条件文やループとかの書き方をまとめた。
特徴
コンパイルが必要ない ( インタプリタ言語 )
ファイルは .py
( パイと読む ) ファイル
実行方法は python hoge.py
<書き方全体>
セミコロンがいらない
→ インデントが代わりとなり、ブロックの始まりと終りを表現する
インデントは半角スペース
4 つ、またはタブ
→ 両方使えるけど、半角スペースとタブが混ざるとエラーとなる
if
とか ループに {}
がいらない
データタイプ
bool | True / False ( 頭文字が大文字 ) |
float | 浮動小数点 |
int | 整数 ( integer ) |
str | 文字列 ( string ) |
range | 数列 ( sequence of numbers ) |
list | C でやった linked list 的なやつで、要素の追加や削除ができる ( これを mutable という ) シーケンス 順序が保証され、重複した値を登録できる |
tuple | 後から要素の追加、変更、削除ができない ( これを immutable という ) シーケンス |
dict | C でやったハッシュテーブル的なやつで、キーバリュー型の集合 |
set | 重複が許されない値の集合 |
基本構文
プリント
まず C の例
int x = 10;
printf("x is %i\n", x);
python 3
x = 10
# 1
print("x is " + x)
# 2
print("hello,", answer)
# 3
print(f"hello, {answer}")
print
と書く
引数を複数入れることができる
コメントは #
1 の例: 連結に +
を使う
2 の例: 連結に ,
を使うと、デフォルトでは半角スペースを自動でいれてくれる
3 の例: format strings が使える
最初に f
を書くと、 {}
の中の引数を展開してくれる
※ f
をつけないと、hello, {answer}
と表示される
format strings は引数の展開だけでなく、式を入れることもできるし、書式指定とかいろいろできる
print(f"You are {age * 365} days old.")
変数が先にくるときは、途中に f
を入れる
print(name, f"born {val}", sep=" : ")
デフォルトで改行してくれる
なぜならデフォルトではこうなっているから
print("#", end="\n")
end=
のとこはオーバーライドすることができる
なので、改行したくない場合にはこう書く
print("#", end="")
# こう書くこともできる
print("#", end=".")
# 出力結果
# #.
,
の連結は sep=
でオーバライドできる
print("AAA", "BBB", sep=" | ")
# 出力結果
# AAA | BBB
“????" と表示したいとき、掛け算で書くことができる
print("?" * 4)
変数
C の例
int x = 10;
Python ではデータ型を指定しない
x = 10
文字列には、ダブルクォーテーションとシングルクォーテーションの両方が使える
char 型がない ( から両方使える )
str = "ABC"
# または
str = 'ABC'
条件文
()
がいらない、代わりにコロン ( :
) をつける
→ if
文が長くて改行したいときは ()
で囲んでもいい
→ 改行にはバックスラッシュ ( \
) を使ってもいいelse if
は elif
になる&&
は and
、 ||
は or
となるx != y
は not x == y
と書ける14 < x <= 50
と条件を繋げて書ける
Python 3
if x < 13 or y == 10:
# code block 1
elif x > 50 and not y == 0:
# code block 2
elif (14 < x <= 50):
# code block 3
else:
# code block 4
改行の例
if (x < 13 or y == 10
or not z == 0):
# code block
# または
if x < 13 or y == 10 \
or not z == 0:
# code block
C の例
if ( x < 13 || y == 10)
{
// code block 1
}
else if ( x > 50 && y != 0)
{
// code block 2
}
else if (14 < x && x <= 50)
{
// code block 3
}
else
{
// code block 4
}
論理演算子
if
文で条件を複数書くときとか、ブール演算に使う
論理積(かつ): and
論理和(または): or
否定(ではない): not
比較演算子
結果は True
か False
で返ってくる
x == y | x と y が等しい |
x != y | x と y が等しくない |
x > y | x は y よりも大きい |
x < y | x は y よりも小さい |
x >= y | x は y と等しいか大きい |
x <= y | x は y と等しいか小さい |
x in y | x が y の中に存在する |
x not in y | x が y の中に存在しない |
三項演算子
hoge =
条件式が True
のときに返す値、または実行される式 if
条件式 else
条件式が False
のときに返す値、または実行される式
var = 'A'
alpha = True if var.isalpha() else False
C の例
char var = 'A';
bool alpha = isalpha(var) ? true : false;
ループ
()
がいらない代わりにコロン ( :
) をつける++
は存在しないので、 += 1
と書くdo-while
はない
while
Python 3 の例
cnt = 0
while cnt < 100:
print(cnt)
cnt += 1
C の例
int cnt = 0;
while (cnt < 100)
{
printf("%i\n", cnt);
cnt++;
}
for
C の例
for (int i = 0; i < 100; i++)
{
printf("%i\n", i);
}
Python 3 の例
for i in range(100):
print(i)
in range(xx)
と書いて範囲を指定できるin [0,1,2]
と書くこともできる
2 ずつカウントアップしたいとき
C の例
for (int i = 0; i < 100; i += 2)
{
printf("%i\n", i);
}
Python 3
for i in range(0, 100, 2)
print(i)
range(開始値, 終値, スキップしたい値)
と書ける