プログラマーの転職や新卒を支援するサービス paiza で、スキルチェックをする時によく使う文法です。
pythonは普段は全く触っておらず初心者ですが、とにかく普段触っていないので忘れちゃうので。
(2017/1/9 配列の初期化とBoolean値を追加)
基本
変数定義
定義せず、いきなり使って大丈夫です。
a = 1 b = "こんにちは"
四則演算記号
- 足し算 +
- 引き算 -
- 掛け算 *
- 割り算 /
- 剰余 %
省略記号
インクリメント(++)とデクリメント(--)はありません。以下の省略記法が使えます。
a += 1 a -= 10 a *= 2 a /= 3 a %= 2
コメント
# から行末までコメントです。
# 行末までコメント
''' から ''' までの間は複数行でコメントにできます。
''' 複数行 コメント '''
Boolean値
Booleanは、 True と False
出力関連
変数などを出力
print(data)
数値を文字列化
print("1+1は"+str(2)+"です")
- 出力例
1+1は2です
改行しないで出力
print()は通常、最後に改行を自動的に挿入します。コンマに続けてend=""とすると、単語の後につける文字を制御できます。""として空文字にすることで改行しなくなります。
print("改行", end="") print("なし", end="")
- 出力例
改行なし
入力関連
1行入力
input()
スペース区切りの文字列を配列に分解する
- 入力例
0 1 2 3 4 5
- コード
datas = input().split(' ') print(datas)
- 出力例
['0', '1', '2', '3', '4', '5']
文字列を数値に変換
int(文字列)
前述のdatasの例に以下を加えると、最初と2番目の要素を足します。
print(int(datas[0])+int(datas[1]))
繰り返し文
回数での繰り返し(for)
回数繰り返しはrange()を使って以下のようにします。
- コード例
for i in range(10): print(str(i)+",", end="")
- 出力例
0,1,2,3,4,5,6,7,8,9,
データでの繰り返し
inの後ろに配列を指定すれば、要素を1つずつ取り出して、それを制御変数に代入しながらループするので便利です(foreach)。
構文は以下の通りです。
for 制御変数 in 配列: 繰り返しブロック
- コード例
datas = ["こんにちは", "今日は", "よい天気です。"] for data in datas: print(data)
- 出力例
こんにちは 今日は よい天気です。
条件での繰り返し(while)
構文は以下の通りです。
while 繰り返し条件: 繰り返しブロック
- コード例
sum = 1 while sum<10: print(sum, end=", ") sum+=sum
- 出力例
1, 2, 4, 8,
if文
基本文法は以下の通りです。elifやelseは省略できます。
if 条件式1: 条件式1が成立した時の処理ブロック elif 条件式2: ここまでの条件が不成立で、かつ、条件式2が成立した時の処理ブロック elif 条件式3: ここまでの条件が不成立で、かつ、条件式3が成立した時の処理ブロック else: ここまでのすべての条件が不成立だった時の処理ブロック
配列
定義の定義
- コード例
a = [] b = [0, 1, 2, 3] c = [[0,1], [2,3], [4,5]] print(a) print(b) print(c)
- 出力例
[] [0, 1, 2, 3] [[0, 1], [2, 3], [4, 5]]
配列の最後に要素を追加する
a = [] a.append(1) a.append(2) print(str(a[0])+","+str(a[1]))
- 出力例
1,2
配列から要素を削除
pop()で最後尾の要素を削除、pop(インデックス)で指定のインデックスの要素を配列から削除します。pop()は、削除した要素を返します。
- コード例
a = [0, 1, 2, 3] # 最初の状態を表示 print(a) # 最後の要素を取り出して削除 print(a.pop()) print(a) # 最初([0])の要素を取り出して削除 print(a.pop(0)) print(a)
- 出力例
[0, 1, 2, 3] 3 [0, 1, 2] 0 [1, 2]
連想配列
通常の配列は、通し番号になるので、 a["name"]="ぼく" のような代入はできません。その場合は、以下のようにします。
- コード例
a = {"name": "ぼく", "sex": "男"} print(a["name"]) print(a["sex"])
- 出力例
ぼく 男
JavaScriptとは"の有無が異なるので注意です。
以下のように、配列と組み合わせることができます。
- コード例
a = [] a.append({"name": "ぼく", "sex": "男"}) a.append({"name": "わたし", "sex": "女"}) print(a[0]["name"]+":"+a[0]["sex"]) print(a[1]["name"]+":"+a[1]["sex"])
- 出力例
ぼく:男 わたし:女
指定の値で埋めた1次元配列を定義
基本文法は以下の通りです。
array = [埋めたい値]*行数
- コード例
datas = [1]*10 print(datas)
- 出力例
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
指定の値で埋めた2次元配列を定義
基本文法は以下の通りです。
array = [[埋めたい値]* 列数 for 制御変数 in range(行数)]
- コード例
datas = [[10] * 3 for i in range(5)] print(datas)
- 出力例
[[10, 10, 10], [10, 10, 10], [10, 10, 10], [10, 10, 10], [10, 10, 10]]
関数
以下、基本文法です。returnは省略できます。
関数定義は、利用する前に書きます。
def 関数名(引数リスト): 関数の処理 return 戻り値
- コード例
def add(a, b): return a+b print(add(1,2))
- 出力例
3
paizaのスキルチェックのコツ
スキルチェックの難点は、入力例が一通りしか用意されていない点です。それが成功しただけでは不安があります。自分でもテストデータを用意して、結果が正しくなるかをチェックしたいところです。
そのためには、最初に入力を全て済ませてから、処理を開始するような構造にするのがよいです。そうしておくことで、入力と処理の間に、テスト用のデータを代入することで、簡単にテストを実施することができるようになります。
# 入力ブロック count = int(input().rstrip()) inputs = [] for i in range(count): inputs.append(input()) # テストデータを設定 count = 5 inputs = ["3", "4", "1", "5", "10"] # 処理 sum = 0 for data in inputs: sum += int(data) # 出力 print(sum)
このようにしておくことで、「テストデータを設定」の場所に、自分のテストデータを差し込んで、結果を確かめることができます(paiza.ioを使う方が楽かもですが)