From 1795fa1c2f30923d4a91b5b38d779e3d5a6bd5f1 Mon Sep 17 00:00:00 2001 From: Chizuui Date: Thu, 27 Nov 2025 00:38:38 +0700 Subject: [PATCH] First --- Acara-10/loop.py | 7 + Acara-10/lopping.py | 6 + Acara-10/nasted-loop.py | 5 + Acara-10/while-true.py | 13 ++ Acara-11/1.py | 0 Acara-11/2.py | 26 +++ Acara-11/3.py | 26 +++ Acara-11/4.py | 18 ++ Acara-11/5.py | 22 +++ Acara-11/list1.py | 39 +++++ Acara-11/slising_list.py | 25 +++ Acara-12/NastedTuple.py | 11 ++ Acara-12/PengulanganTuple.py | 4 + Acara-12/SequenceUnpacking.py | 13 ++ Acara-12/slicing.py | 16 ++ Acara-12/slicing3.py | 8 + Acara-12/slicing4.py | 4 + Acara-12/tuple.py | 23 +++ Acara-12/tuple2.py | 20 +++ Acara-12/tupleFunc.py | 8 + Acara-13/difference.py | 10 ++ Acara-13/intersection.py | 11 ++ Acara-13/komplemen.py | 8 + Acara-13/nasted.py | 7 + Acara-13/set1.py | 23 +++ Acara-13/set2.py | 27 +++ Acara-13/task.py | 11 ++ Acara-13/task2.py | 29 ++++ Acara-13/union.py | 11 ++ Acara-14/Dictionary/1.py | 4 + Acara-14/Dictionary/1a.py | 2 + Acara-14/Dictionary/2.py | 65 +++++++ Acara-15/__pycache__/a.cpython-313.pyc | Bin 0 -> 366 bytes Acara-15/a.py | 10 ++ Acara-15/b.py | 10 ++ Acara-15/c.py | 7 + Acara-15/d.py | 5 + Acara-15/e.py | 18 ++ Acara-16/calc1.py | 62 +++++++ Acara-16/calc2.py | 63 +++++++ Acara-16/temp.py | 141 +++++++++++++++ Acara-16/temp2.py | 75 ++++++++ Acara-16/temp3.py | 161 ++++++++++++++++++ Acara-21/workSpace/coba.py | 1 + Acara-21/workSpace/led1.py | 7 + Acara-7/input-output.py | 22 +++ Acara-7/input-output2.py | 5 + Acara-7/input-output3.py | 3 + Acara-8/Percabangan-1.py | 9 + Acara-8/if-elif-else.py | 26 +++ Acara-8/if-else.py | 6 + Acara-8/if.py | 10 ++ Acara-8/naste-if.py | 18 ++ Operator Penugasan.py | 15 ++ Operator bitwise.py | 9 + Operator bitwise2.py | 26 +++ Struktur Data/Tugas 1/hitung_hutang.py | 23 +++ Tugas/Crud.py | 118 +++++++++++++ Tugas/LDR Sensor.fzz | Bin 0 -> 2496 bytes Tugas/Lamp Sensor.fzz | Bin 0 -> 54699 bytes Tugas/Lamp Sensor2.fzz | Bin 0 -> 49919 bytes Tugas/a.py | 19 +++ Tugas/b.py | 10 ++ Tugas/c.py | 9 + Tugas/crud2.py | 120 +++++++++++++ Tugas/crud3.py | 99 +++++++++++ Tugas/d.py | 18 ++ Tugas/data_mahasiswa.txt | 1 + Tugas/recrusive.py | 47 +++++ a.py | 8 + b.py | 7 + basic-programming/.zed/settings.json | 0 .../2025_semester_1/29_aug/acara5.py | 5 + .../2025_semester_1/29_aug/acara6.py | 26 +++ .../2025_semester_1/29_aug/test.py | 23 +++ operator logika.py | 16 ++ operator pembanding.py | 25 +++ seb.py | 13 ++ simple calc.py | 57 +++++++ simple calc2.py | 22 +++ test.py | 16 ++ 81 files changed, 1893 insertions(+) create mode 100755 Acara-10/loop.py create mode 100755 Acara-10/lopping.py create mode 100755 Acara-10/nasted-loop.py create mode 100755 Acara-10/while-true.py create mode 100755 Acara-11/1.py create mode 100755 Acara-11/2.py create mode 100755 Acara-11/3.py create mode 100755 Acara-11/4.py create mode 100755 Acara-11/5.py create mode 100755 Acara-11/list1.py create mode 100755 Acara-11/slising_list.py create mode 100755 Acara-12/NastedTuple.py create mode 100755 Acara-12/PengulanganTuple.py create mode 100755 Acara-12/SequenceUnpacking.py create mode 100755 Acara-12/slicing.py create mode 100755 Acara-12/slicing3.py create mode 100755 Acara-12/slicing4.py create mode 100755 Acara-12/tuple.py create mode 100755 Acara-12/tuple2.py create mode 100755 Acara-12/tupleFunc.py create mode 100644 Acara-13/difference.py create mode 100644 Acara-13/intersection.py create mode 100644 Acara-13/komplemen.py create mode 100644 Acara-13/nasted.py create mode 100644 Acara-13/set1.py create mode 100644 Acara-13/set2.py create mode 100644 Acara-13/task.py create mode 100644 Acara-13/task2.py create mode 100644 Acara-13/union.py create mode 100755 Acara-14/Dictionary/1.py create mode 100644 Acara-14/Dictionary/1a.py create mode 100755 Acara-14/Dictionary/2.py create mode 100644 Acara-15/__pycache__/a.cpython-313.pyc create mode 100755 Acara-15/a.py create mode 100644 Acara-15/b.py create mode 100644 Acara-15/c.py create mode 100644 Acara-15/d.py create mode 100644 Acara-15/e.py create mode 100644 Acara-16/calc1.py create mode 100644 Acara-16/calc2.py create mode 100644 Acara-16/temp.py create mode 100644 Acara-16/temp2.py create mode 100644 Acara-16/temp3.py create mode 100644 Acara-21/workSpace/coba.py create mode 100644 Acara-21/workSpace/led1.py create mode 100755 Acara-7/input-output.py create mode 100755 Acara-7/input-output2.py create mode 100755 Acara-7/input-output3.py create mode 100755 Acara-8/Percabangan-1.py create mode 100755 Acara-8/if-elif-else.py create mode 100755 Acara-8/if-else.py create mode 100755 Acara-8/if.py create mode 100755 Acara-8/naste-if.py create mode 100755 Operator Penugasan.py create mode 100755 Operator bitwise.py create mode 100755 Operator bitwise2.py create mode 100755 Struktur Data/Tugas 1/hitung_hutang.py create mode 100644 Tugas/Crud.py create mode 100644 Tugas/LDR Sensor.fzz create mode 100644 Tugas/Lamp Sensor.fzz create mode 100644 Tugas/Lamp Sensor2.fzz create mode 100644 Tugas/a.py create mode 100644 Tugas/b.py create mode 100644 Tugas/c.py create mode 100755 Tugas/crud2.py create mode 100755 Tugas/crud3.py create mode 100644 Tugas/d.py create mode 100755 Tugas/data_mahasiswa.txt create mode 100644 Tugas/recrusive.py create mode 100755 a.py create mode 100755 b.py create mode 100644 basic-programming/.zed/settings.json create mode 100755 basic-programming/2025_semester_1/29_aug/acara5.py create mode 100755 basic-programming/2025_semester_1/29_aug/acara6.py create mode 100755 basic-programming/2025_semester_1/29_aug/test.py create mode 100755 operator logika.py create mode 100755 operator pembanding.py create mode 100755 seb.py create mode 100755 simple calc.py create mode 100755 simple calc2.py create mode 100755 test.py diff --git a/Acara-10/loop.py b/Acara-10/loop.py new file mode 100755 index 0000000..bf012e8 --- /dev/null +++ b/Acara-10/loop.py @@ -0,0 +1,7 @@ +angka = [1,2,3,4,5,6,7,8,9,10] +jumlah = 0 + +for i in angka: + jumlah = jumlah + i + +print ('jumlah =', jumlah) \ No newline at end of file diff --git a/Acara-10/lopping.py b/Acara-10/lopping.py new file mode 100755 index 0000000..04be7d2 --- /dev/null +++ b/Acara-10/lopping.py @@ -0,0 +1,6 @@ +jumlah = 5 + +while jumlah > 0: + print (jumlah) + jumlah -= 1 +print("selesai") \ No newline at end of file diff --git a/Acara-10/nasted-loop.py b/Acara-10/nasted-loop.py new file mode 100755 index 0000000..f710f6a --- /dev/null +++ b/Acara-10/nasted-loop.py @@ -0,0 +1,5 @@ +for baris in range(5): + for kolom in range(7): + print('*', end=' ') +else : + print('') \ No newline at end of file diff --git a/Acara-10/while-true.py b/Acara-10/while-true.py new file mode 100755 index 0000000..f8c863f --- /dev/null +++ b/Acara-10/while-true.py @@ -0,0 +1,13 @@ +angka = 0 +while True : + print(angka) + angka = angka + 1 + + if angka == 2: + print("skip") + continue + + if angka == 5: + print ("break") + break +print("selesai") \ No newline at end of file diff --git a/Acara-11/1.py b/Acara-11/1.py new file mode 100755 index 0000000..e69de29 diff --git a/Acara-11/2.py b/Acara-11/2.py new file mode 100755 index 0000000..9cc9124 --- /dev/null +++ b/Acara-11/2.py @@ -0,0 +1,26 @@ +angka = [1, 5, 7, 9, 11] + +# Mendapatkan jumlah item pada list menggunakan len +print("Jumlah item pada list:") +print(len(angka)) + +# Mengakses item di akhir list menggunakan append +print("Item terakhir pada list:") +angka.append(13) +print(angka) + +# menyisipkan item pada indeks tertentu menggunakan isert +print ('menyisipkan angka 3 pada indeks ke 1 mengguanakan insert:') +indeks =1 +angka.insert(indeks, 3) +print(angka) + +# menambah list pada list menggunakan extend +print ('menambah list berisi 15, 17, 19 pada list nomor:') +angka.extend([15, 17, 19]) +print(angka) + +#cek indeks +print("cek angka 1 indeks berapa? angka 2 di indeks keberapa?") +print (angka.index(1)) +print (angka.index(2)) diff --git a/Acara-11/3.py b/Acara-11/3.py new file mode 100755 index 0000000..e0af3bf --- /dev/null +++ b/Acara-11/3.py @@ -0,0 +1,26 @@ +day = ['hari', 'senin', 'selasa', 'maret', 'rabu', 'kamis', 'juni'] +print (day) + +# menghapus nilai yang sama +print ('menghapus maret dari list :') +day.remove('maret') +print (day) + +# menghapus nilai pada indeks tertentu (del) +print ('menghapus indeks ke 0 yaitu hari :') +del day[0] +print (day) + +# menghapus nilai pada indeks tertentu (pop) +print ('menghapus indeks ke 4 yaitu juni mneggunakan pop :') +day.pop(4) +print (day) + +# menghapus nilai item terakhir pada list yaitu kamis (pop) +print ('menghapus item terakhir pada list yaitu kamis menggunakan pop :') +day.pop() +print (day) + +# menghapus nilai yang dihapus menggunakan pop +print ('menghapus nilai yang dihapus menggunakan pop :') +print (day.pop(0)) diff --git a/Acara-11/4.py b/Acara-11/4.py new file mode 100755 index 0000000..08d9517 --- /dev/null +++ b/Acara-11/4.py @@ -0,0 +1,18 @@ +angka = [3, 5, 8, 1, 2, 9, 7, 4, 6,] +huruf = ['doni','caca','eva','bobi,','ani','faruk'] +print(angka) +print(huruf) + +# mengurutkan isi list berupa angka dan kata menggunakan sort +print('marilah kita urutkan :') +angka.sort() +huruf.sort() +print(angka) +print(huruf) + +# membalik index isi list berapa angka dan kata menggunaan reverse +print('membalik urutan index :') +angka.reverse() +huruf.reverse() +print(angka) +print(huruf) diff --git a/Acara-11/5.py b/Acara-11/5.py new file mode 100755 index 0000000..9ffdac9 --- /dev/null +++ b/Acara-11/5.py @@ -0,0 +1,22 @@ +# list minuman dengan 2 dimensi +minuman = [ + ["kopi","susu","teh"], + ["jus apel","jus melon","jur jeruk"], + ["es kopi","es campur","es teler"] +] +print(minuman) +print('\n') + +# cara mengakses list multidiemnsi +# angka pertama menunjukkan kolom,yang kedua adalah baris +print("menampilkan salah satu menu dengan menunjuk nomer index :") +print(minuman[2][0]) +print(minuman[0][1]) +print('\n') + +# mencetak isi list di dalam list satu persatu +print('\n') +print("menampilkan isi list di dalam list :") +for menu in minuman: + for menu2 in menu: + print(menu2) \ No newline at end of file diff --git a/Acara-11/list1.py b/Acara-11/list1.py new file mode 100755 index 0000000..56f7d2d --- /dev/null +++ b/Acara-11/list1.py @@ -0,0 +1,39 @@ +# membuat list kosong +ListKosong = [] + +# membuat list berisi 1 item +List_1_Item = ['satuItem'] + +# membuat list dengan banyak item dengan satu tipe data +ListKata = ["mangga", "jambu", "apel", "anggur "] +listAngka = [23, 11, 94] + +# membuat list dengan berbagai tipe data +ListCampuran = [23, "Novemver", 94] + +# Membuat list berisi list ( bercabang) +ListNasted = ["Mahasiswa", ["Dian", 17, 160.5],"Lulus"] +ListGabugan = [ListKata, listAngka] + +# mencetak hasil +#print (listAngka) +#print (ListKata) +#print (ListCampuran) +#print (ListNasted) +#print (ListGabugan) + +# Mencetak indeks dari list +#print (ListNasted[0]) +#print (ListNasted[1]) +#print (ListNasted[1][0]) +#print (ListNasted[1][1]) +#print (ListNasted[1][2]) +#print (ListNasted[2]) + +# Membuat list kosong +ListKosong = [] + +kata = "WORKSHOP" +angka = 12345678 +print (kata[5]) +print (angka[5]) \ No newline at end of file diff --git a/Acara-11/slising_list.py b/Acara-11/slising_list.py new file mode 100755 index 0000000..129c12c --- /dev/null +++ b/Acara-11/slising_list.py @@ -0,0 +1,25 @@ +list_kata = ["mangga", "jambu", "apel", "anggur"] + +#mengubah indeks ke 1 pada list_kata +print ("Sebelum diubah:") +list_kata[1] = "rambutan" +print (list_kata) + +# menambah list pada liat_kata tapi tidak disimpan +print ('List juga bisa ditambahkan :') +print (list_kata + ["delima", "melon", "pear"]) + +# menambah list pada list_kata dan disimpan +print ('List juga bisa ditambahkan dan disimpan :') +list_kata += ["delima", "melon", "pear"] +print (list_kata) + +# mengali list pada list_kata +print ('List juga bisa dikali :') +print (list_kata * 2) + +# memeriksa item pada list +print ('mangga' in list_kata) +print ('salah' not in list_kata) +if "melon" in list_kata: + print ("Ada melon") \ No newline at end of file diff --git a/Acara-12/NastedTuple.py b/Acara-12/NastedTuple.py new file mode 100755 index 0000000..13057a7 --- /dev/null +++ b/Acara-12/NastedTuple.py @@ -0,0 +1,11 @@ +tuple1 = (1,2,3) +tuple2 = ('satu', 'dua', 'tiga') +tuple3 = ('andi', 23,68.5) +tuple4 = (tuple1, tuple2, tuple3) + +print (tuple1) +print (tuple2) +print (tuple3) +print (tuple4) +print (tuple4[1][2]) +print (tuple4[2][0]) \ No newline at end of file diff --git a/Acara-12/PengulanganTuple.py b/Acara-12/PengulanganTuple.py new file mode 100755 index 0000000..9f0553a --- /dev/null +++ b/Acara-12/PengulanganTuple.py @@ -0,0 +1,4 @@ +tupleBulan = ('Januari', 'Februari', 'Maret', 'April', 'Mei', 'Juni') +for month in tupleBulan: + print (month) + \ No newline at end of file diff --git a/Acara-12/SequenceUnpacking.py b/Acara-12/SequenceUnpacking.py new file mode 100755 index 0000000..2f72d3d --- /dev/null +++ b/Acara-12/SequenceUnpacking.py @@ -0,0 +1,13 @@ +def finchion1(): + tuple1 = (1, 2, 3) + tuple2 = ('satu', 'dua', 'tiga') + tuple3 = ('andi', 23, 68.5) + tuple4 = (tuple1, tuple2, tuple3) + + nama, usia, berat = tuple3 + + print ('nama : ', nama) + print ('usia : ', usia) + print ('berat : ', berat) + +finchion1() \ No newline at end of file diff --git a/Acara-12/slicing.py b/Acara-12/slicing.py new file mode 100755 index 0000000..b9ea2aa --- /dev/null +++ b/Acara-12/slicing.py @@ -0,0 +1,16 @@ +tupleAngka = 1,2,3,4,5,6,7,8,9,10 + +#slicing tuple +print (tupleAngka[0:3]) +print (tupleAngka[1:-1]) # memotong indeks ke 1 hinga -1 +print (tupleAngka[-1:1]) +print ('\n') + +#slicing tanpa batas +print (tupleAngka[2:]) +print (tupleAngka[5:]) +print (tupleAngka[8:]) +print (tupleAngka[:0]) +print (tupleAngka[:1]) +print (tupleAngka[:3]) +print (tupleAngka[:5]) \ No newline at end of file diff --git a/Acara-12/slicing3.py b/Acara-12/slicing3.py new file mode 100755 index 0000000..b3ff5aa --- /dev/null +++ b/Acara-12/slicing3.py @@ -0,0 +1,8 @@ +tupleAngka = 1,2,3,4,5,6,7,8,9,10 + +#Indeks kelipatan +#dari awal sampai khir dengan kelipatan indeks 2 langkah +print (tupleAngka[::2]) + +#dari indeks 1 hingga ke-8 dengan kelipatan indeks 3 langkah +print (tupleAngka[1:8:3]) diff --git a/Acara-12/slicing4.py b/Acara-12/slicing4.py new file mode 100755 index 0000000..0204242 --- /dev/null +++ b/Acara-12/slicing4.py @@ -0,0 +1,4 @@ +tupleAngka = 1,2,3,4,5,6,7,8,9,10 + +#mencoba mengubah tuple indeks ke 0 dari angka 1 menjadi angka 0 +tupleAngka[0] = 0 \ No newline at end of file diff --git a/Acara-12/tuple.py b/Acara-12/tuple.py new file mode 100755 index 0000000..35c417a --- /dev/null +++ b/Acara-12/tuple.py @@ -0,0 +1,23 @@ +tupleKosong = () +tupleSingleton = ('satu',) +tupleSingleton2 = (1,) +tupleSingleton3 = 'satu', +tupleBulan = ('Januari', 'Februari', 'Maret', 'April', 'Mei', 'Juni') + +#dibuat tanpa kurung +tupleAngka = 1,2,3,4,5,6,7,8,9,10 + +print (tupleKosong) +print (tupleSingleton) +print (tupleSingleton2) +print (tupleSingleton3) +print (tupleBulan) +print (tupleAngka) +print ('\n') + +#cek tipe data + +print (type(tupleSingleton)) +print (type(tupleSingleton2)) +print (type(tupleSingleton3)) +print (type(tupleAngka)) \ No newline at end of file diff --git a/Acara-12/tuple2.py b/Acara-12/tuple2.py new file mode 100755 index 0000000..f1d45c1 --- /dev/null +++ b/Acara-12/tuple2.py @@ -0,0 +1,20 @@ +tupleKosong = () +tupleSingleton = ('satu',) +tupleSingleton2 = (1,) +tupleSingleton3 = 'satu', +tupleBulan = ('Januari', 'Februari', 'Maret', 'April', 'Mei', 'Juni') + +#dibuat tanpa kurung +tupleAngka = 1,2,3,4,5,6,7,8,9,10 + +# menggabungkan 2 tuple menjadi 1 +tupleGab = tupleSingleton3 + tupleAngka +print (tupleGab) + +#mengakses data tuple +print (tupleBulan[0]) +print (tupleBulan[3]) +print (tupleBulan[5]) +print (tupleAngka[-1]) +print (tupleAngka[-3]) +print (tupleAngka[-5]) \ No newline at end of file diff --git a/Acara-12/tupleFunc.py b/Acara-12/tupleFunc.py new file mode 100755 index 0000000..88fa869 --- /dev/null +++ b/Acara-12/tupleFunc.py @@ -0,0 +1,8 @@ +tuple1 = (1,2,3) +tuple2 = ('satu', 'dua', 'tiga') +tuple3 = ('andi', 23,68.5) +tuple4 = (tuple1, tuple2, tuple3) + +print (max(tuple1)) +print (min(tuple1)) +print (len(tuple1)) \ No newline at end of file diff --git a/Acara-13/difference.py b/Acara-13/difference.py new file mode 100644 index 0000000..bf64062 --- /dev/null +++ b/Acara-13/difference.py @@ -0,0 +1,10 @@ +a = {1,2,3,4,5} +b = {4,5,6,7,8} + +# mencari selisih antara set a dan b menggunakan operator - +print (a - b) + +# menggunakan fungsi difference() +print (a.difference(b)) +# Menggunakan fungsi difference() +print (b.difference(a)) \ No newline at end of file diff --git a/Acara-13/intersection.py b/Acara-13/intersection.py new file mode 100644 index 0000000..ab2dc55 --- /dev/null +++ b/Acara-13/intersection.py @@ -0,0 +1,11 @@ +a = {1,2,3,4,5} +b = {4,5,6,7,8} + +# mencari irisan antara set a dan b menggunakan operator & +print (a & b) + +# menggunakan fungsi intersection() +print (a.intersection(b)) + +# Menggunakan fungsi intersection() +print (b.intersection(a)) \ No newline at end of file diff --git a/Acara-13/komplemen.py b/Acara-13/komplemen.py new file mode 100644 index 0000000..c569b43 --- /dev/null +++ b/Acara-13/komplemen.py @@ -0,0 +1,8 @@ +a = {1,2,3,4,5} +b = {4,5,6,7,8} + +print (a^b) +print (a.symmetric_difference(b)) + +print (b^a) +print (b.symmetric_difference(a)) \ No newline at end of file diff --git a/Acara-13/nasted.py b/Acara-13/nasted.py new file mode 100644 index 0000000..efd0c82 --- /dev/null +++ b/Acara-13/nasted.py @@ -0,0 +1,7 @@ +# Membuat nested set +nested_set = {10, 'SMK', ('RPL', 'TKJ', 'MM'), (1, 2)} +print(nested_set) + +# Mengakses elemen dalam nested set +for item in nested_set: + print(item) diff --git a/Acara-13/set1.py b/Acara-13/set1.py new file mode 100644 index 0000000..f1ac870 --- /dev/null +++ b/Acara-13/set1.py @@ -0,0 +1,23 @@ +# kurung kurawal +setNomor = {1, 2, 3, 4, 5} +print (setNomor) + +#dengan fungsi set() +setString = set (('senin', 'selasa', 'rabu', 'kamis', 'Jumat')) +print (setString) + +#set kosong dengan fungsi set dan bukan kurawal +setKosong = set([]) +print (setKosong) + +#tidak dapat berisi item yang duplikat +SetDuplicate = {1, 2, 3, 3, 4, 4, 5} +print (SetDuplicate) + +# dengan tipe data yang berbeda +setMix = {1.5,2.5,3.5,'coba', (4,5,6)} +print (setMix) + +# list tidak bisa menjadi aggota set karena list bersifat mutable +setList = {1.5, 2.5, 3.5, 'coba', [4, 5, 6]} +print (setList) \ No newline at end of file diff --git a/Acara-13/set2.py b/Acara-13/set2.py new file mode 100644 index 0000000..9161d5c --- /dev/null +++ b/Acara-13/set2.py @@ -0,0 +1,27 @@ +#buat set baru +numSet = {1, 2, 3} +print (numSet) + +#menambah item ke set +numSet.add(4) +print (numSet) + +# menguodate item pada set tidak akan update jika item sudah ada +numSet.update([5, 1, 6, 2, 7]) +print (numSet) + +# menghapus item pada set +numSet.discard(6) #akan error jika item tidak ada +print (numSet) +numSet.remove(7) #akan error jika item tidak ada +print (numSet) + +# menghapus item set sebelah kiri dengan pop() +numSet.pop() #akan error jika set kosong +print (numSet) +print (numSet.pop()) +print (numSet) + +#mengosongkan set +numSet.clear() +print (numSet) \ No newline at end of file diff --git a/Acara-13/task.py b/Acara-13/task.py new file mode 100644 index 0000000..49216c2 --- /dev/null +++ b/Acara-13/task.py @@ -0,0 +1,11 @@ +# 1. buat sebuah set, tampilkan isinya satu persatu + +prodi_ti = ["MIF","MIF", "TKK", "TRK"] +print (prodi_ti) + +# menampilkan isi prodi_ti satu persatu +set_prodi_ti = set(prodi_ti) +print (set_prodi_ti) +for prodi in set_prodi_ti: + print (prodi) + diff --git a/Acara-13/task2.py b/Acara-13/task2.py new file mode 100644 index 0000000..7429e05 --- /dev/null +++ b/Acara-13/task2.py @@ -0,0 +1,29 @@ +# 2. Buat sebuah nasted set, dan tampilkan isinya satu per satu + +jurusan = ("Teknik", "Teknologi Informasi", "Kesehatan") + +prodi = ("Management informasi kesehatan", "Teknik Komputer", "Teknik Energi Terbarukan") + +# mengjonversikan tuple menjadi frozenset agar bisa dimasukkan ke dalam set lain +jurusan_set = frozenset(jurusan) +prodi_set = frozenset(prodi) +# membuat nested set + +data_kampus = { + "Jurusan", + jurusan_set, + prodi_set, + "Prodi" # Elemen string tambahan +} + +for elemen in data_kampus: + # Mengecek apakah elemen adalah frozenset (sub-koleksi) + if isinstance(elemen, frozenset): + print(f"\n--- List (Frozenset) ---") + for item in elemen: + print(f" -> {item}") # Menampilkan isi frozenset + print("-" * 30) + else: + # Elemen biasa (string) + print(f"Tipe Data: {elemen}") + diff --git a/Acara-13/union.py b/Acara-13/union.py new file mode 100644 index 0000000..32cf96f --- /dev/null +++ b/Acara-13/union.py @@ -0,0 +1,11 @@ +a = {1,2,3,4,5} +b = {4,5,6,7,8} + +#mencari gabungan antara set a dan b menggunakan operator | +print (a|b) + +# menggunakan fungsi union() +print (a.union(b)) + +#Menggunakan fungsi unioon() +print (b.union(a)) \ No newline at end of file diff --git a/Acara-14/Dictionary/1.py b/Acara-14/Dictionary/1.py new file mode 100755 index 0000000..c82a9f1 --- /dev/null +++ b/Acara-14/Dictionary/1.py @@ -0,0 +1,4 @@ +identitas1 = {"nama": "andi", "umur": "17 Tahun", "gender": "L"} +identitas2 = {"nama": "bila", "umur": "16 Tahun", "gender": "P"} +print(identitas1) +print(identitas2) diff --git a/Acara-14/Dictionary/1a.py b/Acara-14/Dictionary/1a.py new file mode 100644 index 0000000..defdc4c --- /dev/null +++ b/Acara-14/Dictionary/1a.py @@ -0,0 +1,2 @@ +identitas1 = {"nama": "andi", "umur": "17 Tahun", "gender": "L"} +identitas2 = {"nama": "bila", "umur": "16 Tahun", "gender": "P"} diff --git a/Acara-14/Dictionary/2.py b/Acara-14/Dictionary/2.py new file mode 100755 index 0000000..5f4e79a --- /dev/null +++ b/Acara-14/Dictionary/2.py @@ -0,0 +1,65 @@ +mahasiswa = { + "nama": "Budi", + "umur": 20, + "Gender": "L", + "menikah": False, + "hobi": ["membaca", "bermain"], + "kuliah" : { + "jurusan": "Jurusan teknologi informasi", + "prodi": "D3 Teknik Komputer" + } +} + +for key in sorted(mahasiswa): + print('%s: %s' % (key, mahasiswa[key])) + +# print('Jumlah key pada variable siswa :', len(mahasiswa)) + +# print('Apakah dictionary mahasiswa memiliki key nama?') +# print('nama' in mahasiswa) + +# print('\nApakah variable siswa TIDAK memiliki key status?') +# print('status' not in mahasiswa) + + +# # menghaus item +# del mahasiswa ['nama'] +# print('Nama Mahasiswa:', mahasiswa.get("nama")) + +# # menghapus menggunakan pop +# mahasiswa.pop ('umur') +# print('Umur Mahasiswa:', mahasiswa.get("umur")) + +# # menampilkan nilai kembalian data yang saudah dihapus +# gender = mahasiswa.pop('Gender') +# print('jenis kelamin mahasiswa:', gender) + +# # mencetak key alamat sekaligus cek +# print('Alamat:', mahasiswa.get("alamat")) + +# # menambahkan key alamat ke dalam dict mahasiswa +# mahasiswa["alamat"] = "jember" + +# # mencetak hasil +# print('Mahasiswa {} beralamat di {}'.format( +# mahasiswa.get('nama'), +# mahasiswa.get('alamat') +# )) + +# # mengubah nilai item +# print('Nama Awal:', mahasiswa.get("nama")) +# mahasiswa["nama"] = "Budi Santoso" +# print('Nama Setelah Diubah:', mahasiswa.get("nama")) + +# #mengakses item pada dictionary +# #menggunakan get() +# print('Nama Mahasiswa:', mahasiswa.get("nama")) + +# # menggunakan kurung siku [] +# print ('Umur Mahasiswa:', mahasiswa["umur"]) + +# # menggunakan fungsi berantai untuk dictionary bertingkat +# print('Jurusan Mahasiswa:', mahasiswa.get("kuliah").get("jurusan")) + +# # menggunakan kurung siku di kedua dua nya +# print('Prodi Mahasiswa:', mahasiswa["kuliah"]["prodi"]) \ No newline at end of file diff --git a/Acara-15/__pycache__/a.cpython-313.pyc b/Acara-15/__pycache__/a.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b04fc3091ca1d5980364355a2ecc9e041f58980c GIT binary patch literal 366 zcmey&%ge<81X}BUWb6gfk3k$5V1_b2O92^E8G;$47>XET7?c=-8BG}>ataLTOq$He zP##zeqziiw$!HGGExdExUNu}9|#UMQjx5D&u zQ&Tb%^*vl%^s8MQLmU-?UA;qnYV`wBi?T~|G7~cr^YncaOMq+zpw6QF^rFPv#5@I; z#Nxyv{Q@LKj>(BdiMocS`iXi4mA6 i: + print(nama[i], end=' ') + i += 1 +# mengisi masing masing parameter dengan tipe data string +saam('Aldo', 'Budi', 'Cici') +saam('Doni', 'Eka', 'Fani', 'Gina') \ No newline at end of file diff --git a/Acara-15/c.py b/Acara-15/c.py new file mode 100644 index 0000000..7a4b719 --- /dev/null +++ b/Acara-15/c.py @@ -0,0 +1,7 @@ +def salam(**person): + print('Halo', person['NamaDepan'], person['NamaBelakang']) + +salam(NamaDepan='Aldo', NamaBelakang='Siregar') +salam(NamaBelakang='Budi', NamaDepan='Santoso') +salam(NamaDepan='Budi', NamaBelakang='Santoso', usia=20) +salam(NamaDepan='Budi') diff --git a/Acara-15/d.py b/Acara-15/d.py new file mode 100644 index 0000000..e3a3d8d --- /dev/null +++ b/Acara-15/d.py @@ -0,0 +1,5 @@ +def perkalian(a, b): + hasil = int(a) * int(b) + return hasil + +print('hasil perkalian dari 3 dan 5 adalah', perkalian(3, 5)) \ No newline at end of file diff --git a/Acara-15/e.py b/Acara-15/e.py new file mode 100644 index 0000000..32d0d02 --- /dev/null +++ b/Acara-15/e.py @@ -0,0 +1,18 @@ +# variable global +nama = "Desca Rizki Febriant" +golongan = "B" + +def sebut(): + # variable local + nama = "Bara" + golongan = "A" + # mengakses variable lokal + print ('Nama: %s' % nama) + print ('Golongan: %s' % golongan) + +# mengakses variable global +print ('Nama: %s' % nama) +print ('Golongan: %s' % golongan) + +# memanggil fungsi sebut +sebut() \ No newline at end of file diff --git a/Acara-16/calc1.py b/Acara-16/calc1.py new file mode 100644 index 0000000..083c8af --- /dev/null +++ b/Acara-16/calc1.py @@ -0,0 +1,62 @@ +def tambah(x, y): + return x + y + + +def kurang(x, y): + return x - y + + +def kali(x, y): + return x * y + + +def bagi(x, y): + return x / y + + +print("Pilih operasi Kalkulasi") +print("1. Penjumlahan") +print("2. Pengurangan") +print("3. Perkalian") +print("4. Pembagian") + +pilih = input("Masukkan pilihan (1/2/3/4): ") +num1 = int(input("Masukkan bilangan pertama: ")) +num2 = int(input("Masukkan bilangan kedua: ")) + +if pilih == "1": + print(num1, "+", num2, "=", tambah(num1, num2)) + +elif pilih == "2": + print(num1, "-", num2, "=", kurang(num1, num2)) + +elif pilih == "3": + print(num1, "*", num2, "=", kali(num1, num2)) + +elif pilih == "4": + print(num1, "/", num2, "=", bagi(num1, num2)) + +else: + print("Pilihan tidak valid") + + +# pilihan = input("Masukkan pilihan (1/2/3/4): ") + +# if pilihan == "1": +# num1 = float(input("Masukkan bilangan pertama: ")) +# num2 = float(input("Masukkan bilangan kedua: ")) +# print("Hasil penjumlahan:", tambah(num1, num2)) +# elif pilihan == "2": +# num1 = float(input("Masukkan bilangan pertama: ")) +# num2 = float(input("Masukkan bilangan kedua: ")) +# print("Hasil pengurangan:", kurang(num1, num2)) +# elif pilihan == "3": +# num1 = float(input("Masukkan bilangan pertama: ")) +# num2 = float(input("Masukkan bilangan kedua: ")) +# print("Hasil perkalian:", kali(num1, num2)) +# elif pilihan == "4": +# num1 = float(input("Masukkan bilangan pertama: ")) +# num2 = float(input("Masukkan bilangan kedua: ")) +# print("Hasil pembagian:", bagi(num1, num2)) +# else: +# print("Pilihan tidak valid") diff --git a/Acara-16/calc2.py b/Acara-16/calc2.py new file mode 100644 index 0000000..de6805a --- /dev/null +++ b/Acara-16/calc2.py @@ -0,0 +1,63 @@ +def tambah(x, y): + return x + y + + +def kurang(x, y): + return x - y + + +def kali(x, y): + return x * y + + +def bagi(x, y): + return x / y + + +def input_angka(pesan): + while True: + try: + return float(input(pesan)) + except ValueError: + print("Input bukan angka, coba lagi.") + + +def input_pilihan(): + while True: + pilih = input("Masukkan pilihan (1/2/3/4: ").strip() + if pilih.isdigit() and pilih in {"0", "1", "2", "3", "4"}: + return int(pilih) + print("Input bukan angka atau tidak valid, coba lagi.") + + +def tampil_menu(): + print("==============================================") + print("WORKSHOP PEMROGRAMAN DASAR") + print("Selamat Datang di Program Kalkulator Sederhana") + print("==============================================") + print("Silahkan Pilih Opsi Operasi kalkulator") + print("1. Penjumlahan") + print("2. Pengurangan") + print("3. Perkalian") + print("4. Pembagian") + + +while True: + tampil_menu() + + pilih = input_pilihan() + + num1 = input_angka("Masukkan bilangan pertama: ") + num2 = input_angka("Masukkan bilangan kedua: ") + + if pilih == "1": + print(num1, "+", num2, "=", tambah(num1, num2)) + elif pilih == "2": + print(num1, "-", num2, "=", kurang(num1, num2)) + elif pilih == "3": + print(num1, "*", num2, "=", kali(num1, num2)) + elif pilih == "4": + print(num1, "/", num2, "=", bagi(num1, num2)) + + input("Tekan Enter untuk kembali ke menu...") + print() diff --git a/Acara-16/temp.py b/Acara-16/temp.py new file mode 100644 index 0000000..d999e52 --- /dev/null +++ b/Acara-16/temp.py @@ -0,0 +1,141 @@ +def TampilkanSuhu(): + print("==================================================") + print("WORKSHOP PEMROGRAMAN DASAR") + print("Selamat Datang di Program Konversi Suhu Sederhana") + print("==================================================") + print("1. Celcius") + print("2. Fahrenheit") + print("3. Kelvin") + print("4. Reamur") + print("Silahkan Pilih Satuan Mana yang akan di Konversi") + +def subTampilanSuhu(): + print('Suhu') +def input_angka(pesan): + while True: + try: + return float(input(pesan)) + except ValueError: + print("Input bukan angka, coba lagi.") + + +def input_pilihan(): + while True: + pilih = input("Masukkan pilihan (1/2/3/4: ").strip() + if pilih.isdigit() and pilih in {"0", "1", "2", "3", "4"}: + return int(pilih) + print("Input bukan angka atau tidak valid, coba lagi.") + + +# def konversiSuhu(suhu): +# drjt = int(suhu[:-1]) +# inputan = suhu[-1] + +# if inputan.upper() == "C": +# hasil1 = float((9 * drjt) / 5 + 32) +# hasil2 = float(drjt + 273.15) +# hasil3 = float(4 / 5 * drjt) +# jenisX = "Celcius" +# jenis1 = "Fahrenheit" +# jenis2 = "Kelvin" +# jenis3 = "Reamur" +# print(f"{drjt} {jenisX}, ={hasil1:.1f} {jenis1}") +# print(f"{drjt} {jenisX}, ={hasil2:.1f} {jenis2}") +# print(f"{drjt} {jenisX}, ={hasil3:.1f} {jenis3}") + +# elif inputan.upper() == "F": +# hasil1 = float((drjt - 32) * 5 / 9) +# hasil2 = float(((drjt - 32) * 5 / 9) + 273.15) +# hasil3 = float(4 / 9 * (drjt - 32)) +# jenisX = "Fahrenheit" +# jenis1 = "Celcius" +# jenis2 = "Kelvin" +# jenis3 = "Reamur" +# print(f"{drjt} {jenisX}, ={hasil1:.1f} {jenis1}") +# print(f"{drjt} {jenisX}, ={hasil2:.1f} {jenis2}") +# print(f"{drjt} {jenisX}, ={hasil3:.1f} {jenis3}") + +# elif inputan.upper() == "K": +# hasil1 = float(drjt - 273.15) +# hasil2 = float((drjt - 273.15) * 9 / 5 + 32) +# hasil3 = float(4 / 5 * (drjt - 273)) +# jenisX = "Kelvin" +# jenis1 = "Celcius" +# jenis2 = "Fahrenheit" +# jenis3 = "Reamur" +# print(f"{drjt} {jenisX}, ={hasil1:.1f} {jenis1}") +# print(f"{drjt} {jenisX}, ={hasil2:.1f} {jenis2}") +# print(f"{drjt} {jenisX}, ={hasil3:.1f} {jenis3}") + +# elif inputan.upper() == "R": +# hasil1 = float((5 / 4) * drjt) +# hasil2 = float((9 / 4 * drjt) + 32) +# hasil3 = float((5 / 4 * drjt) + 273) +# jenisX = "Reamur" +# jenis1 = "Celcius" +# jenis2 = "Fahrenheit" +# jenis3 = "Kelvin" +# print(f"{drjt} {jenisX}, ={hasil1:.1f} {jenis1}") +# print(f"{drjt} {jenisX}, ={hasil2:.1f} {jenis2}") +# print(f"{drjt} {jenisX}, ={hasil3:.1f} {jenis3}") + +# else: +# print("Maaf, inputan tidak sesuai. Sesuaikan inputan dengan kriteria yang ada") + + +def suhuCelcius(drjt): + hasil1 = float(drjt - 273.15) + hasil2 = float((drjt - 273.15) * 9 / 5 + 32) + hasil3 = float(4 / 5 * (drjt - 273)) + jenisX = "Celcius" + jenis1 = "Kelvin" + jenis2 = "Fahrenheit" + jenis3 = "Reamur" + print(f"{drjt} {jenisX}, ={hasil1:.1f} {jenis1}") + print(f"{drjt} {jenisX}, ={hasil2:.1f} {jenis2}") + print(f"{drjt} {jenisX}, ={hasil3:.1f} {jenis3}") + + +def suhuFahrenheit(drjt): + hasil1 = float((drjt - 32) * 5 / 9 + 273.15) + hasil2 = float((drjt - 32) * 5 / 9) + hasil3 = float((drjt - 32) * 4 / 9) + jenisX = "Fahrenheit" + jenis1 = "Kelvin" + jenis2 = "Celcius" + jenis3 = "Reamur" + print(f"{drjt} {jenisX}, ={hasil1:.1f} {jenis1}") + print(f"{drjt} {jenisX}, ={hasil2:.1f} {jenis2}") + print(f"{drjt} {jenisX}, ={hasil3:.1f} {jenis3}") + + +def suhuKelvin(drjt): + hasil1 = float(drjt - 273.15) + hasil2 = float((drjt - 273.15) * 9 / 5 + 32) + hasil3 = float(4 / 5 * (drjt - 273)) + jenisX = "Kelvin" + jenis1 = "Celcius" + jenis2 = "Fahrenheit" + jenis3 = "Reamur" + print(f"{drjt} {jenisX}, ={hasil1:.1f} {jenis1}") + print(f"{drjt} {jenisX}, ={hasil2:.1f} {jenis2}") + print(f"{drjt} {jenisX}, ={hasil3:.1f} {jenis3}") + + +def suhuReamur(drjt): + hasil1 = float(drjt * 5 / 4 + 273.15) + hasil2 = float(drjt * 9 / 4 + 32) + hasil3 = float(drjt * 9 / 10) + jenisX = "Reamur" + jenis1 = "Kelvin" + jenis2 = "Fahrenheit" + jenis3 = "Celcius" + print(f"{drjt} {jenisX}, ={hasil1:.1f} {jenis1}") + print(f"{drjt} {jenisX}, ={hasil2:.1f} {jenis2}") + print(f"{drjt} {jenisX}, ={hasil3:.1f} {jenis3}") + + +while True: + TampilkanSuhu() + + pilih = input_pilihan() diff --git a/Acara-16/temp2.py b/Acara-16/temp2.py new file mode 100644 index 0000000..9f5864a --- /dev/null +++ b/Acara-16/temp2.py @@ -0,0 +1,75 @@ +def konversiSuhu(suhu): + drjt = int(suhu[:-1]) + inputan = suhu[-1] + + if inputan.upper() == "C": + hasil1 = float((9 * drjt) / 5 + 32) + hasil2 = float(drjt + 273.15) + hasil3 = float(4 / 5 * drjt) + jenisX = "Celcius" + jenis1 = "Fahrenheit" + jenis2 = "Kelvin" + jenis3 = "Reamur" + print(f"{drjt} {jenisX}, ={hasil1:.1f} {jenis1}") + print(f"{drjt} {jenisX}, ={hasil2:.1f} {jenis2}") + print(f"{drjt} {jenisX}, ={hasil3:.1f} {jenis3}") + + elif inputan.upper() == "F": + hasil1 = float((drjt - 32) * 5 / 9) + hasil2 = float(((drjt - 32) * 5 / 9) + 273.15) + hasil3 = float(4 / 9 * (drjt - 32)) + jenisX = "Fahrenheit" + jenis1 = "Celcius" + jenis2 = "Kelvin" + jenis3 = "Reamur" + print(f"{drjt} {jenisX}, ={hasil1:.1f} {jenis1}") + print(f"{drjt} {jenisX}, ={hasil2:.1f} {jenis2}") + print(f"{drjt} {jenisX}, ={hasil3:.1f} {jenis3}") + + elif inputan.upper() == "K": + hasil1 = float(drjt - 273.15) + hasil2 = float((drjt - 273.15) * 9 / 5 + 32) + hasil3 = float(4 / 5 * (drjt - 273)) + jenisX = "Kelvin" + jenis1 = "Celcius" + jenis2 = "Fahrenheit" + jenis3 = "Reamur" + print(f"{drjt} {jenisX}, ={hasil1:.1f} {jenis1}") + print(f"{drjt} {jenisX}, ={hasil2:.1f} {jenis2}") + print(f"{drjt} {jenisX}, ={hasil3:.1f} {jenis3}") + + elif inputan.upper() == "R": + hasil1 = float((5 / 4) * drjt) + hasil2 = float((9 / 4 * drjt) + 32) + hasil3 = float((5 / 4 * drjt) + 273) + jenisX = "Reamur" + jenis1 = "Celcius" + jenis2 = "Fahrenheit" + jenis3 = "Kelvin" + print(f"{drjt} {jenisX}, ={hasil1:.1f} {jenis1}") + print(f"{drjt} {jenisX}, ={hasil2:.1f} {jenis2}") + print(f"{drjt} {jenisX}, ={hasil3:.1f} {jenis3}") + + else: + print("Maaf, inputan tidak sesuai. Sesuaikan inputan dengan kriteria yang ada") + + +# --- Bagian Program Utama --- + +i = 0 +print("=========================================") +print("WORKSHOP PEMROGRAMAN DASAR") +print("Selamat Datang di Program Konversi Suhu Sederhana") +print("=========================================") + +while i == 0: + temp = input( + "\nSilahkan masukkan suhu, diikuti satuan suhu (Misal: 0C, 200F, 273K, 60R = " + ) + konversiSuhu(temp) + + lagi = input("Hitung lagi? (1=ya & 0=tidak) = ") + if lagi == "1": + i = 0 + elif lagi == "0": + i = 1 diff --git a/Acara-16/temp3.py b/Acara-16/temp3.py new file mode 100644 index 0000000..ed79017 --- /dev/null +++ b/Acara-16/temp3.py @@ -0,0 +1,161 @@ +def input_angka(pesan): + while True: + try: + return float(input(pesan)) + except ValueError: + print("Input bukan angka, coba lagi.") + + +def input_pilihan(valid_opsi, pesan="Pilih: "): + valid_opsi = {str(o) for o in valid_opsi} + while True: + s = input(pesan).strip() + if s in valid_opsi: + return int(s) + print(f"Input tidak valid. Pilihan yang tersedia: {sorted(valid_opsi)}") + + +# ================= +# NOTE : +# c = Celcius +# k = Kelvin +# f = Fahrenheit +# r = Reamur +# ================= + + +def to_c_from_f(f): + return (f - 32) * 5 / 9 + + +def to_c_from_r(r): + return r * 5 / 4 + + +def to_c_from_k(k): + return k - 273.15 + + +def from_c_to_f(c): + return c * 9 / 5 + 32 + + +def from_c_to_r(c): + return c * 4 / 5 + + +def from_c_to_k(c): + return c + 273.15 + + +def konversi_suhu(): + print("==============================================") + print("WORKSHOP PEMROGRAMAN DASAR") + print("Selamat Datang di Program Konversi Suhu Sederhana") + print("==============================================") + print("1. Celcius") + print("2. Reamur") + print("3. Fahrenheit") + print("4. Kelvin") + + pilih = input_pilihan( + {1, 2, 3, 4}, "Masukkan satuan yang akan dikonversi (1/2/3/4): " + ) + + # Menaruh label + label = {1: "Celcius", 2: "Reamur", 3: "Fahrenheit", 4: "Kelvin"}[pilih] + print(f"\n=={label}==") + + if pilih == 1: # pilihan ke 1 + c = input_angka("Suhu Celcius = ") + print("\nMau diubah ke satuan suhu yang mana ?") + print("1. Reamur") + print("2. Fahrenheit") + print("3. Kelvin") + tujuan = input_pilihan({1, 2, 3}, "Pilih = ") + if tujuan == 1: + hasil = from_c_to_r(c) + tujuan = "reamur" + elif tujuan == 2: + hasil = from_c_to_f(c) + tujuan = "fahrenheit" + else: + hasil = from_c_to_k(c) + tujuan = "kelvin" + + elif pilih == 2: # pilihan ke 2 + r = input_angka("Suhu Reamur = ") + c = to_c_from_r(r) + print("\nMau diubah ke satuan suhu yang mana ?") + print("1. Celcius") + print("2. Fahrenheit") + print("3. Kelvin") + tujuan = input_pilihan({1, 2, 3}, "Pilih = ") + if tujuan == 1: + hasil = c + tujuan = "celcius" + elif tujuan == 2: + hasil = from_c_to_f(c) + tujuan = "fahrenheit" + else: + hasil = from_c_to_k(c) + tujuan = "kelvin" + + elif pilih == 3: # pilihan ke 3 + f = input_angka("Suhu Fahrenheit = ") + c = to_c_from_f(f) + print("\nMau diubah ke satuan suhu yang mana ?") + print("1. Celcius") + print("2. Reamur") + print("3. Kelvin") + tujuan = input_pilihan({1, 2, 3}, "Pilih = ") + if tujuan == 1: + hasil = c + tujuan = "celcius" + elif tujuan == 2: + hasil = from_c_to_r(c) + tujuan = "reamur" + else: + hasil = from_c_to_k(c) + tujuan = "kelvin" + + else: # pilihan ke 4 + k = input_angka("Suhu Kelvin = ") + c = to_c_from_k(k) + print("\nMau diubah ke satuan suhu yang mana ?") + print("1. Celcius") + print("2. Reamur") + print("3. Fahrenheit") + tujuan = input_pilihan({1, 2, 3}, "Pilih = ") + if tujuan == 1: + hasil = c + tujuan = "celcius" + elif tujuan == 2: + hasil = from_c_to_r(c) + tujuan = "reamur" + else: + hasil = from_c_to_f(c) + tujuan = "fahrenheit" + + print(f"\nSuhu {tujuan} = {hasil:.12f}\n") # presisi mirip contoh + + +def MenuUtama(): + print("==============================================") + print("WORKSHOP PEMROGRAMAN DASAR") + print("Selamat Datang di Program Konversi Suhu Sederhana") + print("==============================================") + print("1. Konversi Suhu") + print("2. Keluar") + + +while True: + MenuUtama() + + m = input_pilihan({1, 2}, "Pilih menu (1/2): ") + if m == 1: + konversi_suhu() + elif m == 2: + print("Terima kasih, program selesai.") + break + input("Tekan Enter untuk kembali ke menu...") diff --git a/Acara-21/workSpace/coba.py b/Acara-21/workSpace/coba.py new file mode 100644 index 0000000..0f62384 --- /dev/null +++ b/Acara-21/workSpace/coba.py @@ -0,0 +1 @@ +print('hello') diff --git a/Acara-21/workSpace/led1.py b/Acara-21/workSpace/led1.py new file mode 100644 index 0000000..a213478 --- /dev/null +++ b/Acara-21/workSpace/led1.py @@ -0,0 +1,7 @@ +from machine import Pin +from time import sleep +led=Pin(2,Pin.OUT) + +while True: + led.value(not led.value()) + sleep(0.5) diff --git a/Acara-7/input-output.py b/Acara-7/input-output.py new file mode 100755 index 0000000..b5d137d --- /dev/null +++ b/Acara-7/input-output.py @@ -0,0 +1,22 @@ +# Simple Input and Output in Python + +# Ask the user to enter their name +name = input("Enter your name: ") # input() gets user input as a string + +# Print a greeting message using the input +print("Hello,", name) # print() outputs text to the screen + +# Ask the user to enter their age +age = input("Enter your age: ") + +# Print a message with the user's age +print("You are", age, "years old.") + + +var = int(input("Enter an Number: ")) # Convert input to integer +print("You entered the Number:", var) +flt = float(input("Enter a floating-point number: ")) # Convert input to float +print("You entered the float:", flt) +# Demonstrating formatted output +print("Formatted output: Name: {}, Age: {}, Integer: {}, Float: {:.2f}".format(name, age, var, flt)) +print(f"Formatted output using f-string: Name: {name}, Age: {age}, Integer: {var}, Float: {flt:.2f}") \ No newline at end of file diff --git a/Acara-7/input-output2.py b/Acara-7/input-output2.py new file mode 100755 index 0000000..5d55e58 --- /dev/null +++ b/Acara-7/input-output2.py @@ -0,0 +1,5 @@ +nama = input("Masukkan nama Anda: ") +umur = int(input("Masukkan umur Anda: ")) +tinggi = float(input("Masukkan tinggi badan Anda (dalam cm): ")) + +print ("Halo %s, Umur kamu %i tahun dan tinggi badambu %f cm." % (nama, umur, tinggi)) \ No newline at end of file diff --git a/Acara-7/input-output3.py b/Acara-7/input-output3.py new file mode 100755 index 0000000..b6b7778 --- /dev/null +++ b/Acara-7/input-output3.py @@ -0,0 +1,3 @@ +print (1, 3, 5, 7) +print (1,2,3,4, sep='*') +print (1,2,3,4, sep='#', end='&') \ No newline at end of file diff --git a/Acara-8/Percabangan-1.py b/Acara-8/Percabangan-1.py new file mode 100755 index 0000000..83c0902 --- /dev/null +++ b/Acara-8/Percabangan-1.py @@ -0,0 +1,9 @@ +#if +angka = int(input("Masukkan angka: ")) + +if angka > 5: + print("angka lebih besar dari 5") +elif angka == 5: + print("angka sama dengan 5") +else: + print("angka lebih kecil dari 5") \ No newline at end of file diff --git a/Acara-8/if-elif-else.py b/Acara-8/if-elif-else.py new file mode 100755 index 0000000..b445790 --- /dev/null +++ b/Acara-8/if-elif-else.py @@ -0,0 +1,26 @@ +# angka = int (input("Masukkan angka: ")) + +# if angka > 0: +# print("angka positif") +# elif angka == 0: +# print("angka nol") +# else: +# print("angka negatif") + +hari = input("Masthx infukkan hari (Senin, Selasa, Rabu, Kamis, Jumat, Sabtu, Minggu): ") +if hari == "Senin": + print("Hari ini adalah hari Senin") +elif hari == "Selasa": + print("Hari ini adalah hari Selasa") +elif hari == "Rabu": + print("Hari ini adalah hari Rabu") +elif hari == "Kamis": + print("Hari ini adalah hari Kamis") +elif hari == "Jumat": + print("Hari ini adalah hari Jumat") +elif hari == "Sabtu": + print("Hari ini adalah hari Sabtu") +elif hari == "Minggu": + print("Hari ini adalah hari Minggu") +else: + print("Hari yang Anda masukkan tidak valid") \ No newline at end of file diff --git a/Acara-8/if-else.py b/Acara-8/if-else.py new file mode 100755 index 0000000..6416eb4 --- /dev/null +++ b/Acara-8/if-else.py @@ -0,0 +1,6 @@ +age = int(input("Masukkan umur Anda: ")) + +if age >= 18: + print("Anda sudah dewasa.") +else: + print("Anda masih di bawah umur.") diff --git a/Acara-8/if.py b/Acara-8/if.py new file mode 100755 index 0000000..9418c64 --- /dev/null +++ b/Acara-8/if.py @@ -0,0 +1,10 @@ +angka = 5 + +if (angka > 3): + print("angka lebih besar dari 5") + +if (angka < 10): + print("angka lebih kecil dari 10") + +if (angka == 5): + print("angka sama dengan 5") \ No newline at end of file diff --git a/Acara-8/naste-if.py b/Acara-8/naste-if.py new file mode 100755 index 0000000..2e0fd34 --- /dev/null +++ b/Acara-8/naste-if.py @@ -0,0 +1,18 @@ +try : + age = int(input("Masukkan umur Anda: ")) + + if (age >= 17): + kerja = input("Apakah Anda sudah bekerja atau masih kuliah? (kerja/kuliah): ").lower() + if kerja == "kerja": + print("Selamat! Anda sudah dewasa dan bekerja.") + elif kerja == "kuliah": + print("Anda sudah dewasa dan masih kuliah.") + else: + print("Input tidak valid") + elif (4 < age < 17): + print("Anda masih Seorang siswa.") + else: + print("Anda masih Anak-anak.") + +except: + print("Input tidak valid, masukkan angka saja.") \ No newline at end of file diff --git a/Operator Penugasan.py b/Operator Penugasan.py new file mode 100755 index 0000000..a8de4ee --- /dev/null +++ b/Operator Penugasan.py @@ -0,0 +1,15 @@ +#a =3 +#print("Awal mula a = %d" % a) + +#a += 5 +#print("Nilai setelah ditambah 5:") +#print("a = %d" % a) + +a = 5 +a += 2 +a -= 3 +a *= 10 +a /= 4 +a **= 2 + +print("Nilai a adalah %d" % a) diff --git a/Operator bitwise.py b/Operator bitwise.py new file mode 100755 index 0000000..05365a5 --- /dev/null +++ b/Operator bitwise.py @@ -0,0 +1,9 @@ +a = 0b01 #desimal=1 +b = 0b10 #desimal=2 + +print (a&b) #AND +print (a|b) #OR +print (a^b) #XOR +print (~a) #NOT +print (~b) #NOT + diff --git a/Operator bitwise2.py b/Operator bitwise2.py new file mode 100755 index 0000000..0688a5c --- /dev/null +++ b/Operator bitwise2.py @@ -0,0 +1,26 @@ +a = 4 +b = 5 + +#operasi AND +c = a & b +print ("a & b = %s" % c) + +#operasi OR +c = a | b +print ("a | b = %s" % c) + +#operasi XOR +c = a ^ b +print ("a ^ b = %s" % c) + +#operasi NOT +c = ~a +print ("~a = %s" % c) +c = ~b +print ("~b = %s" % c) + +#operasi geser ke kiri +c = a << b +print ("a << b = %s" % c) +c = b << a +print ("b << a = %s" % c) diff --git a/Struktur Data/Tugas 1/hitung_hutang.py b/Struktur Data/Tugas 1/hitung_hutang.py new file mode 100755 index 0000000..67a794c --- /dev/null +++ b/Struktur Data/Tugas 1/hitung_hutang.py @@ -0,0 +1,23 @@ +def hutang(): + try: + hutang_awal = float(input("Masukkan jumlah hutang awal: ")) + persen_bunga = float(input("Masukkan persentase bunga per hari (contoh: 2 untuk 2%): ")) + hari = int(input("Masukkan jumlah hari: ")) + + # Persentase bunga diubah menjadi desimal lalu dibagi 100 + hutang_akhir = hutang_awal * (1 + (persen_bunga / 100)) ** hari + + # Menampilkan hasil + print(f"\nData yang di input:") + print(f"Hutang awal: Rp {hutang_awal:,.2f}") + print(f"Bunga harian: {persen_bunga}%") + print(f"Jumlah hari: {hari} hari") + print("-" * 30) + print(f"Hutang akhir: Rp {hutang_akhir:,.2f}") + + except ValueError: + print("Input tidak valid. Pastikan memasukkan angka untuk semua nilai.") + +# Menjalankan fungsi utama +if __name__ == "__main__": + hutang() \ No newline at end of file diff --git a/Tugas/Crud.py b/Tugas/Crud.py new file mode 100644 index 0000000..1ebe6da --- /dev/null +++ b/Tugas/Crud.py @@ -0,0 +1,118 @@ +# Variabel global untuk menyimpan data +# menggunakan list (daftar) dari dictionary + +data_mahasiswa = [] + + +def tampilkan_data(): + print("\n--- Daftar Data Tersimpan ---") + if not data_mahasiswa: + print("Belum ada data yang tersimpan.") + else: + # Menampilkan data sesuai format + for i, data in enumerate(data_mahasiswa, start=1): + print(f"{i}. {data['nama']}, {data['alamat']}") + print("-----------------------------") + + +def tambah_data(): + # Fungsi untuk menu 1: Tambah data + + print("\n--- Menu 1: Tambah Data ---") + nama = input("Masukkan data nama: ") + alamat = input("Masukkan data alamat: ") + + # Simpan data ke dalam list + data_mahasiswa.append({"nama": nama, "alamat": alamat}) + + print("\nData baru berhasil ditambahkan!") + + +def ubah_data(): + print("\n--- Menu 2: Ubah Data ---") + + tampilkan_data() + + if not data_mahasiswa: + print("Data kosong, tidak ada yang bisa diubah.") + return # Kembali ke menu utama + + try: + # Meminta input nomor data yang akan diubah + pilihan_str = input("Pilih data yang akan dirubah : ") + pilihan = int(pilihan_str) + + # Konversi ke index list + index = pilihan - 1 + + # Apakah nomor yang dipilih ada di dalam list? + if 0 <= index < len(data_mahasiswa): + # Langkah 2: Meminta input data baru + print( + f"Anda akan mengubah data ke-{pilihan}: {data_mahasiswa[index]['nama']}" + ) + nama_baru = input("Masukkan nama baru: ") + alamat_baru = input("Masukkan alamat baru: ") + + # Proses perubahan data + data_mahasiswa[index] = {"nama": nama_baru, "alamat": alamat_baru} + print("\nData berhasil diubah!") + else: + print("Nomor data invalid.") + + except ValueError: + print("Input Invalid. Masukkan Angka.") + + +def hapus_data(): + print("\n--- Menu 3: Hapus Data ---") + + tampilkan_data() + + if not data_mahasiswa: + print("Data kosong, tidak ada yang bisa dihapus.") + return # Kembali ke menu utama + + try: + pilihan_str = input("Pilih data no data yang akan dihapus : ") + pilihan = int(pilihan_str) + + # Mengkonversi indeks + index = pilihan - 1 + + # Apakah nomor yang dipilih ada di dalam list? + if 0 <= index < len(data_mahasiswa): + # Menghaops data dari list + data_yang_dihapus = data_mahasiswa.pop(index) + print(f"\nData '{data_yang_dihapus['nama']}' berhasil dihapus.") + else: + print("Nomor data invalid.") + + except ValueError: + print("Input Invalid. Masukkan Angka.") + + +def jalankan_program(): + while True: + print("\nMenu") + print("1. Tambah data") + print("2. Ubah data") + print("3. Hapus data") + print("4. Tampil data") + + pilihan = input("Pilihlah no menu diatas: ") + + if pilihan == "1": + tambah_data() + elif pilihan == "2": + ubah_data() + elif pilihan == "3": + hapus_data() + elif pilihan == "4": + tampilkan_data() + input("\nTekan Enter untuk kembali ke menu...") + else: + print("Pilihan invalid. Pilih nomor 1-4.") + + +jalankan_program() diff --git a/Tugas/LDR Sensor.fzz b/Tugas/LDR Sensor.fzz new file mode 100644 index 0000000000000000000000000000000000000000..e39d68e0473bc7005bbc163e13395d02a980ae0d GIT binary patch literal 2496 zcmV;x2|xBwO9KQH00;mG0H>31TW8!O>NE)e07iKL01W^D08B(uAX8;-b8m7kW_s;h z-EyNi7QXMNptQABvlqzvK?1f+rY1>u*X*Wix{{um%M`|n!?pnzChd0KYF=TUY)j(D z#DCbtNo3kw87!p3(a||apFXMo^Y>_Md=u$3OkxjUh=3vDAQ^`7$OFHB`CvNW=d*YH zC>cJCg>jdL*<%=w{wQBS(1jQcAVGwfh?&@e7nde>5H^uX+<*jPD8Sh}!!V5gAo0`T zG{0FqF!H*89eUu)EV=UMBE1$t=EtM4_(%A! ze+$K|E~~sZVm}fd7^K1n{3WUGWfLFLBsv%4Waa?`j6l}+XPAoV`TR=6Bl#_;6nI&z zX>czhKMR8wmTE)ulVGr^VXCe}HQevj`les@c)hR6XO(GPi@PT4ijtui{~8a)cMmYz zp}?5qq=A_BCVrYtdqI+lURqXiI|&B2*(|vo%etrV?r~DsdnL{!O(r7E z=7pm2g24FZj~|2wNL``p$}1bLiaQqM^~-L0JvaF3ea4}*`^B~Lz8Ys|a{Tmr`R}Ly zFO7^vySV`v>iayP2FQ{ssZ@D2pDq@ILiX%eO}bQBum{C@&{$# zH=4tFHHyvan`=Zronu7IjRwI=gXm?^qz9wqAQQ zT)hiP_SE=OM^q`kdb;?vPd}K_!YoWwZIOZv6o*+DbK6<-L5(u?nuV&$BxyTU zqYuZcYP_myL@3r))!nk{ma5*Nu{Hgw^ANJmJJqk)Mo3##|EF83CN9-g)#!*-z0QGX ztZM6Hw^aRx4y0CKU4mT8zgH&@s>G8?^K&z36RQNep;J!j@|IX%^@kQCwaeMEW}5DB zvb?jVcWA3ASJtanyPPU(rs*S2-_%bC+{so%G!0 zjQBPEMpHg~aI(q!o6ip6{MKILl{mN^ucWF^u}X})aX6WX;mxN@4`k^>$+)Y8TA~EW zij4Rn8i=&w1r;@JU<3VrU}nlLXgVqRD40QNTb43dj-XBX298iWw0|)b+e0V^+LX9V z$wVB;UAECfm>XZk+ymQ&-b&#p-mmy%zw&hx z-K5vtB1^>{U|w6g`W@`RDM@QCbP(gJ?X;qEq-XQ>}g?~*h!B8-(2jxbSd#|YE> zp5S~TDI%nJQ2ar$2W$i#&Z)d39@<)^XJIPV(E*h>b$ab#3*j1>b8iG=Acg#?il;=)A#0nu>VA z=S2|Fm87YN+E?!{-zIJ&gmU+YT?@J-50fUR&}FNHc76zMJ{tLjaHAaiXyPbX{)Ez3PzTm4?+ z*FJm7P_75BGO)MJecpP0R-foR%K~Kz$njBIpbI%dMM8@lXf=Mp?oGX#0e;ZY0AGgh z)M^GqFoB%poor)h6L+&`Z^|$UaiLw*#frL$84yB9vZ~6I65CJ?jVi;Gxy_F|1zP)F znIY`;j!H+`=GUswfunbmO;%OD1*p}T2&KQ4kJ1gd!X3~q-j@~Lms4n!kP+e#Vg8b^ z1HsUhlYWIdsE02KI5-Sia=+-@1Fj1ZW^5haPzt3T+@J~_*d1;+k*dOzGu&Ipt83A^ z>i8&K;VU9<1%zY0KDsmx|L2R?Pe*ZV%F_s@S(0v+F<)M60W;lvy1Y$`>TeN8wAJcQ zmW)LzzoEjA{{D;ovk7;~+kNsHA*;aC@=8+}8`Fs&gz>0)%|ghC!tn;o>iW$PE1n}( zwgY(qc3TKK2yYDuP1)$f3fycVV*=`i|5kh;t-2C7jG5t0jM$7*`VZF!O) zq@U&KfuTdIGCn)a(OxKn2BhOcEHSpW^FiB&h}*^XCl^vI@wyY3*Onf40`v5SnK}{K^at~_ z)UqaEo=YK?Q&t7$Sx4Jdd|Tpi`oeZl z&f002gL002-+0RkQa6aWYS2mq&(a9d~GBkD8> z002gL000dD0000000031005+c00000Ohi&3Q)O;*Z*neXdQeLR1^@s60096206PEx K0B;EZ00020)4byV literal 0 HcmV?d00001 diff --git a/Tugas/Lamp Sensor.fzz b/Tugas/Lamp Sensor.fzz new file mode 100644 index 0000000000000000000000000000000000000000..1262aa0188141f8bd869e227c9afd63734f73757 GIT binary patch literal 54699 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 literal 0 HcmV?d00001 diff --git a/Tugas/Lamp Sensor2.fzz b/Tugas/Lamp Sensor2.fzz new file mode 100644 index 0000000000000000000000000000000000000000..d2992f4df5d1b2fce7303bd16663096256faae2c GIT binary patch literal 49919 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

cqLfh#`X|3s(i4LLM>Vl!3^ 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 batas: + # Jika i lebih besar + tampilkanAngka(batas, i - 2) + + +print("--- Recrusive Start ---") +tampilkanAngka(60) +print("--- Recrusive End ---") diff --git a/Tugas/b.py b/Tugas/b.py new file mode 100644 index 0000000..ba6524d --- /dev/null +++ b/Tugas/b.py @@ -0,0 +1,10 @@ +def jumlah_deret(n): + if n == 0: + return 0 + else: + return n + jumlah_deret(n - 2) + + +bilangan = 8 +hasil = jumlah_deret(bilangan) +print(f"Jumlah deret dari 1 sampai {bilangan} adalah {hasil}") diff --git a/Tugas/c.py b/Tugas/c.py new file mode 100644 index 0000000..0ec7369 --- /dev/null +++ b/Tugas/c.py @@ -0,0 +1,9 @@ +def func(n): + if n == 1: + return 1 + else: + return func(n - 1) + func(n - 2) + + +for i in range(5): + print(func(i), end=" ") diff --git a/Tugas/crud2.py b/Tugas/crud2.py new file mode 100755 index 0000000..09cfa77 --- /dev/null +++ b/Tugas/crud2.py @@ -0,0 +1,120 @@ +# Variabel global untuk menyimpan data +# Ini adalah 'state' program, terpisah dari fungsi. +# Berbeda dengan 'self.data_mahasiswa' yang terikat pada objek. +data_mahasiswa = [] + + +def tampilkan_data(): + print("\n--- Daftar Data Tersimpan ---") + + # Langsung mengakses variabel GLOBAL 'data_mahasiswa' + if not data_mahasiswa: + print("Belum ada data yang tersimpan.") + else: + # Menampilkan data sesuai format + for i, data in enumerate(data_mahasiswa, start=1): + print(f"{i}. {data['nama']}, {data['alamat']}") + print("-----------------------------") + + +# Ini juga FUNGSI biasa +def tambah_data(): + print("\n--- Menu 1: Tambah Data ---") + nama = input("Masukkan data nama: ") + alamat = input("Masukkan data alamat: ") + + # Langsung memodifikasi variabel GLOBAL + data_mahasiswa.append({"nama": nama, "alamat": alamat}) + print("\nData baru berhasil ditambahkan!") + + +# FUNGSI biasa +def ubah_data(): + print("\n--- Menu 2: Ubah Data ---") + + # Memanggil FUNGSI global lainnya + tampilkan_data() + + if not data_mahasiswa: + print("Data kosong, tidak ada yang bisa diubah.") + return + + try: + pilihan_str = input("Pilih data yang akan dirubah : ") + pilihan = int(pilihan_str) + index = pilihan - 1 + + if 0 <= index < len(data_mahasiswa): + print( + f"Anda akan mengubah data ke-{pilihan}: {data_mahasiswa[index]['nama']}" + ) + nama_baru = input("Masukkan nama baru: ") + alamat_baru = input("Masukkan alamat baru: ") + + # Langsung memodifikasi variabel GLOBAL + data_mahasiswa[index] = {"nama": nama_baru, "alamat": alamat_baru} + print("\nData berhasil diubah!") + else: + print("Nomor data invalid.") + + except ValueError: + print("Input Invalid. Masukkan Angka.") + + +# FUNGSI biasa +def hapus_data(): + print("\n--- Menu 3: Hapus Data ---") + + tampilkan_data() + + if not data_mahasiswa: + print("Data kosong, tidak ada yang bisa dihapus.") + return + + try: + pilihan_str = input("Pilih data no data yang akan dihapus : ") + pilihan = int(pilihan_str) + index = pilihan - 1 + + if 0 <= index < len(data_mahasiswa): + # Langsung memodifikasi variabel GLOBAL + data_yang_dihapus = data_mahasiswa.pop(index) + print(f"\nData '{data_yang_dihapus['nama']}' berhasil dihapus.") + else: + print("Nomor data invalid.") + + except ValueError: + print("Input Invalid. Masukkan Angka.") + + +# FUNGSI utama untuk menjalankan program +def jalankan_program(): + while True: + print("\nMenu") + print("1. Tambah data") + print("2. Ubah data") + print("3. Hapus data") + print("4. Tampil data") + print("5. Keluar") # Tambahan kecil + + pilihan = input("Pilihlah no menu diatas: ") + + # Memanggil FUNGSI global, bukan method objek + if pilihan == "1": + tambah_data() # Bukan app.tambah_data() + elif pilihan == "2": + ubah_data() # Bukan app.ubah_data() + elif pilihan == "3": + hapus_data() # Bukan app.hapus_data() + elif pilihan == "4": + tampilkan_data() # Bukan app.tampilkan_data() + input("\nTekan Enter untuk kembali ke menu...") + elif pilihan == "5": + print("Program selesai.") + break # Keluar dari loop + else: + print("Pilihan invalid. Pilih nomor 1-5.") + + +# Langsung panggil FUNGSI global untuk memulai program +jalankan_program() diff --git a/Tugas/crud3.py b/Tugas/crud3.py new file mode 100755 index 0000000..f29a29e --- /dev/null +++ b/Tugas/crud3.py @@ -0,0 +1,99 @@ +data_mahasiswa = [] + + +def show_data(): + print("\n--- Daftar Data Tersimpan ---") + if not data_mahasiswa: + print("Belum ada data yang tersimpan.") + else: + for index, mahasiswa in enumerate(data_mahasiswa, start=1): + print(f"{index}. Nama: {mahasiswa['nama']}, Alamat: {mahasiswa['alamat']}") + print() + + +def add_data(): + print("\n--- Menambahkan Data Mahasiswa ---") + nama = input("Nama: ") + alamat = input("alamat: ") + data_mahasiswa.append({"nama": nama, "alamat": alamat}) + print("Data berhasil ditambahkan.") + + +def change_data(): + print("\n--- Mengubah Data Mahasiswa ---") + if not data_mahasiswa: + print("Belum ada data yang tersimpan.") + else: + show_data() + index = int(input("Masukkan nomor data yang ingin diubah: ")) - 1 + if 0 <= index < len(data_mahasiswa): + nama = input("Nama baru: ") + alamat = input("alamat baru: ") + data_mahasiswa[index]["nama"] = nama + data_mahasiswa[index]["alamat"] = alamat + print("Data berhasil diubah.") + else: + print("Nomor data tidak valid.") + + +def delete_data(): + print("\n--- Menghapus Data Mahasiswa ---") + if not data_mahasiswa: + print("Belum ada data yang tersimpan.") + else: + show_data() + index = int(input("Masukkan nomor data yang ingin dihapus: ")) - 1 + if 0 <= index < len(data_mahasiswa): + del data_mahasiswa[index] + print("Data berhasil dihapus.") + else: + print("Nomor data tidak valid.") + + +def save_data(): + with open("data_mahasiswa.txt", "w") as file: + for data in data_mahasiswa: + file.write(f"{data['nama']},{data['alamat']}\n") + + +def load_data(): + try: + with open("data_mahasiswa.txt", "r") as file: + for line in file: + nama, alamat = line.strip().split(",") + data_mahasiswa.append({"nama": nama, "alamat": alamat}) + except FileNotFoundError: + pass + + +def run_program(): + while True: + print("\n--- Menu ---") + print("1. Tambah Data") + print("2. Ubah Data") + print("3. Hapus Data") + print("4. Tampilkan Data") + print("5. Simpan Data") + print("6. Load Data") + print("7. Keluar") + choice = input("Pilih menu (1/2/3/4/5/6/7): ") + if choice == "1": + add_data() + elif choice == "2": + change_data() + elif choice == "3": + delete_data() + elif choice == "4": + show_data() + elif choice == "5": + save_data() + elif choice == "6": + load_data() + elif choice == "7": + print("Finished") + break + else: + print("Pilihan tidak valid.") + + +run_program() diff --git a/Tugas/d.py b/Tugas/d.py new file mode 100644 index 0000000..54fc0c2 --- /dev/null +++ b/Tugas/d.py @@ -0,0 +1,18 @@ +def hitung_faktorial(n): + if n == 0 and n == 1: + return 1 + else: + n - hitung_faktorial(n + 1) + + +angka1 = 3 +hasil = hitung_faktorial(angka1) +print(hitung_faktorial) + +angka2 = 0 +hasil2 = hitung_faktorial(angka2) +print(hitung_faktorial) + +angka3 = 5 +hasil3 = hitung_faktorial(angka3) +print(hitung_faktorial) diff --git a/Tugas/data_mahasiswa.txt b/Tugas/data_mahasiswa.txt new file mode 100755 index 0000000..664e381 --- /dev/null +++ b/Tugas/data_mahasiswa.txt @@ -0,0 +1 @@ +asdas,asdas diff --git a/Tugas/recrusive.py b/Tugas/recrusive.py new file mode 100644 index 0000000..c575193 --- /dev/null +++ b/Tugas/recrusive.py @@ -0,0 +1,47 @@ +# Data Mahasiswa +data_mahasiswa = [ + {"nim": "101", "nama": "Budi", "ipk": 3.2}, + {"nim": "102", "nama": "Ani", "ipk": 3.8}, + {"nim": "103", "nama": "Candra", "ipk": 2.9}, + {"nim": "104", "nama": "Dewi", "ipk": 3.5}, +] + + +# === CONTOH 1: MENCETAK NAMA === +def cetak_nama_rekursif(list_mhs): + # 1. Kasus Dasar (Base Case) + if not list_mhs: + return + + # 2. Langkah Rekursif (Recursive Step) + mahasiswa_pertama = list_mhs[0] + print(f"- {mahasiswa_pertama['nama']} (NIM: {mahasiswa_pertama['nim']})") + cetak_nama_rekursif(list_mhs[1:]) + + +print("### Daftar Nama Mahasiswa ###") +cetak_nama_rekursif(data_mahasiswa) + + +# === CONTOH 2: MENGHITUNG IPK > 3.0 === +def hitung_ipk_di_atas(list_mhs, batas_ipk=3.0): + # 1. Kasus Dasar (Base Case) + if not list_mhs: + return 0 + + # 2. Langkah Rekursif (Recursive Step) + mahasiswa_pertama = list_mhs[0] + sisa_list = list_mhs[1:] + + jumlah_dari_sisa = hitung_ipk_di_atas(sisa_list, batas_ipk) + + if mahasiswa_pertama["ipk"] > batas_ipk: + return 1 + jumlah_dari_sisa + else: + return 0 + jumlah_dari_sisa + + +# Menjalankan fungsi +jumlah_lulus = hitung_ipk_di_atas(data_mahasiswa, 3.0) +print(f"\n### Jumlah Mahasiswa dengan IPK > 3.0 ###") +print(f"Total: {jumlah_lulus} mahasiswa") diff --git a/a.py b/a.py new file mode 100755 index 0000000..38223b1 --- /dev/null +++ b/a.py @@ -0,0 +1,8 @@ +#nama = input("Masukkan nama Anda: ") +#usia = input("Masukkan usia Anda: ") +# +#print("Selamat datang, ", nama, ". Anda berusia", usia, "tahun.") + +angka =int(input("masukan sebuah angka : ")) +print(angka+10) + diff --git a/b.py b/b.py new file mode 100755 index 0000000..6608f69 --- /dev/null +++ b/b.py @@ -0,0 +1,7 @@ +angka = 100 +def ubah_angka(): +angka = 50 +print("Di dalam fungsi:", angka) + +ubah_angka() +print("Di luar fungsi:", angka) \ No newline at end of file diff --git a/basic-programming/.zed/settings.json b/basic-programming/.zed/settings.json new file mode 100644 index 0000000..e69de29 diff --git a/basic-programming/2025_semester_1/29_aug/acara5.py b/basic-programming/2025_semester_1/29_aug/acara5.py new file mode 100755 index 0000000..913376f --- /dev/null +++ b/basic-programming/2025_semester_1/29_aug/acara5.py @@ -0,0 +1,5 @@ +#variable 4 +MataKuliah = "Workshop Pemrograman Dasar" +print (MataKuliah) +del (MataKuliah) +print (MataKuliah) \ No newline at end of file diff --git a/basic-programming/2025_semester_1/29_aug/acara6.py b/basic-programming/2025_semester_1/29_aug/acara6.py new file mode 100755 index 0000000..e9b1acc --- /dev/null +++ b/basic-programming/2025_semester_1/29_aug/acara6.py @@ -0,0 +1,26 @@ +a = 10 +b = 3 + +#menggunakan poperator penjumlaham +c = a + b +print("Hasil %d + %d = %d" % (a, b, c)) + +#menggunakan operator pengurangan +c = a - b +print("Hasil %d - %d = %d" % (a, b, c)) + +#menggunakan operator perkalian +c = a * b +print("Hasil %d * %d = %d" % (a, b, c)) + +#menggunakan operator pembagian +c = a / b +print("Hasil %d / %d = %f" % (a, b, c)) + +#menggunakan operator Sisa bagi +c = a % b +print("Hasil %d %% %d = %d" % (a, b, c)) + +#menggunakan operator Pangkat +c = a ** b +print("Hasil %d ** %d = %d" % (a, b, c)) diff --git a/basic-programming/2025_semester_1/29_aug/test.py b/basic-programming/2025_semester_1/29_aug/test.py new file mode 100755 index 0000000..e2d9793 --- /dev/null +++ b/basic-programming/2025_semester_1/29_aug/test.py @@ -0,0 +1,23 @@ +name = input("Your name is: ") +age = input("Your age is: ") +matakuliah = "aaa" +var1, var2, var3 = 5, "test2", 3.14 + +#print("Hello " + name + ", you are " + age + " years old.") +print("Hello {name}.") + +print("Hello World") + +age = int(input("Masukkan Umur Kamu: ")) + +if age > 30: + print("Umur Mu Diatas 30 Tahun") +else: + print("Umur Mu Masih Di Bawah 30 Tahun") + +print(var1, var2, var3) + +print (matakuliah) +del (matakuliah) +print ("Matakuliah telah dihapus") + diff --git a/operator logika.py b/operator logika.py new file mode 100755 index 0000000..2b37bee --- /dev/null +++ b/operator logika.py @@ -0,0 +1,16 @@ +a = True +b = False + +#Logika AND +c = a and b +print("%r and %r = %r" % (a,b,c)) + +#Logika OR +c = a or b +print("%r or %r = %r" % (a,b,c)) + +#Logika NOT +c = not a +print("not %r = %r" % (a,c)) +c = not b +print("not %r = %r" % (b,c)) diff --git a/operator pembanding.py b/operator pembanding.py new file mode 100755 index 0000000..f354552 --- /dev/null +++ b/operator pembanding.py @@ -0,0 +1,25 @@ +a = 5 +b = 3 +# apakah a sama dengan b? +c =a == b +print("Apakah %d == %d: %r" % (a,b,c)) + +# apakah a < b? +c = a < b +print("Apakah %d < %d: %r" % (a,b,c)) + +# apakah a > b? +c = a > b +print("Apakah %d > %d: %r" % (a,b,c)) + +# apakah a <= b? +c = a <= b +print("Apakah %d <= %d: %r" % (a,b,c)) + +# apakah a >= b? +c = a >= b +print("Apakah %d >= %d: %r" % (a,b,c)) + +#apakah a != b? +c = a != b +print("Apakah %d != %d: %r" % (a,b,c)) \ No newline at end of file diff --git a/seb.py b/seb.py new file mode 100755 index 0000000..0dbc6ce --- /dev/null +++ b/seb.py @@ -0,0 +1,13 @@ +import zlib +import gzip +import rncryptor +cryptor = rncryptor.RNCryptor() + +binary = gzip.open("SEB-Slearn.seb", 'rb') +f = binary.read() +binary.close() + +#im getting error here +dec_data = (rncryptor.decrypt(f[4:], 'iitu')) + +print(zlib.decompress(dec_data,15 + 32)) \ No newline at end of file diff --git a/simple calc.py b/simple calc.py new file mode 100755 index 0000000..6a8036d --- /dev/null +++ b/simple calc.py @@ -0,0 +1,57 @@ +# Fungsi untuk penjumlahan +def add(x, y): + return x + y + +# Fungsi untuk pengurangan +def subtract(x, y): + return x - y + +# Fungsi untuk perkalian +def multiply(x, y): + return x * y + +# Fungsi untuk pembagian +def divide(x, y): + # Memastikan tidak ada pembagian dengan nol + if y == 0: + return "Error! Pembagian dengan nol tidak bisa." + return x / y + +print("Pilih operasi.") +print("1.Penjumlahan") +print("2.Pengurangan") +print("3.Perkalian") +print("4.Pembagian") + +while True: + # Mengambil input dari pengguna + choice = input("Masukkan pilihan (1/2/3/4): ") + + # Mengecek apakah pilihan valid + if choice in ('1', '2', '3', '4'): + try: + num1 = float(input("Masukkan angka pertama: ")) + num2 = float(input("Masukkan angka kedua: ")) + except ValueError: + print("Input tidak valid. Masukkan angka.") + continue + + if choice == '1': + print(num1, "+", num2, "=", add(num1, num2)) + + elif choice == '2': + print(num1, "-", num2, "=", subtract(num1, num2)) + + elif choice == '3': + print(num1, "*", num2, "=", multiply(num1, num2)) + + elif choice == '4': + print(num1, "/", num2, "=", divide(num1, num2)) + + # Cek apakah pengguna ingin lanjut + next_calculation = input("Mau coba lagi? (ya/tidak): ") + if next_calculation.lower() != "ya": + break + + else: + print("Pilihan tidak valid") \ No newline at end of file diff --git a/simple calc2.py b/simple calc2.py new file mode 100755 index 0000000..a2e8268 --- /dev/null +++ b/simple calc2.py @@ -0,0 +1,22 @@ +angka1 = float(input("Masukkan angka pertama: ")) +operator = input("Masukkan operator (+, -, *, /): ") +angka2 = float(input("Masukkan angka kedua: ")) + +if operator == '+': + hasil = angka1 + angka2 + print(f"Hasil: {angka1} + {angka2} = {hasil}") +elif operator == '-': + hasil = angka1 - angka2 + print(f"Hasil: {angka1} - {angka2} = {hasil}") +elif operator == '*': + hasil = angka1 * angka2 + print(f"Hasil: {angka1} * {angka2} = {hasil}") +elif operator == '/': + if angka2 != 0: + hasil = angka1 / angka2 + print(f"Hasil: {angka1} / {angka2} = {hasil}") + else: + print("Error! Tidak bisa membagi dengan nol.") +else: + print("Operator tidak valid.") + \ No newline at end of file diff --git a/test.py b/test.py new file mode 100755 index 0000000..8cdcbb5 --- /dev/null +++ b/test.py @@ -0,0 +1,16 @@ +bergerak = True +while bergerak: + command = input("Masukkan perintah (maju, mundur, belok kiri, belok kanan, berhenti): ").lower() + if command == "maju": + print("Robot bergerak maju.") + elif command == "mundur": + print("Robot bergerak mundur.") + elif command == "belok kiri": + print("Robot berbelok ke kiri.") + elif command == "belok kanan": + print("Robot berbelok ke kanan.") + elif command == "berhenti": + print("Robot berhenti.") + bergerak = False + else: + print("Perintah tidak dikenali. Silakan coba lagi.") \ No newline at end of file