闇Pythonistaになって競プロを始めよう!
ここではPython3を使っています Download Python
未完成なPythonの入門と闇Pythonっぽい書き方についてのページです
# #の後ろに書かれた文字はコメントとしてプログラムでは無視されます
# 入力を受け取り変数aに代入します。変数は好きな名前で構いません
a = input()
# 変数aの中身を出力します
print(a)# 入力例
# 5
# 1
a = input()
b = input()
c = int(a) # 文字として受け取るので数値型に変換しないといけない
d = int(b)
print(c+d)
# 出力
# 6# 入力例
# 5 1 2 6
# 行で区切られているのではなく空白で区切られている場合はこう書きます
# inputで受け取った文字列を空白で区切りのリスト['5', '1', '2', '6']にし、整数型に変換するintとリスト['5', '1', '2', '6']をmapに渡して各要素ごとにintを適用しています
# mapで変換するとmapオブジェクトになるのでlistでリストに変換します[5, 1, 2, 6]
a = list(map(int, input().split()))
print(a[0] + a[1] + a[2] + a[3])
# 出力
# 14
# プログラムをもっと短く書くこともできます
# この場合はリストに変換する必要はありません
a, b, c, d = map(int, input().split())
print(a + b + c + d)
print(sum(map(int,input().split()))# 入力例
# 5 1 2 6
a, b, c, d = input().split()
print(a + b + c + d)
# 出力
# 5126
# もっと短く書くこともできます
print(''.join(input().split()))
# つなげるのではなく空白を削除することでも同じような結果になります
print(input().replace(' ', '')))#! /usr/bin/env python3
Unix環境でスクリプトを読み込むインタプリタを指定するものですWindows環境でもPythonランチャーのpy.exeで有効なので書くようにすると良いですが闇Pythonを提出する時には当然消します。
フルパスで指定されているpython3
#! /usr/bin/python3
環境変数のどこかにあるpython3を探す
#! /usr/bin/env python3以下出力 ..
if -1:
print(1)
else:
print(0)
.. 1
if 0:
print(1)
else:
print(0)
.. 0
# True 1, -1, [1], [0], 'a'...中身ありそうなのはTrue
# False None, 0, [], (), {}, ''...空っぽいのはFalse# Noneの入ったリストなのでTrue 無限ループ
a=0
while[print(a)]:a+=1# lambda 引数 : 式
# ↓と同じ感じになる
# def f (引数) : return 式
f = lambda x : x * 5
print(f(5))
.. 25# 入力
# 5 1 2 6
a, *b =input().split()
print(a, b)
.. 5 ['1', '2', '6']# 入力
# 5 1 2 6
a, *b, c = input().split()
print(a, b, c)
.. 5 ['1', '2'] 6a = [x for x in range(3)]
print(a)
.. [0, 1, 2]
a = [x for x in range(6) if x % 2 == 0]
print(a)
.. [0, 2, 4]
a = {k : v for k, v in zip(range(3), 'abc')}
print(a)
.. {0: 'a', 1: 'b', 2: 'c'}a = 0
if 1 : a = 3
for i in range(a) : print(i)
while a : a -= 1
print(a)
.. 0
.. 1
.. 2
.. 0# セミコロンの後に書くことができる
a=[x for x in range(3)]
print(a)
a=[x for x in range(3)];print(a)
# if文やループ文は;の後ろに書けない
# x
a=1;if a==1:print(1)
# o
a=1
if a==1:print(1)a = [1, 2]
b = a # 参照渡しになってしまう
b[0] = 2
print('a :', a, ' b :', b)
.. a : [2, 2] b : [2, 2]
a = [1, 2]
b = a[:] # スライスでコピーできる
b[0] = 2
print('a :', a, ' b :', b)
.. a : [1, 2] b : [2, 2]# *を使ったリストのアンパッキングでprint(5, 1, 2, 6)と同じになります
print(*[5, 1, 2, 6])
.. 5 1 2 6
# Python3.5~ AtCoder(2018-4-10 Python3.4)
# リスト中でのアンパッキングと複数回のアンパッキング
print([*[5, 1, 2], 6])
.. [5, 1, 2, 6]
print(*[5, 1], *[2, 6])
.. 5 1 2 6
print(*[5, 1, 2], 6)
.. 5 1 2 6a, b, c = 'abc'
for i, j in ['ab', 'cd']:
print(i, j)
.. a b
.. c da.reverse()
a[::-1]a.append(0)
a += [0]a['key'] = 0a.add(0)
a = {0}print(len([0, 1, 2]))
.. 3print('11' in '1211')
.. True
print(1 in [0, 1, 2])
.. True
print('1' in {'1':1, '2':2})
.. Truea, b = 1, 2
b, a = a, b
print(a, b)
.. 2, 1if a < t and t < b : print(1)
if a < t < b : print(1)for i in range(100) : print(1)
for i in 'a' * 100 : print(1)
exec('print(1);' * 100)print(1 if True else 0)
.. 1print([0, 1][True])
.. 1# 0なら0から2ずつなので0,2,4
# 1なら1,3が取り出されます
print('YNeos'[a::2])['false','true'][式]
'ftarlusee'[式::2]
str(式).lower()
`式`.lower() # python2onlyimport sys
for i in sys.stdin : print(i)
i = open(0).read()
print(i)入力
a
b
c
を受け取り繋げて表示
a=input();b=input();c=input();print(a+b+c)
print(input()+input()+input())
i=input;print(i()+i()+i())
i=input;i(i()+i()+i())# o
1if 1else 0
'1'if'a'else'0'
[1]if[1]else[0]
# x
1 if1 else0
1 ifa else 0
1 if aelse 0
i=1;exec("f,b=i%3<1,i%5<1;print([i,'Fizz'*f+'Buzz'*b][f|b]);i+=1;"*int(input()))
for i in range(int(input())):print(i%3//2*'Fizz'+i%5//4*'Buzz'or i+1)a=[0,1]
exec('a+=[a[-1]+a[-2]];'*int(input()))
print(a[:-2])print(True+True)
.. 2d=int(input())
n=int(input())
s='0'*(d<1)
while d>0:s='0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'[d%n]+s;d//=nd=int(input())
s=bin(d) # 16進数ならhex(d)s='FF'
d=int(s,16) # 2進数ならint(s, 2)d, m = divmod(57, 3)- グローバル変数は遅いので何度もアクセスしないorすべて関数の中に書く
def main():
# ここに書く
if __name__ == '__main__':
main()- リスト内法表記は早いので使える場面なら使う
- Pythonで書くと遅いので組み込まれてる機能があるならそれ使ってなるべく書かないようにする
- 数倍程度早ければ通るならPyPyで提出する
ここまで来れば闇Python力がかなりついてきたはずだ
ここで力を試してみよう!
Q もしかしてPythonってコードゴルフ強いんですかっ!?
A いいえ。なので言語別で楽しみましょう。
- トップ
- TopCoder MarathonMatchの始め方
- TCO18 MM R1 - RoadsAndJunctions
- AtCoderの始め方
- 闇Python入門
- 海老ライブラリ
- 海老バーチャルコンテスト
- ゴルフコード置き場
- VB.netでACしてみた