Как исправить конфликт динамического присваивания переменной в Python - PullRequest
0 голосов
/ 28 мая 2019

Как мне исправить присвоение переменной в этом коде Python?Итак, у меня есть этот код Python:

with open('save.data') as fp:
    save_data = [line.split(' = ') for line in fp.read().splitlines()]
with open('brute.txt') as fp:
    brute = fp.read().splitlines()
for username, password in save_data:
    if username in brute:
        break
else:
    print("didn't find the username")

Хорошо, быстрое объяснение;save.data - это файл, который содержит переменные игры в Batch-файле (такие как имя пользователя, hp и т. д.)).

save.data:

username1 = PlayerName
password1 = PlayerPass
hp = 100

Как я уже говорил, это игра с пакетным файлом, поэтому не нужно заключать строки в кавычки.

brute.txt:

username
username1
password
password1
health
hp

Итак, когда код Python выполняется, он загружает содержимое двух файлов и сохраняет их в списке, а затем перебирает имя пользователя и пароль, «перебивая» их, пока они не совпадут с тем, что на brute.txt,и они назначают себя автоматически.Но проблема в назначении, когда я пытаюсь print их (переменные), это происходит:

## We did all the previous code
...
>>> print(save_data)

[['username', 'PlayerName'], ['password', 'PlayerPass'], ['health', '100']]
>>> print("Your username is: " + username)

username
>> print("Your password is: " + password)

PlayerName
>> print("Your health is: " + hp)

NameError: name 'hp' is not defined

Итак, есть идеи о том, как исправить конфликт назначения?Если вы что-то не поняли, пожалуйста, прокомментируйте это, и я проясню это.

1 Ответ

1 голос
/ 28 мая 2019

и они присваивают себя автоматически

Это не вещь.Я полагаю, вы представляете, что псевдопеременные, псевдо-определенные в save.data, станут переменными Python в вашей программе.Они не будут.

Вместо этого анализируйте их в структуру данных и извлекайте значения из структуры данных.

Например,

with open('save.data') as fp:
    save_data = dict([line.split(' = ') for line in fp.read().splitlines()])

...

print(save_data["hp"])
...