Как вы используете, если операторы с текстовыми документами Python, которые читаются через CSV? >

Параметры при вызове функций в 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
-1
задан Derp Diamonds 16 January 2019 в 17:00
поделиться

3 ответа

Я думаю, что ваша проблема с этой строкой:

if user1UsernameInput == users[0]:

, как вы ранее создали users, который является списком кортежей, следовательно, user [0] означает кортеж (первый кортеж из списка), возможно, вы там отсутствует второй индекс, и он должен быть

if user1UsernameInput == users[0][0]:

РЕДАКТИРОВАТЬ: Исправлено, как предложено в @Idlehands, спасибо.

0
ответ дан Daweo 16 January 2019 в 17:00
поделиться

Вы сравниваете (только) имя пользователя с кортежем, который содержит имя пользователя и пароль, как два элемента.

Вы изучаете только первый элемент списка.

Другими словами, вы эффективно делаете

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")
0
ответ дан tripleee 16 January 2019 в 17:00
поделиться

Решение довольно тривиально. Вы сравниваете строку с кортежем.

ваш список выглядит следующим образом 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:
0
ответ дан mad_ 16 January 2019 в 17:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: