{
  "assessmentTests": {
    "python_test": {
      "name": "Python сынағы",
      "desc": "Синтаксис, функциялар, деректер құрылымы және объект орындалуы туралы 30 сценарий сұрағы — сіздің Python құрметіліктеріңіз жұмыс жарнамасында көрсетілген Python құрметіліктерімен сәйкес келетінін біліңіз.",
      "recommendation": "Сіздің Python дағдыларының профилі",
      "results": {
        "beginner": {
          "name": "Бастамасы",
          "desc": "Сіз қысқа скрипт ойынын қалай орындау керектігін түсініктеулі ойны өзгертіп аналысаласыз, бірақ сіз орындықан сұрақтар тіл өз ішіндегі нақты орындалуының айналасында топталынады, бәлкі жалпы логика емес — әдепкі аргумент бір рет құрылатын және қайта қолданылатын, екі тең көрінетін тіздерінің is/== салыстырмасы, функцияның ішіндегі кез келген орында тағайындау кезінде жергілік болатын айнымалы. Бұл программалау дағдысы төмен болуы туралы емес; бұлар басқа тілдерден келген адамдарды үйлендіндіктен жиілікте сәйкес ақпаралы Python ережелері ғана емес пе. Олар жұмыс уақытында маңызды, өйткені әрқайсысы бұл кодтың ауырлығының ішінде жатқан дөңеге жатады, ол өйткі пойыл түсінікті түрінде жатыр.",
          "recommendation": "Үш нәрседен бастаңыз, осы ретпен: өзгертінді болатын әдепкі аргументтер (неге basket=[] қауіпті), is және == арасындағы айырмасы, және функция ішіндегі айнымалы аумағы қалай жұмыс істейді. docs.python.org ресімі Python құрал оқулығында осы үшеуді тікелей қамтыды, және \"Python құдыліктері\" терминісі әрқайсысының өңделген мысалдарын береді."
        },
        "intermediate": {
          "name": "Аралық",
          "desc": "Сіз күнделік скриптлеуді ыңғайлы түрде өндіресіз — деректер құрылымы, басқару ағыны, түзу функциялар — және бар кодтағы кәсіби істілеу немесе шағын ерекшелік арқылы жайсалынбарсыз. Мұндағы Озды аралығы, тағыда барлығы Python ауырсынды ерекшеліктері бір-біріне сәйкес келген болған: ұжымалы көшіру ұясы деректер бөлу қалған болған қарастырғысында келтірелген болған дәрежесінде дәлдіктіңі шарттасыз емес, генератор есептелу де ұзарту салды қайталауының құрамына айралмайтын, декоратор төбелеу болатын ретке қалысса оңай қатесін ересі әтен өндіресіз. Бұлар сеніор сынақ таңдаған ондамында-екі секундында құлпындығы және барлығы басқасы сағ сағ анықтауының аудандау ағымындағы қателіктерінің сұрағы.",
          "recommendation": "Объект және итерирлеу ішкі өндіктеріне назар аударыңыз: бәлкі және терең көшіруді салыстырыңыз, генератор өтінімді шын мәнінде қандай істейді, және декоратор төбелеу ретінің орындалуы қалай жұмыс істейді. Сонда класс негіздері, бәлкі төзебелік ынамдарды өндіресіз — әдепкі теңдіктісі __eq__ құғындағысыз, және өзгертінді класс атрибуты әрбір мәнін жартыға еуінге бөлінеді."
        },
        "advanced": {
          "name": "Озды",
          "desc": "Бұл - \"құйты Python\" деген айтқан жұмыс жарнамаларының көбінің деңгейі. Сіз ізденбейінен дұрыс құрал ұтыпсыз, өзгертінді ортақ күйінің неге дәлінеу білесіз, бәлкі ғана оның болғанын емес, және сіз басқа адамның функциясын оқып оның шығарындысын дұрыс болжай аласыз. Осы ленталарды ең жоғарысынан ажыратқан нәрсе олар қорғау жағынан жұмыс: класс атрибуты, сөз арқылы тек аргумент, немесе ерекшеліктер иерархиясы тәжрибесінде екі дұрыс көрінетін әдістің қайсысы қалай істеуді білімің."
        },
        "expert": {
          "name": "Сарапшы",
          "desc": "Сіз әрбір сегментте барлық ұпай топтағансыз — ядро синтаксисі, функциялар және аумағы, деректер құрылымы, және объект бағытталған құмырлықтар. Тәжірибелі түрде, бұл сіздің біреудің файлынаның есеу беріліп алып, оның шығарындысын өндіктеген істейді, түсіндіресіз, түсіндіргіш ойын емес, қатерлі және құндырақ құрметіліктімен. Бұл деңгейде тыс тілі сирек сіздің жұмысының шектелгі фактор; шек әйтуінше жүйе айналасының сәлемесінің өлімі немесе пішіндемесі болып табылады."
        }
      },
      "questions": [
        {
          "question": "Сіз def add_item(item, basket=[]): basket.append(item); return basket деп жазасыз, сосын add_item('a') және add_item('b') шақырасыз, екі рет те basket сәлемесінен айтыңыз. Екінші шақырудың қайтарындысы не?",
          "options": [
            {
              "icon": "",
              "label": "['b'] — әрбір шақыру әдепкі болмаса жаңа бос тіздеген ала"
            },
            {
              "icon": "",
              "label": "TypeError — сіз basket аргументін берсіңіз тиіс"
            },
            {
              "icon": "",
              "label": "['a', 'b'] — әдепкі тіздеме бір рет құрылатын және шақырулар арасында қайта қолданылатын"
            },
            {
              "icon": "",
              "label": "['a'] сосын ['b'] екі тәуелсіз бір элементті тіздеме ретінде"
            }
          ]
        },
        {
          "question": "a = [1, 2, 3] және b = [1, 2, 3]. a == b не қайтарады, және a is b не қайтарады?",
          "options": [
            {
              "icon": "",
              "label": "Екеуі үшін true — құрылымдас тіздемелер әрдайым бірдей объект болып табылады"
            },
            {
              "icon": "",
              "label": "== үшін true, is үшін false — рол ұстындары бірдей бірақ жадында түрлі объектілер"
            },
            {
              "icon": "",
              "label": "Екеуі үшін false — ажыратқан сөз сыналықтары Python-та ешқашан тең емес"
            },
            {
              "icon": "",
              "label": "is үшін true, == үшін false — is тіздемелер үшін мәні теңдігін тексеретін"
            }
          ]
        },
        {
          "question": "Python 3-та 7 / 2 не болғанына баға беретін, және 7 // 2 не болғанына баға беретін?",
          "options": [
            {
              "icon": "",
              "label": "3.5, сосын 3 — / әрдайым float қайтарады, // нәтижесін төменге ұстау"
            },
            {
              "icon": "",
              "label": "3, сосын 3.5 — / кесіп тастайды және // float қайтарады"
            },
            {
              "icon": "",
              "label": "3.5, сосын 3.5 — екі операторы Python 3-та float қайтарады"
            },
            {
              "icon": "",
              "label": "3, сосын 3 — екі операторы Python 3-та нәтижесін төменге ұстау"
            }
          ]
        },
        {
          "question": "s = 'hello', сосын сіз s[0] = 'H' орындайсыз. Не болады?",
          "options": [
            {
              "icon": "",
              "label": "s 'Hello' болып өзгереді"
            },
            {
              "icon": "",
              "label": "s 'Hhello' болып өзгереді, өйткені белгі ауыстырылады емес, ысырылады"
            },
            {
              "icon": "",
              "label": "TypeError — сілтемелер өзгермейтін және элемент тағайындауын ұстамайды"
            },
            {
              "icon": "",
              "label": "Ештің емес — тағайындау молчалай ұстанып қалатын және s 'hello' қалып отырады"
            }
          ]
        },
        {
          "question": "x = [10, 20, 30, 40, 50]. x[1:4] не қайтарады?",
          "options": [
            {
              "icon": "",
              "label": "[20, 30, 40, 50]"
            },
            {
              "icon": "",
              "label": "[10, 20, 30, 40]"
            },
            {
              "icon": "",
              "label": "[20, 30, 40]"
            },
            {
              "icon": "",
              "label": "[30, 40]"
            }
          ]
        },
        {
          "question": "name = 'Ana' және age = 30. f'{name} is {age}' не шығарады?",
          "options": [
            {
              "icon": "",
              "label": "{name} is {age}"
            },
            {
              "icon": "",
              "label": "Ana is 30"
            },
            {
              "icon": "",
              "label": "name is age"
            },
            {
              "icon": "",
              "label": "TypeError, өйткені f-сілтемелер format() әдісін талап етеді"
            }
          ]
        },
        {
          "question": "1 < 2 < 3 не болғанына баға беретін?",
          "options": [
            {
              "icon": "",
              "label": "True — Python салыстыруларды (1 < 2) және (2 < 3) ретінде сілкілейді"
            },
            {
              "icon": "",
              "label": "False — сілкіленген салыстырулар сол жақтан оңға қысқартылмай ойнатылатын, 1 < 2 < 3 -> 1 < True -> False беретін"
            },
            {
              "icon": "",
              "label": "SyntaxError — салыстырулар сілкіленбейді"
            },
            {
              "icon": "",
              "label": "3 — Python сілкінің соңғы мәнін қайтарады"
            }
          ]
        },
        {
          "question": "bool([]) не қайтарады, және bool([0]) не қайтарады?",
          "options": [
            {
              "icon": "",
              "label": "False, сосын False — тек ғамап мәндері болған кез келген тіздеме ғамап"
            },
            {
              "icon": "",
              "label": "False, сосын True — бос тіздеме ғамап, бір элемент ынамдай қоса (0 болса да) құмап болып табылады"
            },
            {
              "icon": "",
              "label": "True, сосын True — None емес объектілер әрдайым құмап болып табылады"
            },
            {
              "icon": "",
              "label": "True, сосын False — тіздеме тек бос болған кезде құмап болып табылады"
            }
          ]
        },
        {
          "question": "Модульдің деңгейінде count = 0 бар. def increment() ішінде: count += 1; return count, сіз increment() шақырасыз. Не болады?",
          "options": [
            {
              "icon": "",
              "label": "UnboundLocalError — функция ішіндегі кез келген орында count-қа тағайындау оны жергілік ете, сондықтан count += 1 оны тағайындамас бұрын жергілік айнымалыны оқуды талап етеді"
            },
            {
              "icon": "",
              "label": "1 қайтарады және модульдің деңгейіндегі count-ты 1-ге арттырады"
            },
            {
              "icon": "",
              "label": "1 қайтарады бірақ модульдің деңгейіндегі count-ты 0-та қалдырады"
            },
            {
              "icon": "",
              "label": "NameError құрады, өйткені count функцияның ішіндегі құрдырылмағаны"
            }
          ]
        },
        {
          "question": "def f(*args, **kwargs): return args, kwargs. f(1, 2, x=3) не қайтарады?",
          "options": [
            {
              "icon": "",
              "label": "([1, 2], {'x': 3})"
            },
            {
              "icon": "",
              "label": "((1, 2), {'x': 3})"
            },
            {
              "icon": "",
              "label": "(1, 2, {'x': 3})"
            },
            {
              "icon": "",
              "label": "TypeError — орындық және сөз аргументтер бір шақырыда араласпайды"
            }
          ]
        },
        {
          "question": "Сіз funcs = [lambda: i for i in range(3)] цикл орындау ішінде құрасыз. [f() for f in funcs] не қайтарады?",
          "options": [
            {
              "icon": "",
              "label": "[2, 2, 2] — әрбір lambda оны шақыру кезінде i ізденеді, және сол уақытқа цикл i 2-ге тең болып аяқталды"
            },
            {
              "icon": "",
              "label": "[0, 1, 2] — әрбір lambda оны құрылған уақытындағы i мәнін ұстайды"
            },
            {
              "icon": "",
              "label": "[0, 0, 0] — lambdas әрдайым айнымалыға бірінші орнатқан мәнді ұстайды"
            },
            {
              "icon": "",
              "label": "NameError, өйткені цикл аяқталғаннан соң i ешқашан болмайды"
            }
          ]
        },
        {
          "question": "Функция @a жанындағы бар екінші орнына, және @b оның орындау орндай def f(): pass. Декоратор f-қа қандай ретпен әдісінде?",
          "options": [
            {
              "icon": "",
              "label": "b бірінші f-ты ораптайды, сосын a b-ның нәтижесін ораптайды — функцияның жанындағы декоратор бірінші орындалады"
            },
            {
              "icon": "",
              "label": "a бірінші f-ты ораптайды, сосын b нәтижесін ораптайды — декораторлар төбектен төмен әдіслеу"
            },
            {
              "icon": "",
              "label": "Екі декоратор f-ты тәуелсіз ораптайды және соңғысы ғана орындалғаны ойында өндіктеу"
            },
            {
              "icon": "",
              "label": "Бұл декораторлар импорттаулы ретінеге байланды болып табылады, оның кодтағы орнындыға емес"
            }
          ]
        },
        {
          "question": "def f(a, *, b): return a + b. Осы шақыруların қайсысы орындалады?",
          "options": [
            {
              "icon": "",
              "label": "f(1, b=2) — b имараттың ішіндегі * арқасы сөз арқылы өтінімінің орындалуы тиіс"
            },
            {
              "icon": "",
              "label": "f(1, 2) — орындық аргументтер параметрлерді сол жақтан оңға өтінеді * қарамастан"
            },
            {
              "icon": "",
              "label": "f(a=1, 2) — сөз аргументтер бірінші келуі тиіс"
            },
            {
              "icon": "",
              "label": "f(1) — b ұсынықсыз, * орындағы сәттіге сәтсіз болып табылады"
            }
          ]
        },
        {
          "question": "Генератор функциясы 1 дарыту қайтарады, сосын 2 дарыту, сосын return 99 орындайды. list(the_generator()) не құрайды, және 99 қайтарындысы не болады?",
          "options": [
            {
              "icon": "",
              "label": "[1, 2, 99] — генератордың ішіндегі return бір басқа дарыту секілді орындалады"
            },
            {
              "icon": "",
              "label": "[99] — return дәлсіз барлық дарыты мәндерінің орындалуынан бұрын өндіктеу"
            },
            {
              "icon": "",
              "label": "[1, 2] — генератордың қайтарындысы StopIteration-дың байланыстырылған мәніне айналады, оны дарытмайды"
            },
            {
              "icon": "",
              "label": "RuntimeError, өйткені генераторлар return сұрағын құрамайды"
            }
          ]
        },
        {
          "question": "outer() функциясының ішінде x = 1 орнатылатын, сосын nested inner() nonlocal x орындайды; x += 1, және outer() inner()-ты шақырып x қайтарамас бұрын. outer() не қайтарады?",
          "options": [
            {
              "icon": "",
              "label": "1 — inner() x-тің өздігінен жергілік көшіргесінде орындалады, сондықтан өзгеріс сақталмайды"
            },
            {
              "icon": "",
              "label": "UnboundLocalError, өйткені x nonlocal сұрағынан бұрын inner()-та орнатылмағаны"
            },
            {
              "icon": "",
              "label": "SyntaxError — nonlocal тек класстарының ішінде ойналуы мүмкін"
            },
            {
              "icon": "",
              "label": "2 — nonlocal inner()-ты сыртқы функцияның x өзгертуін ол жергілік айнымалы құруға рұқсат береді"
            }
          ]
        },
        {
          "question": "d = {'a': 1, 'b': 2}. d.get('c', 0) не қайтарады, және оны сөздіктеге 'c' қосында?",
          "options": [
            {
              "icon": "",
              "label": "0, және жоқ — get() әдепкі сөздіктегеге кілтсіз қайтарады, сөздіктеге қоспайды"
            },
            {
              "icon": "",
              "label": "0, және иә — get() әдепкі мәні бар кілтті сөздіктеге қосады"
            },
            {
              "icon": "",
              "label": "KeyError, өйткені 'c' болмайды"
            },
            {
              "icon": "",
              "label": "None, және иә — get() әрдайым жетіспейтін кілттерді None мәні арқылы қосады"
            }
          ]
        },
        {
          "question": "t = (1, 2, [3, 4]). Сіз t[2].append(5) орындай аласыз, және сіз t[0] = 10 орындай аласыз?",
          "options": [
            {
              "icon": "",
              "label": "Екеуі де орындалады — ортағы тіздемесі кортежі ішіне бәлкі барлық кортежі өзгертінді"
            },
            {
              "icon": "",
              "label": "Екеуі де TypeError құрайды — кортежінің ішіндегі ештей ешқашан өзгертілмейді"
            },
            {
              "icon": "",
              "label": "t[2].append(5) TypeError құрайды, бірақ t[0] = 10 орындалады, өйткені кортежілер оның бірінші элементін қайта тағайындауға рұқсат"
            },
            {
              "icon": "",
              "label": "t[2].append(5) орындалады, өйткені ішіндегі тіздеме өзгертінді; t[0] = 10 TypeError құрайды, өйткені кортежі өзі өзгертінді емес"
            }
          ]
        },
        {
          "question": "Осыдан қайсысы барлық ретін жадында құрудың орнына кейінге қалдырылған итератор қайтарады: [x*x for x in range(1000000)] немесе (x*x for x in range(1000000))?",
          "options": [
            {
              "icon": "",
              "label": "Жақшалы болғаны, (x*x for x in range(1000000)) — генератор сөзбелігі"
            },
            {
              "icon": "",
              "label": "Төбелек сөйлемі — тіздеме түсінігі Python 3-та әрдайым кейінге қалдырылған"
            },
            {
              "icon": "",
              "label": "Екеуі де кейінге қалдырылған — ғана айырмасы соңында қайтарылған түрі"
            },
            {
              "icon": "",
              "label": "Екеуі де емес — екеуі де барлық ретін жадында шұқ барлаушы оңайлығымен құрады"
            }
          ]
        },
        {
          "question": "try блокі нөлге бөлінеді, except ZeroDivisionError сұрағы 'a' басады, және finally сұрағы 'b' басады. Не басатын, және қандай ретпен?",
          "options": [
            {
              "icon": "",
              "label": "b сосын a — finally әрдайым except сұрағынан бұрын орындалады"
            },
            {
              "icon": "",
              "label": "a сосын b — сәйкес except бірінші орындалады, және finally әрдайым соңында орындалады, қарамастан"
            },
            {
              "icon": "",
              "label": "Тек b — ерекшеліктер шын мәнінде ұстанбағаны, сондықтан 'a' ешқашан басамайды"
            },
            {
              "icon": "",
              "label": "Тек a — finally ерекшеліктіктер орындалғаннан соң өтпейді"
            }
          ]
        },
        {
          "question": "import copy; a = [[1, 2], [3, 4]]; b = copy.copy(a); b[0].append(99). a[0] да өзгереді бе?",
          "options": [
            {
              "icon": "",
              "label": "Жоқ — copy.copy() әрдайым ұясы объектілерін де қосынады"
            },
            {
              "icon": "",
              "label": "Жоқ — b[0]-қа қосу тек b[0] үшін жаңа тіздеме құрайды"
            },
            {
              "icon": "",
              "label": "Иә, бірақ тек copy.copy() deepcopy аргументсіз шақырылғаны үшін"
            },
            {
              "icon": "",
              "label": "Иә — copy.copy() бәлкі көшіру құрайды, сондықтан ұясы тіздемелер a мен b арасында ортақ болып қалады"
            }
          ]
        },
        {
          "question": "d = {'x': 1, 'y': 2}. 'x' in d 'x' қарсы тексеретін — кілттер, мәндер немесе екеуі де?",
          "options": [
            {
              "icon": "",
              "label": "мәндер — `in` 1 немесе 2 'x'-қа тең болса тексеретін"
            },
            {
              "icon": "",
              "label": "Кілттер және мәндер екеуі де тексеретін"
            },
            {
              "icon": "",
              "label": "Екеуі де емес — `in` сөздіктеңде әрдайым TypeError құрайды"
            },
            {
              "icon": "",
              "label": "кілттер — `in` сөздіктеге оның кілттері арасында мүшелік тексеретін, оның мәндері емес"
            }
          ]
        },
        {
          "question": "names = ['Al', 'Bo'] және scores = [10, 20]. list(zip(names, scores)) не қайтарады?",
          "options": [
            {
              "icon": "",
              "label": "[('Al', 'Bo'), (10, 20)]"
            },
            {
              "icon": "",
              "label": "['Al', 10, 'Bo', 20]"
            },
            {
              "icon": "",
              "label": "[('Al', 10), ('Bo', 20)]"
            },
            {
              "icon": "",
              "label": "ValueError, өйткені zip үш немесе одан артық аргументтерді талап етеді"
            }
          ]
        },
        {
          "question": "class Dog: tricks = [] класс деңгейіндегі тіздемесі болып табылады, және add_trick self.tricks-қа қосады. d1 = Dog() және d2 = Dog() екеуі де құрылтайды, сосын d1.add_trick('sit') орындалды. d2.tricks не құрайды?",
          "options": [
            {
              "icon": "",
              "label": "[] — әрбір мәнде tricks-тің өз тәуелсіз көшірмесі болып табылады"
            },
            {
              "icon": "",
              "label": "['sit'] — tricks класс деңгейіндегі тіздеме, әрбір мәнде бөлінетін, сондықтан d1 өзгеріс d2-те да көрінетін"
            },
            {
              "icon": "",
              "label": "TypeError — мәндесі класс атрибутына қоспайды"
            },
            {
              "icon": "",
              "label": "['sit'] тек d2 = Dog() қайта орындалғаннан соң"
            }
          ]
        },
        {
          "question": "class A def greet(self): return 'A' болып табылады. class B(A) def greet(self): return 'B' + super().greet() болып табылады. B().greet() не қайтарады?",
          "options": [
            {
              "icon": "",
              "label": "'AB' — super() әрдайым ішінде суб класс өндіктеуінің бұрын орындалады"
            },
            {
              "icon": "",
              "label": "'B' — super().greet() өтпейді, өйткені B greet-ті орындамайды"
            },
            {
              "icon": "",
              "label": "'BA' — super().greet() A әдісін шақырады және оның нәтижесі 'B'-ге қосылады"
            },
            {
              "icon": "",
              "label": "AttributeError, өйткені A B-ге көрінетін greet әдісі жоқ"
            }
          ]
        },
        {
          "question": "class Point __init__-та self.x сақтайды және басқа әдіс құрамайды. p1 = Point(1) және p2 = Point(1). p1 == p2 әдепкі болмаса қайтарады?",
          "options": [
            {
              "icon": "",
              "label": "True — Python әдепкі болмаса барлық сәйкес атрибуттарын салыстырады"
            },
            {
              "icon": "",
              "label": "False — түрме __eq__ құрамаса, == сәйкес келу салыстырмасына құлай төмен, және p1 және p2 түрлі объектілер"
            },
            {
              "icon": "",
              "label": "True, бірақ тек екеуі де бірдей аргумент арқылы құрылғаны үшін"
            },
            {
              "icon": "",
              "label": "TypeError, өйткені Point __eq__ құрамайды"
            }
          ]
        },
        {
          "question": "Осы except сөйлемінің қайсысы ZeroDivisionError-ты ұстау болып табылады: except ArithmeticError, except ValueError, немесе except KeyError?",
          "options": [
            {
              "icon": "",
              "label": "except ValueError — бөлінеме қателіктері қандай мәндер ретінде құрамалы болып табылады"
            },
            {
              "icon": "",
              "label": "except KeyError — түтін орындалу ерекшелігі құрай болатын, сондықтан KeyError жыға төмен құлайды"
            },
            {
              "icon": "",
              "label": "Екеуі де емес — тек except ZeroDivisionError өздігінің оны ұстай алады"
            },
            {
              "icon": "",
              "label": "except ArithmeticError — ZeroDivisionError ArithmeticError ішкі класы болып табылады"
            }
          ]
        },
        {
          "question": "Сіз файлды open('data.txt') as f: арқылы ашасыз және ерекшеліктер блоктың ішінде оқуылып орындалатын болған. файлы әлі де ағымдалынды?",
          "options": [
            {
              "icon": "",
              "label": "Жоқ — файлы ағымды қалады, өйткені блокі әдепкі болмаса аяқталмағаны"
            },
            {
              "icon": "",
              "label": "Тек with сұрағынан айналасында finally сөйлемі қосасыз болса"
            },
            {
              "icon": "",
              "label": "Иә — with сұрағы файлының __exit__ әдісін шақырады, бәлкі ерекшеліктер орындалса да, өндіктеу"
            },
            {
              "icon": "",
              "label": "Бұл ерекшеліктер түрінеге байланды болып табылады — тек басқа орындағы ұстағын ерекшеліктер тазалауды қоздырады"
            }
          ]
        },
        {
          "question": "x = [3, 1, 2] және y = x.sort(). y не сақтайды?",
          "options": [
            {
              "icon": "",
              "label": "[1, 2, 3] — sort() жаңа сіндіктелген тіздемесін қайтарады"
            },
            {
              "icon": "",
              "label": "None — list.sort() орндығы сіндіктелген және None қайтарады; x өзі [1, 2, 3] болып өзгереді"
            },
            {
              "icon": "",
              "label": "[3, 1, 2] — sort() орындамас бұрын сіндіктелмеген тіздемесін қайтарады және x ішкі ретін тек өзгертеді"
            },
            {
              "icon": "",
              "label": "TypeError, өйткені sort() айнымалыға тағайындалмайды"
            }
          ]
        },
        {
          "question": "'Score: ' + 42 орындағанда не болады?",
          "options": [
            {
              "icon": "",
              "label": "'Score: 42' — Python автоматты түрде + өзбеу ішінде номерді айнымалы болды"
            },
            {
              "icon": "",
              "label": "'Score: ' — номер молчалай төмен төгіліп қалады"
            },
            {
              "icon": "",
              "label": "42 — сіне номер мен қосылды"
            },
            {
              "icon": "",
              "label": "TypeError — сіздің str және int тікелей қос қоспайсыз, 42 str()-та айнымалы болуы тиіс"
            }
          ]
        },
        {
          "question": "Сіз results деген тіздемесі бос болғанын тексеру қажеттесіз. Қайсысы Python идиоматиндегі болып табылады: if results == []: , if len(results) == 0: , немесе if not results: ?",
          "options": [
            {
              "icon": "",
              "label": "if results == []: — бұл бос тіздемесін тек ажыратқан болғанын анықтау"
            },
            {
              "icon": "",
              "label": "if len(results) == 0: — бұл Python-та бос тіздемелер құмап болғаны үшін әтпеуінің болуы тиіс"
            },
            {
              "icon": "",
              "label": "Үшеуі де теңдіке ешқашан төмен төгіліп қолданылмайды; әдепкі әдісі if results is None:"
            },
            {
              "icon": "",
              "label": "if not results: — Python идиоматі құмапқа сәйкеседі, және бос тіздеме ғамап болып табылады"
            }
          ]
        }
      ],
      "optionOrderVersion": "92945565db6c55da"
    }
  }
}
