#python #python-3.x
#python #python-3.x
Вопрос:
Я довольно новичок в Python, и в качестве проекта для самосовершенствования я решил создать простую платформу с обновляемым пользовательским словарем паролей. Эта работа все еще продолжается!Проблема возникает при создании нового идентификатора пользователя, а затем попытке получить доступ к этому идентификатору пользователя. Я использую python 3.7.
Вот ошибка: Трассировка (последний вызов last): строка 37, в учетной записи if в accounts: TypeError: аргумент типа ‘NoneType’ не может быть повторен
import sys
accounts = {'Trace': 'Jollyrancher5', 'Brian': 'Kitties82', 'Taylor': 'Flower15'}
while True:
print('Please select an option.n1. Create new account.n2. Enter existing account.')
choice = input()
if choice == '1':
print('Please enter an account name')
new_account = input()
if new_account not in accounts.keys():
print('Please enter a password.')
new_pass = input()
accounts = accounts.update({new_account: new_pass})
print('Your new User ID is: ' new_account '.')
print('Your new password is: ' new_pass '.')
print('Please store this information for safe keeping.')
print('Type OK to continue.')
while True:
next = input()
if next == 'OK' or next == 'ok':
break
else:
print('Invalid entry. Please type OK.')
else:
print('Account name taken. Please enter a different account name.')
elif choice == '2':
break
else:
print('Not a valid entry.')
account = ''
password = ''
denial = 0
while True:
print('Please enter User ID.')
account = input()
if account in accounts:
break
else:
print('User ID not recognized.')
while True:
print('Please enter password.')
password = input()
if password == accounts[account]:
break
else:
password != accounts[account]
denial = 1
if denial == 3:
print('Account locked.')
input()
sys.exit()
print('Access Granted.nYour account balance is $1,000,000.00.')
input()
Комментарии:
1. Строка 13 возвращает
None
just useaccounts.update(...)
notaccounts = accounts.update(...)
2.
accounts = accounts.update({...})
->accounts.update({...})
.
Ответ №1:
Проблема в строке № 13:
accounts = accounts.update({new_account: new_pass})
Это возвращается None
по мере выполнения обновления на месте. [смотрите документы] Вместо этого используйте:
accounts.update({new_account: new_pass})
Обновление будет выполнено без необходимости переназначать значение.
Комментарии:
1. Ах, так просто, как я этого не понял. Большое вам спасибо!
2. @Jab Наконец-то я получил свой значок с золотым тегом python 🙂 и 16k, наконец, тоже 🙂
Ответ №2:
Удалите эту строку:-
`accounts = accounts.update({new_account: new_pass})`
добавьте эту строку:-
`while True:
print('Please enter User ID.')
account = input()
accounts.update({new_account:new_pass})
if account in accounts:`
эта ошибка вызвана тем, что ваш словарь не обновлялся, и именно поэтому первым значением, которое он получал, было None, следовательно, была сгенерирована ошибка NoneType.
Поддержите, если вы поняли мой ответ.