Vasily Ignatenko
Знаток
(405)
3 месяца назад
Ваш код Python для авторизации выглядит в основном правильно, но есть несколько моментов, которые могут вызвать проблемы:
1. Удаление символов новой строки: Когда вы читаете строки из файла с помощью `readlines()`, каждая строка будет заканчиваться символом новой строки (`\n`). Вам нужно будет удалить этот символ перед сравнением с `entry_logint` и `entry_passwordt`.
2. Срезы строк: В вашем текущем условии `if`, вы используете срезы `[0::1]`, который фактически возвращает полную строку. Если вы хотите сравнить строки полностью, срезы не нужны.
3. Сравнение строк: Убедитесь, что строки в файле `register.txt` точно соответствуют тому, что вводит пользователь, включая регистр букв.
Вот исправленная версия функции с учетом этих моментов:
```python
def Authorization():
with open("register.txt", "r") as x:
register_file = x.readlines()
entry_logint = entry_login.get().strip()
entry_passwordt = entry_password.get().strip()
for i in range(0, len(register_file), 2):
logins = register_file[i].strip()
passwords = register_file[i+1].strip()
if entry_logint == logins and entry_passwordt == passwords:
print("Успешная авторизация")
break
else:
messagebox.showwarning("Warning", "Пароль или Логин не совпадают")
```
Обратите внимание, что я использовал метод `.strip()` для удаления символов новой строки и пробелов по краям строк. Также я использовал оператор `with` для открытия файла, который автоматически закроет файл после выхода из блока `with`. Это считается хорошей практикой работы с файлами в Python.
def Authorization():
x = open("register.txt", "r")
register_file=x.readlines()
x.close()
entry_logint=str(entry_login.get())
entry_passwordt=str(entry_password.get())
for i in range(0,len(register_file),2):
print(register_file[i],register_file[i+1])
logins=register_file[i]
passwords=register_file[i+1]
if entry_logint==logins[0::1] and entry_passwordt==passwords[0::1]:
print(1)
else:
messagebox.showwarning("Warning","Пароль или Логин не совпадают")