/Ujian_Fundamental_JCDS07

Panduan Soal Ujian Python Fundamental JC Data Science BSD batch 7 Oct'19

Soal Ujian Python Data Science Fundamental

Lintang_Purwadhika

Soal 1 - πŸ”΄πŸ”΅ Himpunan

Diketahui:

  • A = himpunan (set) bilangan genap antara 1 dan 20.
  • B = himpunan (set) bilangan ganjil antara 1 dan 20.
  • C = himpunan (set) bilangan negatif lebih dari -10.
  • D = himpunan (set) bilangan prima antara 1 dan 20.
  • E = himpunan (set) bilangan komposit antara 1 dan 20.

Definisi & kategori bilangan dapat Anda simak di laman Wikipedia. Buatlah sebuah file python (.py) yang dapat menyelesaikan permasalahan himpunan berikut:

a. A βˆͺ B βˆͺ C βˆͺ D βˆͺ E

b. (A ∩ B) βˆͺ (D ∩ E)

c. (A βˆͺ B) ∩ (D βˆͺ E)

d. (A βˆͺ B) - (D βˆͺ E)

e. (A βˆͺ B βˆͺ C) - (A ∩ E)

Catatan:

βœ… Commit & push source code jawaban soal ini ke Github Anda, buatlah repo dengan nama Ujian_Himpunan, kemudian lampirkan url link repo Github Anda via email ke lintang@purwadhika.com!

Soal 2 - πŸ”Ί Segitiga Kata

Buatlah sebuah file python (.py) yang mengandung sebuah function dengan 1 parameter, yang dapat membentuk pola segitiga dengan elemen berupa karakter-karakter dari sebuah string yang menjadi parameter function tersebut. Info selengkapnya silakan ikuti case flow beserta output yang diharapkan berikut ini.

  • Case Flow: Saat dieksekusi, program akan mencetak pola segitiga dari karakter-karakter string yang diinputkan. Jika jumlah karakter string memenuhi syarat terbentuknya pola, maka program akan menjalankannya. Namun jika jumlah karakter string tidak memenuhi syarat membentuk pola, maka akan muncul pesan bahwa string tidak memenuhi syarat membentuk pola.

    segitigaKata('Purwadhika')
    segitigaKata('Purwadhika Startup and Coding School @BSD')
    segitigaKata('kode')
    segitigaKata('kode python')
    segitigaKata('lintang')
  • Output yang diharapkan:

    # segitigaKata('Purwadhika')
    P 
    u r     
    w a d   
    h i k a 
    p u r w 
    a d h   
    i k     
    a   
    
    # segitigaKata('Purwadhika Startup and Coding School @BSD')
    P
    u r
    w a d 
    h i k a
    S t a r t
    u p a n d C
    o d i n g S c
    h o o l @ B S D
    P u r w a d h i
    k a S t a r t
    u p a n d C
    o d i n g
    S c h o
    o l @
    B S 
    D
    
    # segitigaKata('kode')
    Mohon maaf, jumlah karakter tidak memenuhi syarat membentuk pola.
    
    # segitigaKata('kode python')
    k
    o d
    e p y
    t h o n
    k o d e
    p y t
    h o
    n
    
    # segitigaKata('lintang')
    Mohon maaf, jumlah karakter tidak memenuhi syarat membentuk pola.

Catatan:

βœ… Pastikan Anda membuat sebuah function dengan 1 parameter: segitigaKata(kata). Commit & push source code jawaban soal ini ke Github Anda, buatlah repo dengan nama Ujian_Segitiga_Kata, kemudian lampirkan url link repo Github Anda via email ke lintang@purwadhika.com!

Soal 3 - πŸ’³ Nomor Kartu Kredit

Disediakan sebuah file JSON (ccNasabah.json, unduh di sini) berisi data nomor kartu kredit nasabah sebuah bank, yang belum diverifikasi validitas kartu kreditnya. Buatlah sebuah file python (.py) yang dapat membaca file JSON tersebut, kemudian memisahkan antara nasabah dengan nomor kartu kredit valid & invalid, lalu menyimpan hasilnya dalam file JSON yang terpisah (ccValid.json dan ccInvalid.json). Skema kerjanya dapat diilustrasikan sebagai berikut:

kartukredit

Adapun kriteria nomor kartu kredit yang valid adalah sebagai berikut:

  • Diawali dengan angka 4, 5 atau 6.
  • Terdiri atas tepat 16 digit angka.
  • Hanya mengandung angka 0-9.
  • Boleh dituliskan berupa grup 4 digit yang dipisahkan dengan tanda hubung "-"
  • Tidak boleh terdapat 1 angka yang diulang >3x & tertulis secara beruntun, misal: 3333.

Contoh:

  • βœ… Nomor kartu kredit valid:

    • 4253625879615781
    • 4424424424442442
    • 5122-2368-7954-3213
    • 4123456789123454
    • 5123-4567-8912-3455
    • 4123356789123456
  • ❌ Nomor kartu kredit invalid:

    • 0525362587961578    (tidak diawali dengan 4, 5 atau 6)
    • 42536258796157867    (terdiri atas 17 digit angka)
    • 44244z4424442444    (terdapat karakter 'z' yang bukan angka)
    • 5122.2368.7954.3214    (dipisahkan bukan dengan tanda hubung)
    • 4424444424442444    (terdapat angka yang diulang >3x & tertulis secara beruntun, yaitu: 44444)
    • 61234-123-8912-3456    (terdapat grup yang tidak hanya terdiri atas 4 digit angka)
    • 5199-9967-7912-3457    (terdapat angka yang diulang >3x & tertulis secara beruntun, yaitu: 9999)
    • 5123 - 4567 - 8912 - 3456    (dipisahkan dengan tanda hubung & spasi)

Output yang diharapkan:

  • File ccValid.json berisi data nasabah dengan nomor kartu kredit yang valid:
    [
        {"nama": "Andi", "noCreditCard": "4253625879615781"},
        {"nama": "Budi", "noCreditCard": "5123-4567-8912-3455"},
        {"nama": "Euis", "noCreditCard": "4424424424442442"},
        {"nama": "Inne", "noCreditCard": "5122-2368-7954-3213"},
        {"nama": "Nuri", "noCreditCard": "4123356789123456"},
        {"nama": "Opik", "noCreditCard": "4123456789123454"}
    ]
  • File ccInvalid.json berisi data nasabah dengan nomor kartu kredit yang tidak valid:
    [
        {"nama": "Caca", "noCreditCard": "0525362587961578"},
        {"nama": "Deni", "noCreditCard": "42536258796157867"},
        {"nama": "Fani", "noCreditCard": "44244z4424442444"},
        {"nama": "Gaga", "noCreditCard": "5122.2368.7954.3214"},
        {"nama": "Hari", "noCreditCard": "4424444424442444"},
        {"nama": "Janu", "noCreditCard": "61234-123-8912-3456"},
        {"nama": "Kiki", "noCreditCard": "5199-9967-7912-3457"},
        {"nama": "Luis", "noCreditCard": "1111222233334444"},
        {"nama": "Mira", "noCreditCard": "5123 - 4567 - 8912 - 3456"}
    ]

Catatan:

βœ… Pastikan Anda membuat sebuah file python yang dapat membaca ccNasabah.json, kemudian memisahkan antara nasabah dengan kartu kredit valid & kartu kredit invalid, lalu menyimpannya dalam dalam file JSON yang terpisah (ccValid.json dan ccInvalid.json).

βœ… Commit & push source code jawaban soal ini, beserta file JSON hasilnya ke Github Anda, buatlah repo dengan nama Ujian_Kartu_Kredit, kemudian lampirkan url link repo Github Anda via email ke lintang@purwadhika.com!

πŸ”ΈπŸ”ΈπŸ”ΈπŸ”ΈπŸ”ΈπŸ”ΈπŸ”ΈπŸ”ΈπŸ”ΈπŸ”ΈπŸ”ΈπŸ”ΈπŸ”ΈπŸ”ΈπŸ”ΈπŸ”ΈπŸ”ΈπŸ”ΈπŸ”ΈπŸ”ΈπŸ”ΈπŸ”ΈπŸ”ΈπŸ”ΈπŸ”ΈπŸ”ΈπŸ”ΈπŸ”ΈπŸ”ΈπŸ”ΈπŸ”ΈπŸ”ΈπŸ”ΈπŸ”ΈπŸ”ΈπŸ”ΈπŸ”ΈπŸ”ΈπŸ”Έ

🏁 Challenge - Data Science Fundamental

challenge

Buatlah sebuah file spreadsheet/excel (.xlsx) yang pada sel A1:C3 berisi angka seperti pada ilustrasi di atas. Tugas Anda, secara berkelompok & bergantian (@2 menit), buatlah sebuah file python (.py) yang dapat membaca file excel tersebut, kemudian menyimpannya kembali di sheet 2, 3 & 4 pada file yang sama, namun dengan konfigurasi angka yang berbeda. Perhatikan ilustrasi di atas πŸ‘†

πŸ”ΈπŸ”ΈπŸ”ΈπŸ”ΈπŸ”ΈπŸ”ΈπŸ”ΈπŸ”ΈπŸ”ΈπŸ”ΈπŸ”ΈπŸ”ΈπŸ”ΈπŸ”ΈπŸ”ΈπŸ”ΈπŸ”ΈπŸ”ΈπŸ”ΈπŸ”ΈπŸ”ΈπŸ”ΈπŸ”ΈπŸ”ΈπŸ”ΈπŸ”ΈπŸ”ΈπŸ”ΈπŸ”ΈπŸ”ΈπŸ”ΈπŸ”ΈπŸ”ΈπŸ”ΈπŸ”ΈπŸ”ΈπŸ”ΈπŸ”ΈπŸ”Έ

Remedial Ujian Python Data Science Fundamental

Soal 1 - πŸ“† Tahun Kabisat

Tahun kabisat merupakan tahun yang mengalami penambahan satu hari dengan tujuan untuk menyesuaikan penanggalan dengan tahun astronomi. Dalam satu tahun tidak secara persis terdiri dari 365 hari, tetapi 365 hari 5 jam 48 menit 45,1814 detik. Jika hal ini tidak dihiraukan, maka setiap empat tahun akan kekurangan hampir 1 hari. Maka untuk mengkompensasi hal ini, setiap 4 tahun sekali, diberi 1 hari ekstra: 29 Februari.

Buatlah sebuah file python interaktif (.py) berisi sebuah function yang dapat menentukan suatu input dari user tergolong tahun kabisat atau tidak. Saat file dieksekusi, user diminta memasukkan angka tahun tertentu, kemudian akan muncul hasil yang menyatakan input user tersebut tergolong tahun kabisat atau tidak. Contoh hasil yang diharapkan:

Input tahun : 2019
Hasil : BUKAN TAHUN KABISAT

Input tahun : 2020
Hasil : TAHUN KABISAT

βœ… Commit & push source code jawaban soal ini ke Github Anda, buatlah repo dengan nama Remedial_Tahun_Kabisat, kemudian lampirkan url link repo Github Anda via email ke lintang@purwadhika.com!

Soal 2 - πŸ“§ Alamat Email

Buatlah sebuah file python interaktif (.py) berisi sebuah function yang dapat menentukan suatu input dari user tergolong alamat email yang valid atau tidak. Adapun kriteria alamat email yang valid adalah sebagai berikut:

  • Memiliki format: namaUser@namaHosting.ekstensi
  • namaUser hanya boleh terdiri atas huruf, angka, dash ('-') dan underscore ('_').
  • namaHosting hanya boleh terdiri atas huruf dan angka.
  • ekstensi hanya boleh terdiri atas huruf, dengan maksimum 5 karakter.

Contoh:

Saat file dieksekusi, user diminta memasukkan alamat email, kemudian akan muncul hasil yang menyatakan email user valid atau tidak. Contoh hasil yang diharapkan:

Input email : lintang@purwadhika.com
Hasil : EMAIL VALID

Input email : lintang123@ironman123.space
Hasil : EMAIL VALID

Input email : captain@l*nt*ng.id
Hasil : EMAIL TIDAK VALID

βœ… Commit & push source code jawaban soal ini ke Github Anda, buatlah repo dengan nama Remedial_Alamat_Email, kemudian lampirkan url link repo Github Anda via email ke lintang@purwadhika.com!

#HappyCoding ☺️

Lintang Wisesa πŸ’Œ lintangwisesa@ymail.com

Facebook | Twitter | LinkedIn | Youtube | :octocat: GitHub | Hackster