Paizaのスキルチェックの例題のデバッグをJupyterとかのローカル環境でやるときの入力の手間を省きたい【Python】
挨拶
本記事が初投稿です。気になったことなどをほそぼそと書いていきたいと思いますのでよろしくおねがいします。
はじめに paizaスキルチェックとは
paizaスキルチェックとは、paiza株式会社が運営するpaizaという、IT人材の育成、就活支援を目的としたサイトで受けられるプログラミングのスキルテストです。
ユーザーはこのスキルチェックでクリアできた問題の難易度に応じてランク付けされ、コードを見た企業からスカウトされることもあります。
この記事の目的
出題例デバッグ時の面倒なコピペ作業からの脱却
paizaのスキルチェックを含むプログラミングテストの問題にはたいてい例題として入力例と出力例が載っていて、まずはその例題から試しますよね。
paizaの場合、問題画面の最下部からオンライン上で試しに実行して動作を確認できますが、難易度が上がり、コードが長くなってくるとJupyter Notebookなどで小分けにデバックしたくなると思います(少なくとも私はそうなります)。
その際は入力例をコピペして使うことになりますが、いちいち一行ずつ写すのは面倒ですし、とはいえ提出する時の形のまま書きたいという気持ちもあります。
ということでなんとかしたい、なんとかしよう。ということでなんとかしました。
どうしたか
単刀直入に申しますと、input()
関数をオーバーロード、というか上書きしました。
以下の画像は、paizaラーニング スキルチェック入門編の入力例です。
これを
こう代入するだけで使える関数を作るところが目標です。
・
・
・
def preinput(input_text):
out=input_text.split("\n")
for i in out:
yield i
def input(reset=False):
global input_text,inp
if reset:del inp,input_text,repeat;return
try:return inp.__next__()
except:
if repeat:inp=preinput(input_text)
return inp.__next__()
def def_input(s,isRepeat=False):
global input_text,inp,repeat
input_text=s
repeat=isRepeat
inp=preinput(input_text)
できました(雑)。
これをpyファイルとしてデバックを行うディレクトリに置いてインポートして使います。
from paiza_test import*
先程のように入力例を代入した変数を用意して、def_input()
関数に放り込めば準備完了です。
input_text="""6
apple
book
information
note
pen
pineapple"""
def_input(input_text)
あとはデバッグしたいコードを提出したいそのままの形で書くことができます.
n=int(input())
for i in range(n):
print(input())
apple
book
information
note
pen
pineapple
デフォルトでは入力が最後まで行くと次呼び出した際にエラーを吐きますが、def_input()
を呼ぶ際に引数のisRepeat
をTrue
に指定すれば繰り返し頭から出力します。
def_input(input_text,isRepeat=True)
n=int(input())
for i in range(3*n):
print(input())
apple
book
information
note
pen
pineapple
6
apple
book
information
note
pen
pineapple
6
apple
book
information
note
また、引数reset
をTrue
にして呼び出すとdef_input()
を呼び出す前の状態にリセットされます(戻り値はありません)。
def_input(input_text)
input(reset=True)
input() #------> error
3/16追記
isRepeat
の設定タイミングをdef_input()
呼び出し時に修正。
まとめ
この記事が同じ不満を抱いている人に届いて、お役に立てたら嬉しいです…
paiza以外にもAtCoderなど他のプログラミングコンテストのデバッグにも使えると思います。
もっといい方法や改善点があるよーって方はコメントを頂けると幸いです。
Author And Source
この問題について(Paizaのスキルチェックの例題のデバッグをJupyterとかのローカル環境でやるときの入力の手間を省きたい【Python】), 我々は、より多くの情報をここで見つけました https://qiita.com/Cartelet/items/1b351f3674dfa7d2fef3著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .