Поэтому я пытаюсь изменить старое значение переменной на новое значение с помощью пользовательского ввода. Здесь код
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
Когда я запускаю его, он не работает, значение Alamat (например) после вызова остается прежним. Например, когда я запускаю код и хочу изменить значение Аламата
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?:
Вывод не ожидается, при печати после вызова должно быть так:
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?:
Как мне решить эту проблему и какая часть кода неверна?
Извините, сэр, я уже редактирую программу на более простую, но все равно не работает.
Setattr(list_usr, editData, databaru) не работает, потому что в этом случае editData = "Alamat", но list_usr имеет свойство "alamat". вы должны везде использовать строчные буквы «alamat», поэтому измените последнюю строку в jenisData на «alamat»: «alamat»
Я уже изменил программу на более простую, сэр, но все еще не дал ожидаемого результата
Большое спасибо, сэр, хотя вопрос закрыт, но ваш ответ решает проблему
Пожалуйста, сделайте минимальный воспроизводимый пример . Это слишком много кода, он неполный, и наличие его на другом языке затрудняет нам чтение. Кроме того, параметры self, pilihanusr не используются. Что еще более важно, мы здесь не для того, чтобы выполнять отладку за вас. Вы можете заглянуть в Как выполнить код Python, чтобы помочь отлаживать проблемы? а также Как отлаживать небольшие программы Эрика Липперта.