How to replace old value with new value on dictionary in python?
Question:
So im trying to change old value of variable to new value with user input. Here the code
class test():
id = "tes"
pwd = "1"
role = "2"
nama = "3"
nip = "4"
tl = "5"
nomorhp = "6"
alamat = "7"
databaru = ""
pilihan = ""
obj = test()
id = "tes"
pwd = "1"
role = "2"
nama = "3"
nip = "4"
tl = "5"
nomorhp = "6"
alamat = "7"
databaru = ""
pilihan = ""
jenisData = {
"Username": id,
"Password": pwd,
"Role": role,
"Nama Lengkap": nama,
"NIP": nip,
"Tanggal Lahir": tl,
"Nomor HP": nomorhp,
"Alamat": alamat
}
print(f"di merhod admin Username : {id}nPassword : {pwd}nRole : {role}nNama Lengkap : {nama}nNIP : {nip}nTanggal Lahir : {tl}nNomor HP : {nomorhp}nAlamat : {alamat}")
while True:
editData = input("Data apa yang ingin diganti?: ")
if editData in jenisData:
datalama = jenisData[editData]
databaru = input("Masukkan data yang baru: ")
pilihan = input(f"Data {datalama} akan diganti ke {databaru}, anda yakin ingin menggantinya (Y/T)? ")
print(f"nBefore callnUsername : {id}nPassword : {pwd}nRole : {role}nNama Lengkap : {nama}nNIP : {nip}nTanggal Lahir : {tl}nNomor HP : {nomorhp}nAlamat : {alamat}")
while True:
if pilihan == "Y" or pilihan == "y":
jenisData[editData] = databaru
setattr(obj, editData, databaru)
print(f"nAfter callnUsername : {id}nPassword : {pwd}nRole : {role}nNama Lengkap : {nama}nNIP : {nip}nTanggal Lahir : {tl}nNomor HP : {nomorhp}nAlamat : {alamat}")
print("Ada lagi data yang ingin diganti?")
break
When im run it it didnt work, the Alamat value (for example) after call is still same. For example when i run code and want change Alamat value
Data apa yang ingin diganti?: Alamat
Masukkan data yang baru: 2
Data 7 akan diganti ke 2, anda yakin ingin menggantinya (Y/T)? Y
Before call
Username : tes
Password : 1
Role : 2
Nama Lengkap : 3
NIP : 4
Tanggal Lahir : 5
Nomor HP : 6
Alamat : 7
After call
Username : tes
Password : 1
Role : 2
Nama Lengkap : 3
NIP : 4
Tanggal Lahir : 5
Nomor HP : 6
Alamat : 7
Ada lagi data yang ingin diganti?
Data apa yang ingin diganti?:
The output is not expected, on print after call it should like this:
After call
Username : tes
Password : 1
Role : 2
Nama Lengkap : 3
NIP : 4
Tanggal Lahir : 5
Nomor HP : 6
Alamat : 2
Ada lagi data yang ingin diganti?
Data apa yang ingin diganti?:
How do i solve this and what part of code that wrong?
Answers:
setattr(list_usr, editData, databaru) doesnt work because in this case editData = "Alamat" but list_usr has "alamat" property. you should use lowercase "alamat" everywhere , so change last line in jenisData to "alamat": "alamat"
So im trying to change old value of variable to new value with user input. Here the code
class test():
id = "tes"
pwd = "1"
role = "2"
nama = "3"
nip = "4"
tl = "5"
nomorhp = "6"
alamat = "7"
databaru = ""
pilihan = ""
obj = test()
id = "tes"
pwd = "1"
role = "2"
nama = "3"
nip = "4"
tl = "5"
nomorhp = "6"
alamat = "7"
databaru = ""
pilihan = ""
jenisData = {
"Username": id,
"Password": pwd,
"Role": role,
"Nama Lengkap": nama,
"NIP": nip,
"Tanggal Lahir": tl,
"Nomor HP": nomorhp,
"Alamat": alamat
}
print(f"di merhod admin Username : {id}nPassword : {pwd}nRole : {role}nNama Lengkap : {nama}nNIP : {nip}nTanggal Lahir : {tl}nNomor HP : {nomorhp}nAlamat : {alamat}")
while True:
editData = input("Data apa yang ingin diganti?: ")
if editData in jenisData:
datalama = jenisData[editData]
databaru = input("Masukkan data yang baru: ")
pilihan = input(f"Data {datalama} akan diganti ke {databaru}, anda yakin ingin menggantinya (Y/T)? ")
print(f"nBefore callnUsername : {id}nPassword : {pwd}nRole : {role}nNama Lengkap : {nama}nNIP : {nip}nTanggal Lahir : {tl}nNomor HP : {nomorhp}nAlamat : {alamat}")
while True:
if pilihan == "Y" or pilihan == "y":
jenisData[editData] = databaru
setattr(obj, editData, databaru)
print(f"nAfter callnUsername : {id}nPassword : {pwd}nRole : {role}nNama Lengkap : {nama}nNIP : {nip}nTanggal Lahir : {tl}nNomor HP : {nomorhp}nAlamat : {alamat}")
print("Ada lagi data yang ingin diganti?")
break
When im run it it didnt work, the Alamat value (for example) after call is still same. For example when i run code and want change Alamat value
Data apa yang ingin diganti?: Alamat
Masukkan data yang baru: 2
Data 7 akan diganti ke 2, anda yakin ingin menggantinya (Y/T)? Y
Before call
Username : tes
Password : 1
Role : 2
Nama Lengkap : 3
NIP : 4
Tanggal Lahir : 5
Nomor HP : 6
Alamat : 7
After call
Username : tes
Password : 1
Role : 2
Nama Lengkap : 3
NIP : 4
Tanggal Lahir : 5
Nomor HP : 6
Alamat : 7
Ada lagi data yang ingin diganti?
Data apa yang ingin diganti?:
The output is not expected, on print after call it should like this:
After call
Username : tes
Password : 1
Role : 2
Nama Lengkap : 3
NIP : 4
Tanggal Lahir : 5
Nomor HP : 6
Alamat : 2
Ada lagi data yang ingin diganti?
Data apa yang ingin diganti?:
How do i solve this and what part of code that wrong?
setattr(list_usr, editData, databaru) doesnt work because in this case editData = "Alamat" but list_usr has "alamat" property. you should use lowercase "alamat" everywhere , so change last line in jenisData to "alamat": "alamat"