Параметры при вызове функций в PowerShell (все версии) разделены пробелами, а не запятыми. Кроме того, скобки полностью не нужны и вызовут ошибку синтаксического анализа в powershell 2.0 (или более поздней), если Set-StrictMode
активен. Параметризованные аргументы используются только в .NET-методах.
function foo($a, $b, $c) {
"a: $a; b: $b; c: $c"
}
ps> foo 1 2 3
a: 1; b: 2; c: 3
Я думаю, что ваша проблема с этой строкой:
if user1UsernameInput == users[0]:
, как вы ранее создали users
, который является списком кортежей, следовательно, user [0] означает кортеж (первый кортеж из списка), возможно, вы там отсутствует второй индекс, и он должен быть
if user1UsernameInput == users[0][0]:
РЕДАКТИРОВАТЬ: Исправлено, как предложено в @Idlehands
, спасибо.
Вы сравниваете (только) имя пользователя с кортежем, который содержит имя пользователя и пароль, как два элемента.
Вы изучаете только первый элемент списка.
Другими словами, вы эффективно делаете
users = [('user1', 'pass1'), ('user2', 'pass2')]
compare_against = users[0]
# compare_against is now the tuple ('user1', 'pass1')
if 'user1' == compare_against:
pass # can never reach here
Вы, очевидно, хотите пройтись по всем парам пользователя и пароля и проверить, идентичны ли они той паре, которую ввел пользователь.
input_pair = (user1UsernameInput, user1PasswordInput)
for user_pass in users:
if input_pair == user_pass:
print("Correct")
Решение довольно тривиально. Вы сравниваете строку с кортежем.
ваш список выглядит следующим образом users=[('user_name','password')]
, и users[0]
будет первым элементом в списке, который является кортежем ('user_name','password')
, и поэтому строка 'user_name'
никогда не будет равна ('user_name','password')
попробуйте с users[0][0]
if user1UsernameInput == users[0][0]:
print("Correct")
return username
else:
print("CREATE NEW USER")
Другой способ - сравнить кортеж
if (user1UsernameInput,user1PasswordInput)==users[0]
Если файл / список состоит из нескольких имени пользователя и пароля. Лучше использовать in
оператора
if (user1UsernameInput,user1PasswordInput) in users: