Download as pdf or txt
Download as pdf or txt
You are on page 1of 11

Project Perpustakaan

VLP4
1. Variabel pada Python
2. Operator pada Python
3. Tipe Data pada Python
In [1]:
#Inisialisasi
Nama_buku_1="Fisika"
Nama_buku_2="Kimia"
Nama_buku_3="Biologi"
durasi=3
In [2]:
1_Nama_buku="Indonesia"
File "<ipython-input-2-a5cb5089b85f>", line 1
1_Nama_buku="Indonesia"
^
SyntaxError: invalid decimal literal

Error VLP4

Nama variabel tidak boleh menggunakan awalan angka dan simbol.\ Problem solving=Gunakan angka pada akhir nama variabel
In [3]:
type(Nama_buku_1),type(Nama_buku_2),type(Nama_buku_3), type(durasi)

Out[3]:
(str, str, str, int)
In [4]:
kode_buku_1="PS_001"
kode_buku_2="PS_002"
kode_buku_3="PS_003"
In [5]:
N_buku_1=N_buku_2=N_buku_3=10
In [6]:
type(N_buku_1)

Out[6]:
int

VLP6
1. list
2. tuple
3. dictionary
In [7]:
Nama_buku=(Nama_buku_1,Nama_buku_2,Nama_buku_3)
Kode_buku=[kode_buku_1,kode_buku_2,kode_buku_3]
N_buku=[N_buku_1, N_buku_2, N_buku_3]
In [8]:
type(Nama_buku), type(Kode_buku), type(N_buku)

Out[8]:
(tuple, list, list)
In [9]:
pustaka={"Nama":Nama_buku,
"Kode":Kode_buku,
"Jumlah":N_buku}
In [10]:
type(pustaka)

Out[10]:
dict
In [11]:
pustaka
Out[11]:
{'Nama': ('Fisika', 'Kimia', 'Biologi'),
'Kode': ['PS_001', 'PS_002', 'PS_003'],
'Jumlah': [10, 10, 10]}

Penambahan buku
In [12]:
pustaka['Nama'].append('Seni')
pustaka['Kode'].append('PS_004')
pustaka['Jumlah'].append(15)
print("Buku {} dengan jumlah {}".format(pustaka["Nama"][-1],
pustaka['Jumlah'][-1]))
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-12-36a9839f8003> in <module>
----> 1 pustaka['Nama'].append('Seni')
2 pustaka['Kode'].append('PS_004')
3 pustaka['Jumlah'].append(15)
4 print("Buku {} dengan jumlah {}".format(pustaka["Nama"][-1],
5 pustaka['Jumlah'][-1]))

AttributeError: 'tuple' object has no attribute 'append'

Error: VLP6

Tuple tidak bisa dimodifikasi, ditambah atau dikurangi. Sehingga harus hati-hati dalam memilih tipe data array. \ Problem Solving=Memilih
tipe data list, serta kita bisa pastikan tipe data yang telah kita pilih dengan instruksi type()
In [13]:
Nama_buku=[Nama_buku_1,Nama_buku_2,Nama_buku_3]
pustaka={"Nama":Nama_buku,
"Kode":Kode_buku,
"Jumlah":N_buku}
pustaka

Out[13]:
{'Nama': ['Fisika', 'Kimia', 'Biologi'],
'Kode': ['PS_001', 'PS_002', 'PS_003'],
'Jumlah': [10, 10, 10]}
In [14]:
pustaka['Nama'].append('Seni')
pustaka['Kode'].append('PS_004')
pustaka['Jumlah'].append(15)
print("Buku {} dengan jumlah {}".format(pustaka["Nama"][-1],
pustaka['Jumlah'][-1]))
Buku Seni dengan jumlah 15
In [15]:
pustaka

Out[15]:
{'Nama': ['Fisika', 'Kimia', 'Biologi', 'Seni'],
'Kode': ['PS_001', 'PS_002', 'PS_003', 'PS_004'],
'Jumlah': [10, 10, 10, 15]}

VLP8
1. Denda harga sewa perhari
2. Bila tersedia >1, boleh pinjam; else tidak boleh
In [16]:
print("Buku yang tersedia:")
print("Nama Buku\t Kode Buku\t Jumlah")
for i in range(len(pustaka['Nama'])):
print("Buku {}\t kode {}\t {}".format(
pustaka['Nama'][i],
pustaka['Kode'][i],
pustaka['Jumlah'][i]))
Buku yang tersedia:
Nama Buku Kode Buku Jumlah
Buku Fisika kode PS_001 10
Buku Kimia kode PS_002 10
Buku Biologi kode PS_003 10
Buku Seni kode PS_004 15
In [17]:
print("Form Peminjaman")
varNama=str(input("Nama Peminjam ="))
varBuku=str(input("Kode Buku= "))
for i in range(len(pustaka['Kode'])):
if varBuku==pustaka['Kode'][i] and pustaka['Jumlah'][i]>1:
print("Bisa pinjam".format(varNama))
print("Durasi waktu pinjam {} hari".format(durasi))
pustaka['Jumlah'][i]-=1
elif i==len(pustaka['Kode'])-1:
print("Tidak bisa dipinjam")
Form Peminjaman
Nama Peminjam =Brian
Kode Buku= PS_004
Bisa pinjam
Durasi waktu pinjam 3 hari

Error VLP4

Meskipun program tidak menunjukan eror, tapi progam yang dihasilkan tidak sesuai dengan yang diharapkan. Program mengeluarkan
keterangan Bisa dipinjam dan Tidak bisa dipinjam\ Problem Solving=Berikan break untuk mengeluarkan variabel yang if-kondisionalnya
sudah True. Sehingga, setelah if-kondisional bernilai True, sistem akan keluar dari proses for-loop.
In [18]:
print("Form Peminjaman")
varNama=str(input("Nama Peminjam ="))
varBuku=str(input("Kode Buku= "))
for i in range(len(pustaka['Kode'])):
if varBuku==pustaka['Kode'][i] and pustaka['Jumlah'][i]>1:
print("Bisa pinjam".format(varNama))
print("Durasi waktu pinjam {} hari".format(durasi))
pustaka['Jumlah'][i]-=1
break
elif i==len(pustaka['Kode'])-1:
print("Tidak bisa dipinjam")
Form Peminjaman
Nama Peminjam =Brian
Kode Buku= PS_004
Bisa pinjam
Durasi waktu pinjam 3 hari
In [19]:
pustaka

Out[19]:
{'Nama': ['Fisika', 'Kimia', 'Biologi', 'Seni'],
'Kode': ['PS_001', 'PS_002', 'PS_003', 'PS_004'],
'Jumlah': [10, 10, 10, 13]}
In [20]:
print("Form Pengembalian")
varNama=str(input("Nama Peminjam\t="))
varBuku=str(input("Kode Buku\t="))
varHari=int(input("Jumlah Hari\t="))
for i in range(len(pustaka['Kode'])):
if varBuku==pustaka['Kode'][i]:
if varHari>=durasi:
denda=(varHari-durasi)*1000
print("Terima kasih, {}\nDenda sebesar Rp.{}".format(varNama,denda))
pustaka['Jumlah'][i]+=1
break
else:
print("Terima kasih,{}".format(varNama))
pustaka['Jumlah'][i]+=1
break
elif i==len(pustaka['Kode'])-1:
print("Salah kode")
Form Pengembalian
Nama Peminjam =Brian
Kode Buku =PS_004
Jumlah Hari =4
Terima kasih, Brian
Denda sebesar Rp.1000
In [21]:
pustaka

Out[21]:
{'Nama': ['Fisika', 'Kimia', 'Biologi', 'Seni'],
'Kode': ['PS_001', 'PS_002', 'PS_003', 'PS_004'],
'Jumlah': [10, 10, 10, 14]}

VLP 10
1. Fungsi Peminjaman
2. Fungsi Pengembalian
3. Fungsi Data Terakhir
In [22]:
def Data_terakhir():
print("Buku yang tersedia:")
print("Nama Buku\t Kode Buku\t Jumlah")
for i in range(len(pustaka['Nama'])):
print("Buku {}\t kode {}\t {}".format(
pustaka['Nama'][i],
pustaka['Kode'][i],
pustaka['Jumlah'][i]))
In [23]:
Data_terakhir()
Buku yang tersedia:
Nama Buku Kode Buku Jumlah
Buku Fisika kode PS_001 10
Buku Kimia kode PS_002 10
Buku Biologi kode PS_003 10
Buku Seni kode PS_004 14
In [24]:
def peminjaman():
print("Form Peminjaman")
varNama=str(input("Nama Peminjam ="))
varBuku=str(input("Kode Buku= "))
for i in range(len(pustaka['Kode'])):
if varBuku==pustaka['Kode'][i] and pustaka['Jumlah'][i]>1:
print("Bisa pinjam".format(varNama))
print("Durasi waktu pinjam {} hari".format(durasi))
pustaka['Jumlah'][i]-=1
break
elif i==len(pustaka['Kode'])-1:
print("Tidak bisa dipinjam")
In [25]:
peminjaman()
Form Peminjaman
Nama Peminjam =Brian
Kode Buku= PS_003
Bisa pinjam
Durasi waktu pinjam 3 hari
In [30]:
def pengembalian(pustaka=pustaka):
print("Form Pengembalian")
varNama=str(input("Nama Peminjam\t="))
varBuku=str(input("Kode Buku\t="))
varHari=int(input("Jumlah Hari\t="))
for i in range(len(pustaka['Kode'])):
if varBuku==pustaka['Kode'][i]:
if varHari>=durasi:
denda=(varHari-durasi)*1000
print("Terima kasih, {}\nDenda sebesar Rp.{}".format(varNama,denda))
pustaka['Jumlah'][i]+=1
break
else:
print("Terima kasih,{}".format(varNama,denda))
pustaka['Jumlah'][i]+=1
break
elif i==len(pustaka['Kode'])-1:
print("Salah kode")
In [31]:
pengembalian()
Form Pengembalian
Nama Peminjam =Brian
Kode Buku =PS_001
Jumlah Hari =3
Terima kasih, Brian
Denda sebesar Rp.0
In [32]:
def tambah_buku(varBuku,varKode,varJumlah):
for i in range(len(pustaka['Kode'])):
if varKode==pustaka['Kode'][i]:
pustaka['Jumlah'][i]+=varJumlah
print("Buku {} dengan Jumlah {}".format(pustaka["Nama"][i],
pustaka['Jumlah'][i]))
break
else:
pustaka['Nama'].append(varBuku)
pustaka['Kode'].append(varKode)
pustaka['Jumlah'].append(varJumlah)

print("Buku Baru {} dengan Jumlah {}".format(pustaka["Nama"][-1],


pustaka['Jumlah'][-1]))
In [33]:
Judul="Seni"
Kode="PS_004"
Jumlah='7'

tambah_buku(Judul,Kode,Jumlah)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-33-024c20a9ad80> in <module>
3 Jumlah='7'
4
----> 5 tambah_buku(Judul,Kode,Jumlah)

<ipython-input-32-b10412b3da11> in tambah_buku(varBuku, varKode, varJumlah)


2 for i in range(len(pustaka['Kode'])):
3 if varKode==pustaka['Kode'][i]:
----> 4 pustaka['Jumlah'][i]+=varJumlah
5 print("Buku {} dengan Jumlah {}".format(pustaka["Nama"][i],
6 pustaka['Jumlah'][i]))

TypeError: unsupported operand type(s) for +=: 'int' and 'str'

Error VLP10

Error terjadi karena tipe data yang dijumlahkan tidak sesuai. Tipe data yang dimasukan adalah string.\ Problem Solving=Untuk semua variabel
yang memiliki ciri jumlah atau angka, selalu gunakan tipe data angka seperti integer atau float
In [34]:
Data_terakhir()
Buku yang tersedia:
Nama Buku Kode Buku Jumlah
Buku Fisika kode PS_001 11
Buku Kimia kode PS_002 10
Buku Biologi kode PS_003 9
Buku Seni kode PS_004 14
In [35]:
Judul="Seni"
Kode="PS_004"
Jumlah=7

tambah_buku(Judul,Kode,Jumlah)
Buku Seni dengan Jumlah 21
In [36]:
Data_terakhir()
Buku yang tersedia:
Nama Buku Kode Buku Jumlah
Buku Fisika kode PS_001 11
Buku Kimia kode PS_002 10
Buku Biologi kode PS_003 9
Buku Seni kode PS_004 21
In [37]:
Judul="Sastra"
Kode="PS_005"
Jumlah=5

tambah_buku(Judul,Kode,Jumlah)
Buku Baru Sastra dengan Jumlah 5
In [38]:
Data_terakhir()
Buku yang tersedia:
Nama Buku Kode Buku Jumlah
Buku Fisika kode PS_001 11
Buku Kimia kode PS_002 10
Buku Biologi kode PS_003 9
Buku Seni kode PS_004 21
Buku Sastra kode PS_005 5

VLP12
In [39]:
import pandas as pd
In [40]:
df=pd.DataFrame(pustaka)
In [41]:
df

Out[41]:
Nama Kode Jumlah

0 Fisika PS_001 11

1 Kimia PS_002 10

2 Biologi PS_003 9

3 Seni PS_004 21

4 Sastra PS_005 5

In [42]:
len(df)

Out[42]:
5
In [43]:
def peminjaman_df(durasi=durasi):
print("Form Peminjaman")
varNama=str(input("Nama Peminjam ="))
varBuku=str(input("Kode Buku= "))
for i in range(len(df)):
if (varBuku==df['Kode'].iloc[i] and df['Jumlah'].iloc[i]>1):
print("Bisa pinjam {}".format(varNama))
print("Durasi waktu pinjam {} hari".format(durasi))
df.at[i,'Jumlah']-=1
return df
break
elif i==len(df):
print("Tidak bisa dipinjam")
In [44]:
def pengembalian_df(durasi=durasi):
print("Form Pengembalian")
varNama=str(input("Nama Peminjam\t="))
varBuku=str(input("Kode Buku\t="))
varHari=int(input("Jumlah Hari\t="))
for i in range(len(df)):
if varBuku==df['Kode'].iloc[i]:
if varHari>=durasi:
denda=(varHari-durasi)*1000
print("Terima kasih, {}\nDenda sebesar Rp.{}".format(varNama,denda))
df.at[i,'Jumlah']+=1
return df
break
else:
print("Terima kasih,{}".format(varNama))
varBar=df['Jumlah'].iloc[i]
df.at[i,'Jumlah']+=1
return df
break
elif i==len(df)-1:
print("Salah kode")
In [45]:
def tambah_buku_df(varBuku,varKode,varJumlah):
for i in range(len(df)):
if varKode==df['Kode'].iloc[i]:
df.at[i,'Jumlah']+=varJumlah
return df
print("Buku {} dengan Jumlah {}".format(df["Nama"].iloc[i],
df['Jumlah'].iloc[i]))
break
else:
var1={"Nama":varBuku,
"Kode":varKode,
"Jumlah":varJumlah}
df=df.append(var1, ignore_index=True)
print("Buku Baru {} dengan Jumlah {}".format(df["Nama"].iloc[-1],
df['Jumlah'].iloc[-1]))
return df
In [46]:
df

Out[46]:
Nama Kode Jumlah

0 Fisika PS_001 11

1 Kimia PS_002 10

2 Biologi PS_003 9

3 Seni PS_004 21

4 Sastra PS_005 5

In [47]:
df=peminjaman_df()
Form Peminjaman
Nama Peminjam =Brian
Kode Buku= PS_004
Bisa pinjam Brian
Durasi waktu pinjam 3 hari
In [48]:
df

Out[48]:
Nama Kode Jumlah

0 Fisika PS_001 11

1 Kimia PS_002 10

2 Biologi PS_003 9

3 Seni PS_004 20

4 Sastra PS_005 5

In [49]:
Judul="Astronomi"
Kode="PS_006"
Jumlah=5

df=tambah_buku_df(Judul,Kode,Jumlah)
---------------------------------------------------------------------------
UnboundLocalError Traceback (most recent call last)
<ipython-input-49-2902473ddb1b> in <module>
3 Jumlah=5
4
----> 5 df=tambah_buku_df(Judul,Kode,Jumlah)

<ipython-input-45-96d98275c913> in tambah_buku_df(varBuku, varKode, varJumlah)


1 def tambah_buku_df(varBuku,varKode,varJumlah):
----> 2 for i in range(len(df)):
3 if varKode==df['Kode'].iloc[i]:
4 df.at[i,'Jumlah']+=varJumlah
5 return df

UnboundLocalError: local variable 'df' referenced before assignment

Error VLP12

Error terjadi karena tidak menemukan nama variabel df pada fungsi tambah_buku_df. Berbeda dengan fungsi sebelumnya, fungsi
tambah_buku_df melibatkan proses dataframe yang lebih kompleks karena ada penambahan data buku untuk kolom Nama, Kode dan Jumlah.\
Problem solving=Berikan parameter masukan berupa df, agar df bisa dikenali dan dimodifikasi oleh fungsi tamba_buku_df
In [50]:
def tambah_buku_df(varBuku,varKode,varJumlah,df=df):
for i in range(len(df)):
if varKode==df['Kode'].iloc[i]:
df.at[i,'Jumlah']+=varJumlah
return df
print("Buku {} dengan Jumlah {}".format(df["Nama"].iloc[i],
df['Jumlah'].iloc[i]))
break
else:
var1={"Nama":varBuku,
"Kode":varKode,
"Jumlah":varJumlah}
df=df.append(var1, ignore_index=True)
print("Buku Baru {} dengan Jumlah {}".format(df["Nama"].iloc[-1],
df['Jumlah'].iloc[-1]))
return df
In [51]:
Judul="Astronomi"
Kode="PS_006"
Jumlah=5

df=tambah_buku_df(Judul,Kode,Jumlah)
Buku Baru Astronomi dengan Jumlah 5
In [52]:
df

Out[52]:
Nama Kode Jumlah

0 Fisika PS_001 11

1 Kimia PS_002 10

2 Biologi PS_003 9

3 Seni PS_004 20

4 Sastra PS_005 5

5 Astronomi PS_006 5

VLP 14
1. Alokasi Kolom baru
2. Bar
3. Pie
In [53]:
import numpy as np
import matplotlib.pyplot as plt
In [54]:
df['Pinjam']=np.random.randint(1,7)
df

Out[54]:
Nama Kode Jumlah Pinjam

0 Fisika PS_001 11 2

1 Kimia PS_002 10 2

2 Biologi PS_003 9 2

3 Seni PS_004 20 2

4 Sastra PS_005 5 2

5 Astronomi PS_006 5 2

Error VLP 14

Nilai random yang dikeluarkan di antara angka 1 dan 7, akan tetapi nilai tersebut seragam untuk semua Buku. Tidak ada yang error untuk
bagian ini, akan tetapi saya menginginkan nilai yang berbeda untuk semua buku. \ Problem Solving=Berikan tambahan untuk panjang data
pada random integer (randint). Kita bisa menambahkan angka 7 atau agar program kita dinamis, kita berikan instruksi len(df)
In [55]:
df['Pinjam']=np.random.randint(1,7,len(df))
df

Out[55]:
Nama Kode Jumlah Pinjam

0 Fisika PS_001 11 2

1 Kimia PS_002 10 6

2 Biologi PS_003 9 3

3 Seni PS_004 20 2

4 Sastra PS_005 5 1

5 Astronomi PS_006 5 5

In [56]:
def peminjaman_df(durasi=durasi):
print("Form Peminjaman")
varNama=str(input("Nama Peminjam ="))
varBuku=str(input("Kode Buku= "))
for i in range(len(df)):
if (varBuku==df['Kode'].iloc[i] and df['Jumlah'][i]>1):
print("Bisa pinjam {}".format(varNama))
print("Durasi waktu pinjam {} hari".format(durasi))
df.at[i,'Jumlah']-=1
df.at[i,'Pinjam']+=1
return df
break
elif i==len(df)-1:
print("Tidak bisa dipinjam")
In [57]:
def pengembalian_df(durasi=durasi):
print("Form Pengembalian")
varNama=str(input("Nama Peminjam\t="))
varBuku=str(input("Kode Buku\t="))
varHari=int(input("Jumlah Hari\t="))
for i in range(len(df)):
if varBuku==df['Kode'].iloc[i]:
if varHari>=durasi:
denda=(varHari-durasi)*1000
print("Terima kasih, {}\nDenda sebesar Rp.{}".format(varNama,denda))
df.at[i,'Jumlah']+=1
df.at[i,'Pinjam']-=1
return df
break
else:
print("Terima kasih,{}".format(varNama))
varBar=df['Jumlah'].iloc[i]
df.at[i,'Jumlah']+=1
df.at[i,'Pinjam']-=1
return df
break
elif i==len(df)-1:
print("Salah kode")
In [58]:
df

Out[58]:
Nama Kode Jumlah Pinjam

0 Fisika PS_001 11 2

1 Kimia PS_002 10 6

2 Biologi PS_003 9 3

3 Seni PS_004 20 2

4 Sastra PS_005 5 1

5 Astronomi PS_006 5 5

In [59]:
df=peminjaman_df()
Form Peminjaman
Nama Peminjam =Brian
Kode Buku= PS_004
Bisa pinjam Brian
Durasi waktu pinjam 3 hari
In [61]:
df

Out[61]:
Nama Kode Jumlah Pinjam

0 Fisika PS_001 11 2

1 Kimia PS_002 10 6

2 Biologi PS_003 9 3

3 Seni PS_004 19 3

4 Sastra PS_005 5 1

5 Astronomi PS_006 5 5

In [62]:
df=pengembalian_df()
Form Pengembalian
Nama Peminjam =Brian
Kode Buku =PS_002
Jumlah Hari =3
Terima kasih, Brian
Denda sebesar Rp.0
In [63]:
df

Out[63]:
Nama Kode Jumlah Pinjam

0 Fisika PS_001 11 2

1 Kimia PS_002 11 5

2 Biologi PS_003 9 3

3 Seni PS_004 19 3

4 Sastra PS_005 5 1

5 Astronomi PS_006 5 5

In [64]:
plt.title("Ketersediaan Buku")
pjgLabel=np.arange(len(df))
lbr=0.5
varLabel=df['Nama'].values
varJumlah=df['Jumlah'].values
varPinjam=df['Pinjam'].values
plt.bar(pjgLabel,varJumlah, color='gold',
width=lbr, label="Jumlah")
plt.bar(pjgLabel+lbr,varPinjam, color='red',
width=lbr, label="Pinjam")
plt.legend(loc='best')
plt.show()

In [65]:
plt.title("Persentase Ketersediaan Buku")
plt.pie(varJumlah,labels=varLabel, autopct='%1.2f%%',
shadow=True)
plt.show()

In [66]:
plt.title("Persentase Peminjaman Buku")
plt.pie(varJumlah,labels=varLabel, autopct='%1.2f%%')
plt.show()

The End
In [ ]:

You might also like