Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Python где ошибка? Приложение Регистрация и Авторизация

сорри не скажу Ученик (53), на голосовании 2 месяца назад
Где ошибка?

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","Пароль или Логин не совпадают")
Голосование за лучший ответ
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.
Похожие вопросы