Как заменить старое значение новым значением в словаре в python?

Поэтому я пытаюсь изменить старое значение переменной на новое значение с помощью пользовательского ввода. Здесь код

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?:

Как мне решить эту проблему и какая часть кода неверна?

Пожалуйста, сделайте минимальный воспроизводимый пример . Это слишком много кода, он неполный, и наличие его на другом языке затрудняет нам чтение. Кроме того, параметры self, pilihanusr не используются. Что еще более важно, мы здесь не для того, чтобы выполнять отладку за вас. Вы можете заглянуть в Как выполнить код Python, чтобы помочь отлаживать проблемы? а также Как отлаживать небольшие программы Эрика Липперта.

wjandrea 10.01.2023 22:30

Извините, сэр, я уже редактирую программу на более простую, но все равно не работает.

user512512af 10.01.2023 23:26
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
Потяните за рычаг выброса энергососущих проектов
Потяните за рычаг выброса энергососущих проектов
На этой неделе моя команда отменила проект, над которым я работал. Неделя усилий пошла насмарку.
Инструменты для веб-скрапинга с открытым исходным кодом: Python Developer Toolkit
Инструменты для веб-скрапинга с открытым исходным кодом: Python Developer Toolkit
Веб-скрейпинг, как мы все знаем, это дисциплина, которая развивается с течением времени. Появляются все более сложные средства борьбы с ботами, а...
Библиотека для работы с мороженым
Библиотека для работы с мороженым
Лично я попрощался с операторами print() в python. Без шуток.
Эмиссия счетов-фактур с помощью Telegram - Python RPA (BotCity)
Эмиссия счетов-фактур с помощью Telegram - Python RPA (BotCity)
Привет, люди RPA, это снова я и я несу подарки! В очередном моем приключении о том, как создавать ботов для облегчения рутины. Вот, думаю, стоит...
Пошаговое руководство по созданию собственного Slackbot: От установки до развертывания
Пошаговое руководство по созданию собственного Slackbot: От установки до развертывания
Шаг 1: Создание приложения Slack Чтобы создать Slackbot, вам необходимо создать приложение Slack. Войдите в свою учетную запись Slack и перейдите на...
1
2
52
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Setattr(list_usr, editData, databaru) не работает, потому что в этом случае editData = "Alamat", но list_usr имеет свойство "alamat". вы должны везде использовать строчные буквы «alamat», поэтому измените последнюю строку в jenisData на «alamat»: «alamat»

Я уже изменил программу на более простую, сэр, но все еще не дал ожидаемого результата

user512512af 10.01.2023 23:28

Большое спасибо, сэр, хотя вопрос закрыт, но ваш ответ решает проблему

user512512af 10.01.2023 23:32

Другие вопросы по теме