-1

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 call\nUsername : {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 call\nUsername : {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?

  • 2
    Please make a [mre]. That's too much code, it's incomplete, and having it in another language makes it hard for us to read. Plus, the parameters `self, pilihanusr` are unused. More importantly, we're not here to do your debugging for you. You might look into [How to step through Python code to help debug issues?](/q/4929251/4518341) as well as [How to debug small programs](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/) by Eric Lippert. – wjandrea Jan 10 '23 at 21:30
  • Sorry sir i already edit the program to simpler one, but still not work – user512512af Jan 10 '23 at 22:26

1 Answers1

1

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"