
    Ui;                         d dl mZmZmZmZ deeeef                  fdZdedeeeef                  fdZdedeeeef                  fdZ	dedefdZ
d	S )
    )ListDictAnyOptionalreturnc            $      ^   dddg dddddddg d	d
dddddg dddddddg dddddddg dddddddg ddddd dd!g d"d#d$dd%dd&g d'd(d)dd*dd+g d,d-d.dd/dd0g d1d2d3dd4dd5g d6d7d8dd9dd:g d;d<d=dd>dd?g d@dAdBddCddDg dEdFdGddHddIg dJdKdLddMddNg dOdPdQddRddSg dTdUdVddWddXg dYdZd[dd\dd]g d^d_d`ddaddbg dcdddeddfddgg dhdidjddkddlg dmdndoddpddqg drdsdtdduddvg dwdxdyddzdd{g d|d}d~ddddg dddddddg dddddddg dddddddg dddddddg ddddgS )u~  
    Python レベルテスト 30問 (3レベル × 10問)
    初級(level=1) → 中級(level=2) → 上級(level=3)
    各レベル10問を全問正解で次のレベルへ進む。
    
    NOTE: HTML表示するため、< > は &lt; &gt; にエスケープする。
    コードブロック(```)は使わず、コード部分は太字やインデントで表現する。
       ue   Pythonでコンソールに「Hello」と表示するための正しいコードはどれですか？)zecho('Hello')print('Hello')zconsole.log('Hello')zprintf('Hello')r
   u   Pythonではprint()関数を使ってコンソールに出力します。echoはPHP、console.logはJavaScript、printfはC言語の出力方法です。)idlevelquestionoptionsanswerreason   uD   次のPythonコードの実行結果は？

  x = 5
  print(type(x)))z&lt;class 'str'&gt;&lt;class 'int'&gt;z&lt;class 'float'&gt;z&lt;class 'number'&gt;r   uP   5は整数なので、type()関数はint（integer = 整数）を返します。   uB   Pythonで変数名として使えないものはどれですか？)my_name_count	2nd_valuetotalr   u   Pythonの変数名は数字で始められません。アルファベットかアンダースコア(_)で始める必要があります。   uw   次のコードの実行結果は？

  x = 10
  if x &gt; 5:
      print('大きい')
  else:
      print('小さい'))	   大きいu	   小さい	   エラーu   何も表示されないr   up   xは10で5より大きいため、if文の条件がTrue（真）となり「大きい」が出力されます。   uE   Pythonで「等しい」を比較する演算子はどれですか？)===z===z!=r   u{   = は代入、== は比較（等しい）、!= は比較（等しくない）です。=== はPythonにはありません。   u5   次のコードの実行結果は？

  print(10 % 3))3z3.3310r    uf   % は剰余（割り算の余り）演算子です。10 ÷ 3 = 3余り1なので、結果は1です。   uI   次のコードの実行結果は？

  for i in range(3):
      print(i))z1 2 30 1 2z0 1 2 3z1 2r#   uP   range(3)は0, 1, 2を生成します（0から始まり、3の手前まで）。   uT   次のwhile文はいつ終了しますか？

  x = 0
  while x &lt; 5:
      x += 1)u   xが4のとき   xが5のときu   xが6のときu   永遠に終わらないr%   uW   x += 1 でxが1ずつ増え、x < 5 が False（偽）になるx=5で終了します。	   uQ   for文の途中で繰り返しを「中断」するためのキーワードは？)stopexitbreakendr)   u|   breakはループを途中で完全に抜けます。continueは現在の回をスキップして次の回へ進みます。
   uT   次のコードの実行結果は？

  data = [10, 20, 30, 40, 50]
  print(data[2]))10203040r.   uY   インデックスは0から始まるため、data[0]=10, data[1]=20, data[2]=30です。   uC   リスト a = [1, 2, 3] に要素4を追加するメソッドは？)za.add(4)a.append(4)za.insert(4)z	a.push(4)r1   u   Pythonのリストでは append() メソッドを使って末尾に要素を追加します。pushはJavaScript、addはsetのメソッドです。   uQ   次のコードの実行結果は？

  data = [1, 2, 3, 4, 5]
  print(data[1:4]))z	[1, 2, 3]	[2, 3, 4]z[2, 3, 4, 5]z[1, 2, 3, 4]r3   u   スライス[1:4]はインデックス1から3まで（4の手前）を取得します。data[1]=2, data[2]=3, data[3]=4です。   u\   次のコードの実行結果は？

  d = {'name': '田中', 'age': 25}
  print(d['name']))name   田中u   {'name': '田中'}r   r6   u\   辞書からキー'name'に対応する値を取り出すと、'田中'が返されます。   uX   辞書 d = {'a': 1} に新しいキー 'b' と値 2 を追加する正しい方法は？)zd.add('b', 2)zd.append('b', 2)
d['b'] = 2zd.insert('b', 2)r8   ut   辞書では d[キー] = 値 の構文で新しいキーと値を追加します。appendやaddは使えません。   u2   集合(set)の特徴として正しいものは？)u   順序があるu   重複を許す   重複を許さないu   キーと値のペアを持つr:   u   set（集合）は重複する要素を自動的に排除し、順序も保証しません。キーと値のペアは辞書(dict)の特徴です。   u   次のコードの実行結果は？

  def greet(name):
      return f'こんにちは、{name}さん'

  print(greet('佐藤')))u   こんにちは、nameさん   こんにちは、佐藤さんr   Noner<   us   f文字列(f-string)で{name}に引数'佐藤'が入り、「こんにちは、佐藤さん」が返されます。   u?   関数にreturn文がない場合、何が返されますか？)r!   u   空文字列r=   u   エラーが発生するr=   uj   Pythonの関数でreturn文を省略すると、自動的にNone（何もない値）が返されます。   u]   次のコードの実行結果は？

  def add(a, b=10):
      return a + b

  print(add(5)))5r,   15r   rA   uy   bにはデフォルト値10が設定されているため、add(5)はa=5, b=10で計算され、5+10=15となります。   uW   次のコードの実行結果は？

  text = 'Hello, World'
  print(text.split(', ')))z['Hello, World']['Hello', 'World']z('Hello', 'World')r   rC   uf   split(', ')は文字列を', '（カンマとスペース）で分割してリストを返します。   u]   ファイルを読み込むとき、ファイルを自動的に閉じてくれる構文は？)ztry/finallywith open() as f:zopen().auto_close()zfile.read()rE   u   with文（コンテキストマネージャ）を使うと、ブロック終了時に自動的にファイルが閉じられます。   uP   次のコードの実行結果は？

  text = '  Hello  '
  print(text.strip()))z	  Hello  zHello  z  HelloHellorG   u   strip()は文字列の両端（前後）にある空白を取り除きます。lstrip()は左側のみ、rstrip()は右側のみです。   u`   Pythonのクラスで、インスタンス生成時に自動的に呼ばれるメソッドは？)	__start____init____new__
__create__rJ   u}   __init__はコンストラクタ（初期化メソッド）で、インスタンス生成時に自動的に呼ばれます。   u   次のコードで、dog.name の値は？

  class Dog:
      def __init__(self, name):
          self.name = name

  dog = Dog('ポチ'))Dogr5      ポチselfrO   um   __init__で self.name = name としているため、dog.name は引数で渡した'ポチ'になります。   u-   クラスの「継承」の主な目的は？)u   メモリを節約する6   既存クラスの機能を引き継いで拡張するu   変数を隠すu!   プログラムを高速化するrR   u   継承により、既存クラス（親クラス）の属性やメソッドを新しいクラス（子クラス）で再利用・拡張できます。   u}   次のコードの実行結果は？

  try:
      x = 1 / 0
  except ZeroDivisionError:
      print('ゼロ除算エラー'))u$   エラーでプログラムが停止   ゼロ除算エラーr!   r=   rT   u   1/0はZeroDivisionErrorを発生させますが、exceptで捕捉するため、プログラムは停止せず「ゼロ除算エラー」が出力されます。   u[   try/except文で、エラーの有無に関わらず必ず実行されるブロックは？)elsefinallyexceptalwaysrW   u   finallyブロックは、エラーが発生してもしなくても必ず実行されます。リソースの解放などに使われます。   uf   自作モジュール utils.py から関数 helper だけをインポートする正しい構文は？)zimport helper from utilsfrom utils import helperzinclude utils.helperzrequire('utils').helperr[   uu   Pythonでは from モジュール名 import 関数名 の構文で特定の関数だけをインポートします。   um   次のリスト内包表記の結果は？

  result = [x**2 for x in range(5) if x % 2 == 0]
  print(result))z[0, 1, 4, 9, 16]
[0, 4, 16]z
[1, 9, 25]z[4, 16]r]   u`   range(5)は0~4。偶数(0,2,4)の二乗を計算すると 0²=0, 2²=4, 4²=16 → [0, 4, 16]。   uU   次のラムダ関数の実行結果は？

  f = lambda x, y: x * y
  print(f(3, 4)))71234r   r`   ub   lambda x, y: x * y は2つの引数を掛け算する無名関数です。f(3, 4) = 3 × 4 = 12。   u3   Pythonの「デコレータ」の主な役割は？)u*   変数にデフォルト値を設定する3   関数やクラスに追加の機能を付与するu   ループを高速化するu   型を変換するrc   u   デコレータ(@構文)は既存の関数を変更せずに、ログ出力や権限チェックなどの追加機能を付与する仕組みです。 rd       !/app/app/services/it_questions.pyget_it_questionsrg      s    aeee& r	
 	
 aaxxx+h	
 	
 a\BBB! c	
 	
 a XZZZ! I	
 	
 a_/// T	
 	
 aQ...~	
 	
 af;;;h	
 	
 ariii&o	
 	
 ak777 U	
 	
 qq///q	
 	
 q]NNN# l	
 	
 qnQQQ! Z	
 	
 qyLLLt	
 	
 qr^^^" M	
 	
 qLxxx- l	
 	
 q annn6 L	
 	
 qYPPP C	
 	
 q|555 R	
 	
 qtddd*~	
 	
 qwaaa) ^	
 	
 qmCCC b	
 	
 qzIII  V	
 	
 q k888 F	
 	
 qG f  f  fN o	
 	
 q ]eee- z	
 	
 qu>>> g	
 	
 q A C  C  C0 N	
 	
 q KRRR"x	
 	
 qr555z	
 	
 qM r  r  rK o	
 	
ua are   question_idc                 L    t                      }|D ]}|d         | k    r|c S dS )u$   
    問題IDで問題を取得
    r   Nrg   )rh   	questionsqs      rf   get_question_by_idrm      s@     !""I  T7k!!HHH "4re   r   c                 <     t                      } fd|D             S )u+   
    指定レベルの問題を取得
    c                 ,    g | ]}|d          k    |S )r   rd   ).0rl   r   s     rf   
<listcomp>z*get_questions_by_level.<locals>.<listcomp>  s'    888!AgJ%$7$7A$7$7$7re   rj   )r   rk   s   ` rf   get_questions_by_levelrr      s*     !""I8888y8888re   c                 @    dddd}|                     | d|            S )u1   
    レベル番号をレベル名に変換
    u   初級u   中級u   上級)r	   r   r   u	   レベル)get)r   level_namess     rf   get_level_namerv     s0     899K??5"5e"5"5666re   N)typingr   r   r   r   strrg   intrm   rr   rv   rd   re   rf   <module>rz      s    - , , , , , , , , , , ,j$tCH~. j j j jZC HT#s(^,D    9# 9$tCH~*> 9 9 9 97# 7# 7 7 7 7 7 7re   