序文 現在インターンシップをしており、仕事量はそれほど多くないので、空き時間を利用してPATのウェブサイトでPython 3を使った問題を練習し、Python 3の機能や関数型プログラミングの概念を活用することに注力しています。ほとんどの問題は、1行に複数の数値や文字列を読み込む、1行に一定数の文字列を出力するなど、入出力の形式が似ているため、繰り返しコードが多く生成されます。 Pythonコード そこで、VS Code のコード スニペット機能を使用して、これらの入力と出力を処理するためのコード フレームワークを記述し、テスト関数を追加しました (関数を記述する前にテストを記述するのが正しい方法です)。コードは次のとおりです。 - 「データ入出力を備えたシンプルなコンソール プログラム」
- インポートシステム
- インポートio
-
-
- read_int() を定義します:
- 「一連の数字を読んでください。」 「」
- リストを返す(map( int , sys.stdin.readline().split()))
-
-
- test_read_int() を定義します:
- "" "read_int 関数をテストする" ""
- test_file = io.StringIO( "1 2 3\n" )
- sys.stdin = テストファイル
- read_int() == [1, 2, 3] をアサートし、 「read_int エラー」
-
-
- read_float() を定義します:
- "" "一連の浮動小数点数を読み取ります。" ""
- リストを返す(map( float , sys.stdin.readline().split()))
-
-
- test_read_float() を定義します:
- "" "read_float 関数をテストする" ""
- test_file = io.StringIO( "1 2 3\n" )
- sys.stdin = テストファイル
- read_float() == [1.0, 2.0, 3.0] をアサートすると、 「read_float エラー」が発生します。
-
-
- read_word() を定義します:
- 「文字列のシリーズを読みます。」 「」
- リストを返す(map(str, sys.stdin.readline().split()))
-
-
- def test_read_word():
- "" "read_word 関数をテストする" ""
- test_file = io.StringIO( "1 2 3\n" )
- sys.stdin = テストファイル
- read_word() == [ "1" , "2" , "3" ], "read_word エラー"をアサートする
-
-
- def combine_with(seq, sep= ' ' , num=None):
- "" "リスト列挙型を文字と結合し、文字列オブジェクトを返します" ""
- res = sep.join (リスト(マップ(str, seq)))
- numが なしではない:
- res = str(seq[0])
- 範囲(1, len(seq))内の要素の場合:
- 解像度 += 間隔 + \
- str(seq[element]) 要素% num != 0 の場合、そうでない場合 '\n' + \
- str(seq[要素])
- 戻り値
-
-
- test_combile_with() を定義します:
- "" "combile_with 関数をテストします。" ""
- combine_with([1, 2, 3, 4, 5], '*' , 2) == "" "1*2 3*4 5" "" , "combine_with エラー。" とアサートします。
-
-
- main() を定義します:
- 「メイン機能」
- 合格
-
-
- __name__ == '__main__'の場合:
- sys.exit( int (main()または0))
VS コード スニペット VS Code に追加されたデフォルトのコード スニペットは、おおよそ次のように動作します。 ファイル->オプション->ユーザーコードスニペットでPythonを選択 「python.json」ファイルを次のように編集します。 - {
- /*
- // Python用のスニペットをここに配置します。各スニペットはスニペット名で定義されます 接頭辞、本文、
- //説明。プレフィックスは、 スニペットをトリガーすると、本文が展開されて挿入されます。可能な変数は次のとおりです。
- // $1、$2はタブストップ、${id}と${id:label}と${1:label}は変数です。同じ IDを持つ変数は接続されます。
- // 例:
- 「コンソールに印刷」 : {
- 「プレフィックス」 : 「ログ」 、
- "体" : [
- "console.log('$1');" ,
- 「$2」
- ]、
- 「説明」 : 「コンソールにログ出力」
- }
- */
- 「データ入出力を備えたシンプルなコンソール プログラム」 : {
- 「プレフィックス」 : 「シンプル」 、
- "body" : [ "\"\"\"データ入力と出力を備えたシンプルなコンソール プログラム。\"\"\"\nimport sys\n\ndef read_int():\n \"\"\"一連の数値を読み取ります。\"\"\"\n return list(map(int, sys.stdin.readline().split()))\n\n\ndef read_float():\n \"\"\"一連の浮動小数点数値を読み取ります。\"\"\"\n return list(map(float, sys.stdin.readline().split()))\n\n\ndef read_word():\n \"\"\"一連の文字列を読み取ります。\"\"\"\n return list(map(str, sys.stdin.readline().split()))\n\n\ndef combine_with(seq, sep=' ', num=None):\n \"\"\"リスト列挙型を文字と結合し、文字列オブジェクトを返します\"\"\"\n res = sep.join(list(map(str, seq)))\n if num is not None:\n res = str(seq[0])\n for element in range(1, len(seq)):\n res += sep + str(seq[element]) if element % num != 0 else '\\n' + str(seq[element])\n return res\n\n\ndef main():\n \"\"\"メイン関数。\"\"\"\n pass\n\n\nif __name__ == '__main__':\n sys.exit(int(main() or 0))\n"
- ]、
- 「説明」 : 「データ入力と出力を備えたシンプルなコンソール プログラム」
- }
- }
要約する Python は、アルゴリズムの問題を解くなど、高いパフォーマンスが求められるシナリオには特に適していませんが、Python を使用すると、さまざまなキュー タイプや文字列処理条件などの一部のシミュレーション問題を解決する効率が大幅に向上します。さらに、cimport を使用すると、C 言語のデータ構造と Python の構文特性を使用できるため、ネイティブ C コードと同等の効率が得られます。 |