{
  "assessmentTests": {
    "python_test": {
      "name": "Gwajin Python",
      "desc": "Tambayoyi 30 na yanayi kan tsarin rubutu, ayyuka, tsarin bayanai da halayen abu — ku gano ko ƙwarewar ku a Python ta yi daidai da abin da ake nufi da ƙwarewar Python a cikin tallan aiki.",
      "recommendation": "Bayanin ƙwarewar ku a Python",
      "results": {
        "beginner": {
          "name": "Mai farawa",
          "desc": "Kuna iya bin gajeren rubutu ku canza ƙimomi a ciki, amma tambayoyin da kuka kasa amsa sun fi mayar da hankali kan takamaiman halayen yaren da kansa maimakon dabaru na gaba ɗaya — hujjar da aka gina sau ɗaya kuma aka sake amfani da ita, bambancin “is” da “==” akan jeri biyu masu kama da juna, canji da ke zama na gida da zarar kun sanya masa wani abu a ko'ina cikin aiki. Babu ɗaya daga cikin waɗannan da ke nufin ba ku iya shirye-shirye ba; waɗannan dokoki ne na musamman na Python waɗanda ke rikitar da mutanen da suka fito daga wasu harsuna kamar yadda suke rikitar da masu farawa. Suna da mahimmanci a wurin aiki saboda kowannensu shine inda kuskure ke ɓuya a cikin lambar da take daidai a kallo ɗaya.",
          "recommendation": "Ku fara da abubuwa uku, a wannan tsarin: hujjar da za a iya canzawa (dalilin da yasa basket=[] ke da haɗari), bambancin tsakanin “is” da “==”, da kuma yadda iyakokin canji ke aiki a cikin aiki. Koyarwar Python ta hukuma a docs.python.org ta yi bayanin duka ukun kai tsaye, kuma kalmar “Python gotchas” tana nuna misalan kowannensu."
        },
        "intermediate": {
          "name": "Matsakaici",
          "desc": "Kuna iya gudanar da rubutun yau da kullun cikin sauƙi — tsarin bayanai, sarrafa kwarara, ayyuka masu sauƙi — kuma ba za ku sami jinkiri ba wajen aikin gyara na yau da kullun ko ƙaramin aiki a kan tushen lambar da ke akwai. Bambancin tsakanin nan da matakin Babba galibi yana cikin abin da ke faruwa lokacin da fasalulluka masu sauƙi na Python suka yi hulɗa da juna: kwafin da ba shi da zurfi yana barin bayanan da ke ciki a raba lokacin da kuke tsammanin an ninka su, darajar da janareta ya dawo ba ta zama wani ɓangare na fitowar sa ba, da kuma masu ado da ke jere a cikin tsarin da yake da sauƙin juyawa. Waɗannan sune irin kurakuran da babban mai dubawa ke ganowa cikin daƙiƙa goma kuma kowa yana ɓata awa ɗaya yana nemansu.",
          "recommendation": "Ku mayar da hankali kan abubuwan ciki na abu da maimaitawa: kwafin da ba shi da zurfi da wanda yake da zurfi, abin da janareta ke yi da “return”, da kuma yadda tsarin jere na masu ado ke aiki. Sannan ku kalli tushen aji da yawancin koyarwa ke tsallakewa — daidaiton tsoho ba tare da __eq__ ba, da kuma dalilin da yasa ake raba sifa mai canzawa a cikin kowane misali."
        },
        "advanced": {
          "name": "Babbar Kwarewa",
          "desc": "Wannan shine matakin da yawancin tallace-tallacen aiki ke nufi da “ƙwararren Python.” Kuna iya zaɓar kayan aikin da ya dace ba tare da neman sa ba, kun san dalilin da yasa wani ɓangare na yanayin da aka raba ya canza maimakon kawai sanin cewa ya canza, kuma kuna iya karanta aikin wani kuma ku yi hasashen fitowar sa daidai. Abin da ya raba wannan rukunin da na sama shine ɓangaren kariya na aikin: sanin wanne daga cikin hanyoyi biyu masu kama da daidai zai yi kuskure da zarar an haɗa sifa ta aji, hujjar kalma-kawai, ko tsarin keɓantawa.",
          "recommendation": "Ku zurfafa cikin sassan da ke kare tushen lambar da wasu mutane ma ke amfani da su: hujjar kalma-kawai a matsayin zaɓin ƙirar API maimakon kawai sha'awar tsarin rubutu, tsarin keɓantawa (don haka sassan keɓantawa su kama dangin kuskuren da ya dace, ba kawai aji ɗaya ba), da kuma manajojin mahallin a matsayin hanyar daidaitacciya don tabbatar da tsaftacewa. Labaran zurfafa bincike na Real Python sune wuri mai kyau na gaba don duka ukun."
        },
        "expert": {
          "name": "Gwani",
          "desc": "Kun sami maki mafi girma a kowane sashe — ainihin tsarin rubutu, ayyuka da iyakoki, tsarin bayanai, da kuma salon da ya shafi abu. A aikace, wannan yana nufin za a iya ba ku fayil ɗin wani kuma ku yi bayanin dalilin da yasa yake samar da fitowar da yake yi, ba kawai abin da tsarin rubutun ya ce ya kamata ya yi ba, wanda shine ƙwarewa mafi wahala kuma mafi daraja. A wannan matakin, yaren da kansa ba kasafai yake zama abin da ke iyakance aikinku ba; iyakacin yawanci shine girman ko siffar tsarin da ke kewaye da lambar.",
          "recommendation": "Yanzu fa'idar tana cikin kayan aiki da dubawa: duba nau'in tsaye tare da mypy ko pyright, yin bayani kafin ingantawa maimakon zato, da kuma karanta buƙatun ja na wasu mutane don ainihin wannan rukunin kuskure — waɗanda suka wuce kowane gwaji amma har yanzu suna yin abin da ba daidai ba a ƙarƙashin takamaiman shigarwa. Idan ana tantance ku don wani matsayi, ku bayyana irin wannan kuskuren da kuka samo maimakon kawai ambaton fasalulluka na yaren — yana nuna tunani, ba kawai ƙamus ba."
        }
      },
      "questions": [
        {
          "question": "Kun rubuta def add_item(item, basket=[]): basket.append(item); return basket, sannan kuka kira add_item('a') da add_item('b'), duka sau biyun ba tare da kun saka basket ba. Menene kira na biyu zai dawo da shi?",
          "options": [
            {
              "icon": "",
              "label": "['b']"
            },
            {
              "icon": "",
              "label": "Kuskuren Nau'i (TypeError)"
            },
            {
              "icon": "",
              "label": "['a', 'b']"
            },
            {
              "icon": "",
              "label": "['a']"
            }
          ]
        },
        {
          "question": "a = [1, 2, 3] da b = [1, 2, 3]. Menene a == b zai dawo, kuma menene a is b zai dawo?",
          "options": [
            {
              "icon": "",
              "label": "Gaskiya ga duka biyun"
            },
            {
              "icon": "",
              "label": "Gaskiya ga ==, Ƙarya ga is"
            },
            {
              "icon": "",
              "label": "Ƙarya ga duka biyun"
            },
            {
              "icon": "",
              "label": "Gaskiya ga is, Ƙarya ga =="
            }
          ]
        },
        {
          "question": "A cikin Python 3, menene 7 / 2 ke kimantawa, kuma menene 7 // 2 ke kimantawa?",
          "options": [
            {
              "icon": "",
              "label": "3.5, sannan 3"
            },
            {
              "icon": "",
              "label": "3, sannan 3.5"
            },
            {
              "icon": "",
              "label": "3.5, sannan 3.5"
            },
            {
              "icon": "",
              "label": "3, sannan 3"
            }
          ]
        },
        {
          "question": "s = 'hello', sannan kuka gudanar da s[0] = 'H'. Me zai faru?",
          "options": [
            {
              "icon": "",
              "label": "s ya zama 'Hello'"
            },
            {
              "icon": "",
              "label": "s ya zama 'Hhello'"
            },
            {
              "icon": "",
              "label": "Zai haifar da Kuskuren Nau'i (TypeError)"
            },
            {
              "icon": "",
              "label": "Babu abin da zai faru; s zai kasance 'hello'"
            }
          ]
        },
        {
          "question": "x = [10, 20, 30, 40, 50]. Menene x[1:4] zai dawo?",
          "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' da age = 30. Menene f'{name} is {age}' zai samar?",
          "options": [
            {
              "icon": "",
              "label": "{name} is {age}"
            },
            {
              "icon": "",
              "label": "Ana is 30"
            },
            {
              "icon": "",
              "label": "name is age"
            },
            {
              "icon": "",
              "label": "Kuskuren Nau'i (TypeError)"
            }
          ]
        },
        {
          "question": "Menene 1 < 2 < 3 ke kimantawa?",
          "options": [
            {
              "icon": "",
              "label": "Gaskiya"
            },
            {
              "icon": "",
              "label": "Karya"
            },
            {
              "icon": "",
              "label": "Kuskuren Tsarin Rubutu (SyntaxError)"
            },
            {
              "icon": "",
              "label": "3"
            }
          ]
        },
        {
          "question": "Menene bool([]) zai dawo, kuma menene bool([0]) zai dawo?",
          "options": [
            {
              "icon": "",
              "label": "Ƙarya, sannan Ƙarya"
            },
            {
              "icon": "",
              "label": "Ƙarya, sannan Gaskiya"
            },
            {
              "icon": "",
              "label": "Gaskiya, sannan Gaskiya"
            },
            {
              "icon": "",
              "label": "Gaskiya, sannan Ƙarya"
            }
          ]
        },
        {
          "question": "Akwai wani module-level count = 0. A cikin def increment(): count += 1; return count, kun kira increment(). Me zai faru?",
          "options": [
            {
              "icon": "",
              "label": "Zai nuna UnboundLocalError"
            },
            {
              "icon": "",
              "label": "Zai dawo da 1 kuma ya mayar da global count zuwa 1"
            },
            {
              "icon": "",
              "label": "Zai dawo da 1; global count zai kasance 0"
            },
            {
              "icon": "",
              "label": "Zai nuna TypeError"
            }
          ]
        },
        {
          "question": "def f(*args, **kwargs): return args, kwargs. Me f(1, 2, x=3) zai dawo da shi?",
          "options": [
            {
              "icon": "",
              "label": "([1, 2], {'x': 3})"
            },
            {
              "icon": "",
              "label": "((1, 2), {'x': 3})"
            },
            {
              "icon": "",
              "label": "(1, 2, {'x': 3})"
            },
            {
              "icon": "",
              "label": "Kuskuren Nau'i (TypeError)"
            }
          ]
        },
        {
          "question": "Kun gina funcs = [lambda: i for i in range(3)] a cikin wani madauki. Me [f() for f in funcs] zai dawo da shi?",
          "options": [
            {
              "icon": "",
              "label": "[2, 2, 2]"
            },
            {
              "icon": "",
              "label": "[0, 1, 2]"
            },
            {
              "icon": "",
              "label": "[0, 0, 0]"
            },
            {
              "icon": "",
              "label": "Wani NameError"
            }
          ]
        },
        {
          "question": "An ayyana wani aiki da @a kai tsaye a sama da @b, wanda ke zaune kai tsaye a sama da def f(): pass. A wane tsari ne za a yi amfani da masu ado ga f?",
          "options": [
            {
              "icon": "",
              "label": "b zai fara nannade f, sannan a ya nannade sakamakon"
            },
            {
              "icon": "",
              "label": "a zai fara nannade f, sannan b ya nannade sakamakon"
            },
            {
              "icon": "",
              "label": "Na ƙarshe da aka ayyana ne kawai zai yi aiki"
            },
            {
              "icon": "",
              "label": "Ya dogara da tsarin shigo da su"
            }
          ]
        },
        {
          "question": "def f(a, *, b): return a + b. Wanne daga cikin waɗannan kiran zai yi aiki?",
          "options": [
            {
              "icon": "",
              "label": "f(1, b=2)"
            },
            {
              "icon": "",
              "label": "f(1, 2)"
            },
            {
              "icon": "",
              "label": "f(a=1, 2)"
            },
            {
              "icon": "",
              "label": "f(1)"
            }
          ]
        },
        {
          "question": "Wani aikin janareta ya samar da 1, sannan ya samar da 2, sannan ya yi return 99. Me list(the_generator()) zai ƙunsa, kuma me zai faru da 99?",
          "options": [
            {
              "icon": "",
              "label": "[1, 2, 99], tunda return yana aiki kamar yield na ƙarshe"
            },
            {
              "icon": "",
              "label": "[99], tunda return ya mamaye yields"
            },
            {
              "icon": "",
              "label": "[1, 2], kuma 99 ya zama darajar StopIteration"
            },
            {
              "icon": "",
              "label": "Zai nuna RuntimeError"
            }
          ]
        },
        {
          "question": "A cikin wani aikin outer(), an saita x = 1, sannan wani aikin ciki inner() ya yi nonlocal x; x += 1, kuma outer() ya kira inner() kafin ya dawo da x. Me outer() zai dawo da shi?",
          "options": [
            {
              "icon": "",
              "label": "1"
            },
            {
              "icon": "",
              "label": "Wani UnboundLocalError"
            },
            {
              "icon": "",
              "label": "Kuskuren Tsarin Rubutu (SyntaxError)"
            },
            {
              "icon": "",
              "label": "2"
            }
          ]
        },
        {
          "question": "d = {'a': 1, 'b': 2}. Me d.get('c', 0) zai dawo da shi, kuma zai ƙara 'c' a cikin kamus ɗin?",
          "options": [
            {
              "icon": "",
              "label": "0, kuma a'a"
            },
            {
              "icon": "",
              "label": "0, kuma eh"
            },
            {
              "icon": "",
              "label": "Wani KeyError"
            },
            {
              "icon": "",
              "label": "None, kuma eh"
            }
          ]
        },
        {
          "question": "t = (1, 2, [3, 4]). Za ku iya gudanar da t[2].append(5), kuma za ku iya gudanar da t[0] = 10?",
          "options": [
            {
              "icon": "",
              "label": "Dukansu suna aiki"
            },
            {
              "icon": "",
              "label": "Dukansu suna nuna TypeError"
            },
            {
              "icon": "",
              "label": "t[2].append(5) yana nuna TypeError; t[0] = 10 yana aiki"
            },
            {
              "icon": "",
              "label": "t[2].append(5) yana aiki; t[0] = 10 yana nuna TypeError"
            }
          ]
        },
        {
          "question": "Wanne daga cikin waɗannan ne ke dawo da wani iterator wanda ke lissafa darajoji a hankali maimakon gina dukkan jerin a cikin ƙwaƙwalwar ajiya a lokaci ɗaya: [x*x for x in range(1000000)] ko (x*x for x in range(1000000))?",
          "options": [
            {
              "icon": "",
              "label": "Wanda ke da baka"
            },
            {
              "icon": "",
              "label": "Wanda ke da baka mai kusurwa"
            },
            {
              "icon": "",
              "label": "Dukansu; nau'in sakamakon ne kawai ya bambanta"
            },
            {
              "icon": "",
              "label": "Babu ɗayansu; dukansu suna gina cikakken jeri"
            }
          ]
        },
        {
          "question": "Wani toshe na try ya raba da sifili, sashin except ZeroDivisionError ya buga 'a', kuma wani sashi na finally ya buga 'b'. Me zai buga, kuma a wane tsari?",
          "options": [
            {
              "icon": "",
              "label": "b sannan a"
            },
            {
              "icon": "",
              "label": "a sannan b"
            },
            {
              "icon": "",
              "label": "b kawai"
            },
            {
              "icon": "",
              "label": "a kawai"
            }
          ]
        },
        {
          "question": "import copy; a = [[1, 2], [3, 4]]; b = copy.copy(a); b[0].append(99). Shin a[0] ma zai canza?",
          "options": [
            {
              "icon": "",
              "label": "No"
            },
            {
              "icon": "",
              "label": "Zai nuna kuskure"
            },
            {
              "icon": "",
              "label": "Sai dai idan an yi amfani da deepcopy"
            },
            {
              "icon": "",
              "label": "Eh"
            }
          ]
        },
        {
          "question": "d = {'x': 1, 'y': 2}. Me 'x' in d ke dubawa - maɓallan, darajojin, ko duka biyun?",
          "options": [
            {
              "icon": "",
              "label": "Darajojin"
            },
            {
              "icon": "",
              "label": "Dukansu maɓallai da darajoji"
            },
            {
              "icon": "",
              "label": "Babu ɗayansu; yana nuna TypeError"
            },
            {
              "icon": "",
              "label": "Maɓallan"
            }
          ]
        },
        {
          "question": "names = ['Al', 'Bo'] da scores = [10, 20]. Me list(zip(names, scores)) zai dawo da shi?",
          "options": [
            {
              "icon": "",
              "label": "[('Al', 'Bo'), (10, 20)]"
            },
            {
              "icon": "",
              "label": "['Al', 10, 'Bo', 20]"
            },
            {
              "icon": "",
              "label": "[('Al', 10), ('Bo', 20)]"
            },
            {
              "icon": "",
              "label": "Wani ValueError"
            }
          ]
        },
        {
          "question": "class Dog: tricks = [] yana riƙe da jerin matakin aji, kuma add_trick yana ƙarawa zuwa self.tricks. An ƙirƙiri d1 = Dog() da d2 = Dog(), sannan an gudanar da d1.add_trick('sit'). Me d2.tricks ya ƙunsa?",
          "options": [
            {
              "icon": "",
              "label": "[]"
            },
            {
              "icon": "",
              "label": "['sit']"
            },
            {
              "icon": "",
              "label": "Kuskuren Nau'i (TypeError)"
            },
            {
              "icon": "",
              "label": "Babu"
            }
          ]
        },
        {
          "question": "class A yana da def greet(self): return 'A'. class B(A) yana da def greet(self): return 'B' + super().greet(). Me B().greet() zai dawo da shi?",
          "options": [
            {
              "icon": "",
              "label": "'AB'"
            },
            {
              "icon": "",
              "label": "'B'"
            },
            {
              "icon": "",
              "label": "'BA'"
            },
            {
              "icon": "",
              "label": "Wani AttributeError"
            }
          ]
        },
        {
          "question": "class Point yana adana self.x a cikin __init__ kuma bai ayyana wasu hanyoyi ba. p1 = Point(1) da p2 = Point(1). Me p1 == p2 zai dawo da shi ta tsohuwa?",
          "options": [
            {
              "icon": "",
              "label": "Gaskiya"
            },
            {
              "icon": "",
              "label": "Karya"
            },
            {
              "icon": "",
              "label": "Babu"
            },
            {
              "icon": "",
              "label": "Kuskuren Nau'i (TypeError)"
            }
          ]
        },
        {
          "question": "Wanne sashi na except a ƙasa ne zai kama ZeroDivisionError: except ArithmeticError, except ValueError, ko except KeyError?",
          "options": [
            {
              "icon": "",
              "label": "except ValueError"
            },
            {
              "icon": "",
              "label": "except KeyError"
            },
            {
              "icon": "",
              "label": "Babu ɗayansu"
            },
            {
              "icon": "",
              "label": "except ArithmeticError"
            }
          ]
        },
        {
          "question": "Kun buɗe fayil da open('data.txt') as f: kuma an sami wani keɓantacce yayin karantawa a cikin toshe. Shin har yanzu za a rufe fayil ɗin?",
          "options": [
            {
              "icon": "",
              "label": "No"
            },
            {
              "icon": "",
              "label": "Sai dai da ƙarin sashi na finally"
            },
            {
              "icon": "",
              "label": "Eh"
            },
            {
              "icon": "",
              "label": "Ya dogara da nau'in keɓantaccen"
            }
          ]
        },
        {
          "question": "x = [3, 1, 2] da y = x.sort(). Me y ke riƙe?",
          "options": [
            {
              "icon": "",
              "label": "[1, 2, 3]"
            },
            {
              "icon": "",
              "label": "Babu"
            },
            {
              "icon": "",
              "label": "[3, 1, 2]"
            },
            {
              "icon": "",
              "label": "Kuskuren Nau'i (TypeError)"
            }
          ]
        },
        {
          "question": "Me zai faru idan kun gudanar da 'Score: ' + 42?",
          "options": [
            {
              "icon": "",
              "label": "'Maki: 42'"
            },
            {
              "icon": "",
              "label": "'Maki: '"
            },
            {
              "icon": "",
              "label": "42"
            },
            {
              "icon": "",
              "label": "Zai haifar da Kuskuren Nau'i (TypeError)"
            }
          ]
        },
        {
          "question": "Kuna buƙatar bincika ko wani jeri mai suna results fanko ne. Wacece hanya ce ta Python da ta dace: if results == []: , if len(results) == 0: , ko if not results: ?",
          "options": [
            {
              "icon": "",
              "label": "idan sakamako == []:"
            },
            {
              "icon": "",
              "label": "idan len(sakamako) == 0:"
            },
            {
              "icon": "",
              "label": "idan sakamako babu:"
            },
            {
              "icon": "",
              "label": "idan ba sakamako:"
            }
          ]
        }
      ],
      "optionOrderVersion": "26e0df963ab76db1"
    }
  },
  "testNames": {
    "python-test": "Gwajin Python"
  }
}
