# data[].attributes.attachment_link.readable_text
Introduction

Snap the dot is a game of skill where the player has to press A exactly when the dot reaches the center of the screen.

This tutorial shows how to use the game engine.

Make a sprite variable

Create a new variable called sprite. Drag a ||variables:set sprite to|| into the ||basic:on start|| on the workspace.

let sprite = 0

Create a sprite

Pull out a ||game:create sprite|| block and put it in ||variables:set sprite to|| replacing the 0. A sprite is a single pixel that can move on the screen. It has an x and y position along with a direction of motion.

let sprite = game.createSprite(2, 2)

Move the dot

The sprite starts in the center facing right. Put a ||game:move|| block into the ||basic:forever|| to make it move. Notice how it moves to the right but does not bounce back.

let sprite = game.createSprite(2, 2) basic.forever(function () { sprite.move(1) })

Bounce

Grab a ||game:if on edge, bounce|| block to make the sprite bounce on the side of the screen. Also, add a ||basic:pause|| block to slow down the sprite.

let sprite = game.createSprite(2, 2) basic.forever(function () { sprite.move(1) sprite.ifOnEdgeBounce() basic.pause(100) })

Test and download

Use the simulator to find the best speed. If you have a micro:bit, press |Download| to try it out on the device.

Button handling

When A is pressed, we test if the sprite is in the center or not.

Use a ||input:on button pressed|| block to handle the A button. Put in a ||logic:if|| block and test if ||game:x|| is equal to 2.

let sprite = game.createSprite(2, 2) input.onButtonPressed(Button.A, function () { if (sprite.get(LedSpriteProperty.X) == 2) { } else { } }) basic.forever(function () { sprite.move(1) basic.pause(100) sprite.ifOnEdgeBounce() })

Score and game over

Finally, pull out an ||game:add score|| and a ||game:game over|| block to handle both success (sprite in the center) and failure (sprite not in the center).

let sprite = game.createSprite(2, 2) input.onButtonPressed(Button.A, function () { if (sprite.get(LedSpriteProperty.X) == 2) { game.addScore(1) } else { game.gameOver() } }) basic.forever(function () { sprite.move(1) basic.pause(100) sprite.ifOnEdgeBounce() })

Test and download

Your game is ready! If you have a micro:bit, press |Download| to try it out on the device.

# data[].attributes.attachment_link.description
Snap the dot is a game of skill where the player has to press A exactly when the dot reaches the center of the screen.

# data[].attributes.body
https://makecode.microbit.org/projects/snap-the-dot

# data[].attributes.attachment_link.readable_text
markah = int(input("Masukkan markah anda: "))
if markah >= 80:
    print("Gred A")
    print("Syabas dan Tahniah Diucapkan")
elif markah >= 65:
    print("Gred B")
    print("Jangan Putus Asa, Usahakan Lagi")
else:
    print("Gred C")
    print("Sila Muhasabah Diri Anda")


# data[].attributes.attachment_link.readable_text
print("=== PROGRAM BIOATA SAYA ===")

nama = input("masukkan nama anda: ")
umur = int(input("Masukkan umur anda: "))
hobi = input("Masukkan hobi anda: ")
daerah = input("Masukkan daerah anda: ")
tahunlahir = 2025 - umur
cewek = input("Masukkan nama cewekmu: ")

print("\n--- BIODATA ---")
print ("Nama   :", nama)
print("Umur    :", umur, "tahun")
print("Hobi    :", hobi)

print("Assalamualaikum, saya ", nama,  "berumur", umur, "tahun, berasal dari ", daerah)
print("Saya suka ", hobi)
print("Tahun lahir saya ialah ", tahunlahir)
print("Crush saya si ", cewek)

# data[].attributes.attachment_link.readable_text
markah=int(input ("Masukkan markah anda:"))



if markah >=82:
    print("Gred A")
elif markah >= 72:
    print("Gred B")
elif markah >= 65:
    print("Gred C ")
elif markah >= 40:
    print("Gred D ")
else :
    print ("Gred E")

# data[].attributes.attachment_link.readable_text
print ("=== Program Biodata Saya ===")

nama=input("Masukkan nama anda: ")
umur= int(input("Masukkan tahun lahir anda:"))
hobi=input("Masukkan hobi anda:")
alamat=input("Masukkan alamat anda:")

#Kira tahun lahir
tahun_lahir=2025-umur

print("\n---BIODATA---")
print("Nama :",nama)
print("Umur :",tahun_lahir, "tahun")
print("Hobi :",hobi)
print("Alamat :",alamat)

# data[].attributes.body
Python Mini Calculator

# data[].attributes.attachment_link.readable_text
# Mini Calculator

def add(x, y):
    return x + y

def subtract(x, y):
    return x - y

def multiply(x, y):
    return x * y

def divide(x, y):
    if y != 0:
        return x / y
    else:
        return "Error! Division by zero."

print("=== Mini Calculator ===")
print("Select operation:")
print("1. Add (+)")
print("2. Subtract (-)")
print("3. Multiply (*)")
print("4. Divide (/)")

choice = input("Enter choice (1/2/3/4): ")

try:
    num1 = float(input("Enter first number: "))
    num2 = float(input("Enter second number: "))

    if choice == '1':
        print(f"Result: {add(num1, num2)}")
    elif choice == '2':
        print(f"Result: {subtract(num1, num2)}")
    elif choice == '3':
        print(f"Result: {multiply(num1, num2)}")
    elif choice == '4':
        print(f"Result: {divide(num1, num2)}")
    else:
        print("Invalid choice.")
except ValueError:
    print("Invalid input! Please enter numeric values.")

# data[].attributes.body
calculator versi GUI / app

# data[].attributes.attachment_link.readable_text
import tkinter as tk
from tkinter import ttk
import ast
import operator as op

# -------- Safe evaluator (supports + - * / ** // % and parentheses) --------
OPS = {
    ast.Add: op.add,
    ast.Sub: op.sub,
    ast.Mult: op.mul,
    ast.Div: op.truediv,
    ast.FloorDiv: op.floordiv,
    ast.Pow: op.pow,
    ast.Mod: op.mod,
    ast.USub: op.neg,
    ast.UAdd: op.pos,
}

def safe_eval(expr: str):
    """
    Evaluate a math expression safely using AST.
    Allowed: numbers, + - * / ** // % ( ) and unary +/- .
    """
    def _eval(node):
        if isinstance(node, ast.Num):              # Python <=3.7
            return node.n
        if isinstance(node, ast.Constant):         # Python 3.8+
            if isinstance(node.value, (int, float)):
                return node.value
            raise ValueError("Invalid constant")
        if isinstance(node, ast.UnaryOp) and type(node.op) in OPS:
            return OPS[type(node.op)](_eval(node.operand))
        if isinstance(node, ast.BinOp) and type(node.op) in OPS:
            left = _eval(node.left)
            right = _eval(node.right)
            # Division by zero guard
            if isinstance(node.op, ast.Div) and right == 0:
                raise ZeroDivisionError("Division by zero")
            if isinstance(node.op, ast.FloorDiv) and right == 0:
                raise ZeroDivisionError("Division by zero")
            if isinstance(node.op, ast.Mod) and right == 0:
                raise ZeroDivisionError("Division by zero")
            return OPS[type(node.op)](left, right)
        if isinstance(node, ast.Expression):
            return _eval(node.body)
        if isinstance(node, ast.Paren):
            return _eval(node.value)
        raise ValueError("Unsupported expression")
    try:
        # Normalize unicode multiplication/division if typed via keypad
        expr = expr.replace("��", "*").replace("��", "/")
        tree = ast.parse(expr, mode="eval")
        return _eval(tree)
    except Exception as e:
        raise e

# ----------------------------- GUI App -------------------------------------
class MiniCalculator(tk.Tk):
    def __init__(self):
        super().__init__()
        self.title("Mini Calculator")
        self.geometry("320x430")
        self.minsize(320, 430)
        self.configure(bg="#0f172a")  # slate-900

        # Style
        style = ttk.Style(self)
        try:
            self.call("source", "sun-valley.tcl")  # if you have it; ignored if missing
            style.theme_use("sun-valley-dark")
        except Exception:
            style.theme_use("clam")
        style.configure("TButton", font=("Segoe UI", 12), padding=6)
        style.configure("Primary.TButton", font=("Segoe UI", 12, "bold"))

        # Display
        self.display_var = tk.StringVar(value="")
        self.entry = ttk.Entry(self, textvariable=self.display_var, justify="right", font=("Consolas", 24))
        self.entry.grid(row=0, column=0, columnspan=4, sticky="nsew", padx=12, pady=(12, 6))
        self.entry.focus_set()

        # Secondary (mini) display for status/errors
        self.status_var = tk.StringVar(value="")
        self.status = ttk.Label(self, textvariable=self.status_var, anchor="e", foreground="#94a3b8")
        self.status.grid(row=1, column=0, columnspan=4, sticky="nsew", padx=12, pady=(0, 8))

        # Buttons layout
        btns = [
            ("AC", self.clear_all), ("C", self.clear_entry), ("���", self.backspace), ("��", lambda: self.insert_op("/")),
            ("7", lambda: self.insert("7")), ("8", lambda: self.insert("8")), ("9", lambda: self.insert("9")), ("��", lambda: self.insert_op("*")),
            ("4", lambda: self.insert("4")), ("5", lambda: self.insert("5")), ("6", lambda: self.insert("6")), ("���", lambda: self.insert_op("-")),
            ("1", lambda: self.insert("1")), ("2", lambda: self.insert("2")), ("3", lambda: self.insert("3")), ("+", lambda: self.insert_op("+")),
            ("��", self.toggle_sign), ("0", lambda: self.insert("0")), (".", lambda: self.insert_dot()), ("=", self.calculate),
        ]

        # Create buttons
        row_start = 2
        for i, (text, cmd) in enumerate(btns):
            r = row_start + i // 4
            c = i % 4
            style_name = "Primary.TButton" if text == "=" else "TButton"
            b = ttk.Button(self, text=text, command=cmd, style=style_name)
            b.grid(row=r, column=c, sticky="nsew", padx=6, pady=6)

        # Grid weights for responsive resize
        for r in range(0, 7):
            self.rowconfigure(r, weight=1)
        for c in range(4):
            self.columnconfigure(c, weight=1)

        # Keyboard bindings
        self.bind("<Return>", lambda e: self.calculate())
        self.bind("=", lambda e: self.calculate())
        self.bind("<Escape>", lambda e: self.clear_all())
        self.bind("<BackSpace>", lambda e: self.backspace())
        self.bind(".", lambda e: self.insert_dot())
        for key in "0123456789":
            self.bind(key, lambda e, k=key: self.insert(k))
        for key in "+-*/":
            self.bind(key, lambda e, k=key: self.insert_op(k))
        self.bind("(", lambda e: self.insert("("))
        self.bind(")", lambda e: self.insert(")"))
        # power and floor-div support via keyboard
        self.bind("^", lambda e: self.insert_op("**"))
        self.bind("<slash>", lambda e: self.insert_op("/"))

    # ---------- Input helpers ----------
    def insert(self, char):
        self.status_var.set("")
        self.entry.insert(tk.INSERT, char)

    def insert_op(self, opchar):
        self.status_var.set("")
        # Avoid duplicate operators like "++" unless it's unary + at start
        curr = self.display_var.get()
        if not curr and opchar in "*/":
            # don't start with * or /
            return
        if curr.endswith(("+", "-", "*", "/", "%")) and opchar in "+-*/%":
            # replace last op
            self.display_var.set(curr[:-1] + opchar)
            self.entry.icursor(tk.END)
        else:
            self.entry.insert(tk.INSERT, opchar)

    def insert_dot(self):
        self.status_var.set("")
        # Prevent multiple dots in the current number token
        expr = self.entry.get()
        idx = self.entry.index(tk.INSERT)
        # find start of current token
        start = idx
        while start > 0 and (expr[start-1].isdigit() or expr[start-1] == "."):
            start -= 1
        token = expr[start:idx]
        if "." in token:
            return
        self.entry.insert(tk.INSERT, ".")

    def toggle_sign(self):
        self.status_var.set("")
        expr = self.entry.get()
        if not expr:
            self.entry.insert(0, "-")
            return
        # Toggle sign of the current number token
        idx = self.entry.index(tk.INSERT)
        # find token bounds
        start = idx
        while start > 0 and (expr[start-1].isdigit() or expr[start-1] == "." ):
            start -= 1
        end = idx
        while end < len(expr) and (expr[end].isdigit() or expr[end] == "."):
            end += 1
        token = expr[start:end]
        if not token:  # no number under cursor; prepend unary minus at start
            self.entry.insert(0, "-")
            return
        # Replace token with its negated form using parentheses
        new_token = f"(-{token})" if not token.startswith("(-") else token[2:-1]  # simple toggle
        self.entry.delete(start, end)
        self.entry.insert(start, new_token)

    # ---------- Edit actions ----------
    def clear_all(self):
        self.display_var.set("")
        self.status_var.set("")

    def clear_entry(self):
        self.display_var.set("")

    def backspace(self):
        self.status_var.set("")
        pos = self.entry.index(tk.INSERT)
        if pos > 0:
            self.entry.delete(pos-1, pos)

    # ---------- Calculation ----------
    def calculate(self):
        expr = self.display_var.get().strip()
        if not expr:
            return
        try:
            result = safe_eval(expr)
            # Show as integer if it���s clean
            if isinstance(result, float) and result.is_integer():
                result = int(result)
            self.display_var.set(str(result))
            self.status_var.set("")
        except ZeroDivisionError:
            self.status_var.set("Error: Division by zero")
        except Exception:
            self.status_var.set("Error: Invalid expression")

if __name__ == "__main__":
    app = MiniCalculator()
    app.mainloop()

# data[].attributes.attachment_link.readable_text
print ("=== Kalkulator Mini Python ===")

nombor1 = input("Masukkan nombor pertama: ")
operasi = input("Masukkan operasi (+, -, *, /): ")
nombor2 = input("Masukkan nombor kedua: ")

num1 = float(nombor1)
num2 = float(nombor2)

if operasi == '+':
    hasil = num1 + num2
elif operasi == '-':
    hasil = num1 - num2
elif operasi == '*':
    hasil = num1 * num2
elif operasi == '/':
 
    if num2 == 0:
        hasil = "Error"
    else:
        hasil = num1 / num2
else:
   
    hasil = "Error"

print("========================")
print(f": {hasil}")
print("========================")

# data[].attributes.attachment_link.readable_text
print("\n===== BUAH-BUAHAN KK =====")
buah = ["epal", "pisang", "mangga", "nanas", "jambu"]
for item in buah:
    print(item)

print("\n===== JU ZON 6 =====")
zon6 = ["Tawau", "Kunak", "Leddatu", "Sempornah"]
for item in zon6:
    print(item)

print("\n=== JADUAL DARAB ===")
nombor = int(input("Masukkan Nombor Jadual Darab:"))

for i in range(1, 13): #dari 1 hingga 12
    hasil = nombor*i
    print(nombor, "x", i, "=", hasil)
    

# data[].attributes.attachment_link.readable_text
# 1. Masukkan 2 nombor
nombor1 = int(input("Masukkan nombor pertama: "))
nombor2 = int(input("Masukkan nombor kedua: "))

print("\nSenarai nombor dalam julat:")
# 2. Papar semua nombor dalam julat guna for loop
for num in range(nombor1, nombor2 + 1):  # +1 supaya nombor2 termasuk
    # 3. Tentukan genap atau ganjil
    if num % 2 == 0:
        print(f"{num} - Genap")
    else:
        print(f"{num} - Ganjil")

# data[].attributes.attachment_link.readable_text
mula = int(input("Masukkan nombor mula: "))
akhir = int(input("Masukkan nombor akhir: "))

bil_genap = 0
bil_ganjil = 0

print("\nSenarai nombor dari", mula, "hingga", akhir)
print("-----------------------------------")

for nombor in range(mula, akhir + 1):
    if nombor % 2 == 0:
        print(nombor, "adalah GENAP")
        bil_genap += 1
    else:
        print(nombor, "adalah GANJIL")
        bil_ganjil += 1

print("\nJumlah nombor GENAP :", bil_genap)
print("Jumlah nombor GANJIL:", bil_ganjil)

# data[].attributes.attachment_link.readable_text
print("=== kalkulator Mini Python ===")
print("Taip 'keluar' pada operator untuk menamatkan program.")
print("Operator yang disokong: + - * /")
print()

while True:
    try:
        nombor1 = float(input("Masukkan nombor pertama: "))
        operator = input("masukkan operator (+, -, *, /): ")

        if operator.lower() == 'keluar':
            print("Program ditamatkan. Teirma kasih!")
            break

        nombor2 = float(input("masukkan nombor kedua: "))

        if operator == "+":
            hasil = nombor1 + nombor2
        elif operator == "-":
            hasil = nombor1 - nombor2
        elif operator == "*":
            hasil = nombor1 * nombor2
        elif operator == "/":
            if nombor2 != 0:
                hasil = nombor1 / nombor2
            else:
                hasil = "Ralat: Tidak boleh bahagi dengan sifar!"
        else:
                hasil = "Ralat: Operator tidak sah!"

        print("hasil:", hasil)
        print()

    except ValueError:
            print("ralat: Sila masukkan nombor yang sah!")
            print()

# data[].attributes.attachment_link.readable_text
x = int(input("Input Nombor 1: "))
y = int(input("Input Nombor 2: "))
Operasi =input("Nyatakan Operasi yang diperlukan:(Nyatakan dalam simbol) ")
print("Nombor 1: ", x)
print("Nombor 2: ", y)
print("Operasi: ", Operasi)
print("\n--- JAWAPAN ---")

if Operasi == "+":
            print( x + y)
elif Operasi == "-":
            print (x - y)
elif Operasi == "*":
            print (x * y)
elif Operasi == "/":
    if y == 0:
            print ("Tidak Dapat")
    else:
            print (x / y)


# data[].attributes.attachment_link.readable_text
nama = input("Masukkan Nama Anda: ")
kelas = input("Masukkan Nama Kelas: ")
Subjek = input("Masukkan Nama Subjek: ")
Markah = int(input("Masukkan Markah Anda: "))


print("\n---- Laporan Peperiksaan ---")
print("Nama: ", nama)
print("Kelas: ", kelas)
print("Subjek: ", Subjek)
print("Markah: ", Markah)

if Markah >=80:
    print("Pencapaian: Gred A")
elif Markah >= 65:
    print ("Pencapaian: Gred B")
else:
    print("Pencapaian: Gagal")

# data[].attributes.body
Aktiviti:

“Kalkulator Mini Python”

# data[].attributes.attachment_link.readable_text
print("=== Kalkulator Mini ===")

nombor1 = float(input("Masukkan nombor pertama: "))
nombor2 = float(input("Masukkan nombor kedua: "))
operasi = input("Pilih operasi (+, -, *, /): ")

if operasi == "+":
    hasil = nombor1 + nombor2
elif operasi == "-":
    hasil = nombor1 - nombor2
elif operasi == "*":
    hasil = nombor1 * nombor2
elif operasi == "/":
    if nombor2 != 0:
        hasil = nombor1 / nombor2
    else:
        hasil = "Ralat: Bahagi sifar!"
else:
    hasil = "Operasi tidak sah!"

print("Hasil =", hasil)

# data[].attributes.body
Pengenalan dan Asas Python

# data[].attributes.body
Cabaran Mini

“Semak Nombor Genap atau Ganjil ”

# data[].attributes.attachment_link.readable_text
print("=== Cabaran Mini: Semak Nombor Genap atau Ganjil ===")

mula = int(input("Masukkan nombor mula: "))
akhir = int(input("Masukkan nombor akhir: "))

for i in range(mula, akhir + 1):
    if i % 2 == 0:
        print(i, "ialah nombor genap")
    else:
        print(i, "ialah nombor ganjil")

# data[].attributes.attachment_link.readable_text
#print("Hello")
#print()
#nama = input("Masukkan nama anda:")
#print("Ohh", nama)
#print()
#umur = int(input("masukkan umur anda:"))
#con = "masih muda"
#print(nama, "berumur", umur, "tahun.")
#print("ohh", con)

#print()
#print("=== Program Biodata Saya===")
#print()
#nama = input("Masukkan nama anda:")
#umur = int(input("Masukkan umur anda:"))
#hobi = input("Masukkan hobi anda:")

#kira tahun lahir
#tahun_lahir = 2025-umur
#\n = jarak di row atasnya

#print("\n--- BIODATA ---")
#print("Nama                :", nama)
#print("Umur (dalam angka)  :", umur, "tahun")
#print("Hobi                :", hobi)
#print("tahun lahir anda    :", tahun_lahir)
#print()

#== ialah sama dgn
#!= ialah tidak sama dgn
#> ialah lebih daripada
#< ialah kurang daripada
#>= ialah lebih dan sama dgn
#<= ialah kurang dan sama dgn

#print()
#nama = input("Masukkan nama anda:")
#markah = int(input("Masukkan markah anda:"))

#print("\n=== Gred Anda ===")

#if markah >= 80:
    #print("Tahniah! Gred", nama, "ialah A")
#elif markah >= 65:
    #print("Tahniah! Gred", nama, "ialah B")
#elif markah >= 45:
    #print("Gred", nama, "ialah C Jangan pernah putus asa")
#elif markah >= 35:
    #print("Gred", nama, "ialah D Teruskan usaha")
#else:
    #print("Gred", nama, "ialah E Teruskan usaha. Anda mampu mengubahnya")
#print()
#umur = int(input("Masukkan umur anda:"))
#print("\n=== Kelayakan Anda ===")
#if umur >= 18:
    #print("Anda layak mengundi")
#else:
    #print("Maaf, Anda belum layak mengundi")
print()
print()
print("="*50)
print("~~~~~~~~~~ Kalkulator Paling Bikin Panas ~~~~~~~~")
print("="*50)
# Minta input daripada pengguna
print()
nombor1 = float(input("Bah apa nombor pertama: "))
operator = input("kau mau + ka - ka x ka /?: ")
nombor2 = float(input("Bah nombor kedua: "))

# Lakukan pengiraan berdasarkan operator
hasil = 0
if operator == '+':
    hasil = nombor1 + nombor2
elif operator == '-':
    hasil = nombor1 - nombor2
elif operator == 'x':
    hasil = nombor1 * nombor2
elif operator == '/':
    if nombor2 == 0:
        print("Error Bro: Kenapa? Sebab mana buli kau bahagi dengan nombor sifar!")
    else:
        hasil = nombor1 / nombor2
else:
    print("Ralat: Syntax Error Bro!")

# Cetak hasil (jika tiada ralat)
print("="*80)
if operator in ['+', '-', 'x', '/'] and not (operator == '/' and nombor2 == 0):
    print("\nHasilnya:", nombor1, operator, nombor2, "=", hasil, "lah tu pun nda tau ka")
print("="*80)


















    

# data[].attributes.attachment_link.readable_text
#loop
#buah = ["1.epal","2.pisang","3.mangga"]
#for item in buah:
    #print(item)

#print("="*40)
#print("          Jadual Darab")
#print("="*40)

#nombor = int(input("Masukkan nombor jadual darab:"))

#for i in range(1,21):
    #hasil = nombor*i
    #print(nombor, "x", "i", "=", hasil)
    
print("="*40)
print("     Pemeriksa Nombor Genap/Ganjil dalam Julat")
print("="*40)
# Minta input nombor mula dan akhir dari pengguna
nombor_mula = int(input("Masukkan nombor mula: "))
nombor_akhir = int(input("Masukkan nombor akhir: "))

# Pastikan nombor mula tidak lebih besar daripada nombor akhir
if nombor_mula > nombor_akhir:
    print("Nombor mula tidak boleh lebih besar daripada nombor akhir.")
else:
    print(f"\nMemaparkan nombor dari {nombor_mula} hingga {nombor_akhir}:")
    # Gunakan for loop untuk melintasi julat nombor
    for nombor in range(nombor_mula, nombor_akhir + 1):
        # Semak sama ada nombor itu genap atau ganjil menggunakan operator modulo (%)
        if nombor % 2 == 0:
            print(f"{nombor} (Genap)")
        else:
            print(f"{nombor} (Ganjil)")
            
#Tambah fungsi sifir
sifir = int(input("masukkan sifir pilihan anda:"))

for sifir in range(nombor_mula, nombor_akhir + 1):
  hasil = nombor*sifir
  print(hasil)

# data[].attributes.body
Kumpulan Azry N the Gang

# data[].attributes.attachment_link.description
Made with ❤️ in Microsoft MakeCode for micro:bit.

# data[].attributes.attachment_link.description
Made with ❤️ in Microsoft MakeCode for micro:bit.

# data[].attributes.attachment_link.readable_text
print ("=== Nombor Genap dan Ganjil ===")

mula = int(input("Masukkan nombor mula: "))
akhir = int(input("Masukkan nombor akhir: "))
print("---------------------------------")

for nombor in range(mula, akhir + 1):
    
    if (nombor % 2) == 0:
        print(f"{nombor} ialah nombor GENAP.")
    else:
        print(f"{nombor} ialah nombor GANJIL.")
        

print("--- Selamat Belajar ---")

# data[].attributes.attachment_link.title
UNBOXING REKA EDUKIT - KIT PEMBELAJARAN INOVASI ALAF BARU

# data[].attributes.attachment_link.title
UNBOXING MIKROBOTIK - KIT PEMBELAJARAN ROBOTIK ALAF BARU

# data[].attributes.attachment_link.description
Download and use mBlock across different devices. Supports Windows, Mac, Linux, Chromebook, iOS ,and Android.

# data[].attributes.attachment_link.description
Pelajari kelas robotik dengan cara yang mudah dan menyeronokkan. Tingkatkan kreativiti, pemikiran kritis dan kemahiran menyelesaikan masalah

# data[].attributes.attachment_link.title
Tinkercad | From mind to design in minutes

# data[].attributes.attachment_link.description
Tinkercad is a free, easy-to-use app for 3D design, electronics, and coding.

# data[].attributes.attachment_link.description
Train a computer to recognize your own images, sounds, & poses. A fast, easy way to create machine learning models for your sites, apps, and more - no expertise or coding required.

# data[].attributes.attachment_link.title
PictoBlox - Python and Block-Based AI Programming Software for Kids

# data[].attributes.attachment_link.description
AI and Coding Software for kids to learn Block-based coding and Python Programming. Kids can make innovative AI, ML, IoT, and Robotics Projects.

# data[].attributes.headline
MACHINE LEARNING AND SAFE SHOPPING EXPERIENCE

# data[].attributes.subject
MACHINE LEARNING AND SAFE SHOPPING EXPERIENCE

# data[].attributes.attachment_link.title
Machine Learning enient and Safe Shopping Experience

# data[].attributes.attachment_link.description
Discover an innovative touchless shopping experience with the Machine Learning Supported Touchless Smart Vending Device created by Günes İkizceli and Zeynep Karakusoglu from Turkey. This AI-powered vending machine utilizes face recognition and gesture control to provide a personalized and contactless shopping experience, ensuring convenience and safety for users.

# data[].attributes.attachment_link.title
Experience the Thrilling Red Light & Green Light Game with AI Integration

# data[].attributes.attachment_link.description
Welcome to Squid Game v1.2, an AI-powered game inspired by the hit movie of 2021. Almira Nindya Pakerti, a 9-year-old from Indonesia, created the game for the international online artificial intelligence and coding competition Codeavour 2021. The game merges classic ideas of the kid’s game, Red Light & Green Light, and cutting-edge machine learning technology. The game works using an image model and simple blinking of the eyes. Players navigate through obstacles, controlling their movement by closing and opening their eyes. To create the game, Almira used the Google Teachable machine and 400 images for the training class — separated into “on” and “off” — which signify whether the eyes need to be open or closed for the game. After loading the model to PictoBlox, she was able to call the class and create the control with if-then-else statements. This thrilling game merges fun and education in a unique way. Children can have fun while learning about the amazing possibilities of Artificial Intelligence.

# data[].attributes.attachment_link.title
Google NotebookLM | AI Research Tool & Thinking Partner

# data[].attributes.attachment_link.description
Meet NotebookLM, the AI research tool and thinking partner that can analyze your sources, turn complexity into clarity and transform your content.

# data[].attributes.attachment_link.title
Napkin AI - The AI assistant for visual communication

# data[].attributes.attachment_link.description
Just type, copy-paste or generate your text and Napkin will instantly transform it into insightful visuals. Make your communication more effective with Napkin.

# data[].attributes.attachment_link.readable_text
Send feedback Stay organized with collections Save and categorize content based on your preferences.

Google AI Studio is the fastest way to start building with Gemini, our next generation multimodal generative AI model.

# data[].attributes.attachment_link.title
Google AI Studio | Gemini API | Google for Developers

# data[].attributes.attachment_link.description
Send feedback Stay organized with collections Save and categorize content based on your preferences. Google AI Studio is the fastest way to start building with Gemini, our next generation multimodal generative AI model.

# data[].attributes.attachment_link.description
Free, AI-powered Bing Image Creator and Bing Video Creator turn your words into stunning visuals and engaging videos in seconds. Generate images and videos quickly and easily, powered by DALL-E and Sora.

# data[].attributes.attachment_link.keywords[]
منشئ فيديو بالذكاء الاصطناعي

# data[].attributes.attachment_link.keywords[]
تطبيق فيديو عربي مجاني

# data[].attributes.attachment_link.keywords[]
صنع فيديوهات للفيسبوك

# data[].attributes.attachment_link.keywords[]
أداة فيديو احترافية

# data[].attributes.attachment_link.keywords[]
توليد فيديو بالصوت العربي

# data[].attributes.attachment_link.description
Create professional videos instantly with DigenAI’s free AI video generator. Convert images to engaging videos with realistic voice synchronization, multilingual support, and smart motion technology. No technical skills required - start creating today! أنشئ مقاطع فيديو احترافية على الفور باستخدام مولد الفيديو المجاني الذي يعمل بالذكاء الاصطناعي من DigenAI. حوّل الصور إلى مقاطع فيديو جذابة باستخدام مزامنة صوت واقعية ودعم متعدد اللغات وتقنية الحركة الذكية. لا تتطلب أي مهارات تقنية - ابدأ في الإنشاء اليوم! Crie vídeos profissionais instantaneamente com o gerador de vídeo de IA gratuito da DigenAI. Converta imagens em vídeos envolventes com sincronização de voz realista, suporte multilíngue e tecnologia de movimento inteligente. Nenhuma habilidade técnica necessária - comece a criar hoje mesmo!

# data[].attributes.attachment_link.readable_text
Login

We're glad to see you again. Log in to access your visualizations and create new ones.

Alternatively, sign in with

Don't have an account yet?
Create a new account or try out Datawrapper without signing up.

# data[].attributes.attachment_link.description
Enrich your stories with charts, maps, and tables.

# data[].attributes.attachment_link.description
Unlock the power of your data with interactive dashboards and beautiful reports that inspire smarter business decisions.

# data[].attributes.attachment_link.title
GAMBAR BENGKEL IT D.R.I.V.E (INTEGRATED TECHNOLOGY FOR DIGITAL READINESS IN TVET & EDUTECH) JPNS TAHUN 2025 11-13 Ogos 2025