Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.79/163: Рейтинг темы: голосов - 163, средняя оценка - 4.79
10 / 59 / 21
Регистрация: 12.03.2017
Сообщений: 514

Функцию, запроса логина и пароля

27.01.2018, 16:59. Показов 32020. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ваша задача – написать функцию askPassword(success, failure), которая спрашивает у пользователя логин и пароль и проверяет его правильность. Пароль считается правильным, если в нём содержится ровно три английские гласные буквы (гласными считать буквы a,e,i,o,u,y) и ровно такой же набор согласных (все буквы, кроме перечисленных шести), как в логине. Порядок и количество согласных также должно совпадать. Считается, что логин и пароль написаны в нижнем регистре. Не будет ошибкой, если вы все введённые символы логина и пароля, сразу приведете к нижнему регистру.
Пример: для логина “login” подойдут пароли “aaalgn” и “luagon“.
Если пароль правильный, функция должна вызвать коллбэк success, передав ему в качестве аргумента логин. А если пароль был неверный - failure, передав ему в качестве аргументов логин и сообщение об ошибке (в таком порядке). Сообщение об ошибке должно быть одним из трёх вариантов:

“Wrong number of vowels”, если в пароле неверное число гласных;
“Wrong consonants”, если в пароле набор согласных отличается от набора согласных логина;
“Everything is wrong”, если оба условия нарушены.
Также напишите функцию main(), которая вызывает написанную функцию так, чтобы в случае успеха она печатала “Привет, {логин}!”, а в случае ошибки – “Кто-то пытался притвориться пользователем {логин}, но в пароле допустил ошибку: {текст ошибки, большими буквами}.”.
Внимание! При вводе логина и пароля НЕ выводите подсказку для пользователя вида “Введите логин:”, так как это собьет с толку проверяющую систему.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.01.2018, 16:59
Ответы с готовыми решениями:

Проверка логина и пароля
Мир всем и привет ! помогите пожалуйста как убрать сообщение в цикле я хочу сделать проверку логина и пароля ну в общем так ...

Хранение логина и пароля
Всем доброго времени суток. В общем возник вопрос, как хранить пароли и логины от Яндекса. Хранить в БД не вариант, ибо любая система может...

Проверка логина и пароля
Имеется программа которая добавляет логин и пароль человека в файл под названием out.txt, теперь требуется программу ''Проверка логина и...

6
 Аватар для Lodhel
5 / 5 / 3
Регистрация: 13.01.2018
Сообщений: 45
30.01.2018, 23:01
Можно еще улучшить код
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# -*- coding: utf-8 -*-
import re
 
login = input()
password =input()
 
test = True
 
def main():
    if test == True:
        print ('Привет {}'.format(login))
    else: print ('Кто-то пытался притвориться пользователем {}, но в пароле допустил ошибку:{}.'.format(login, name_error))
 
 
def askPassword(success, failure):
    global test
    global name_error
    vowels = ('e', 'y', 'u', 'i', 'o', 'a')
    kolvo_vowels = 0
    for i in vowels:
        kolvo_vowels += int(failure.count(i))
    
    if kolvo_vowels > 2:
        consonants = int(len(re.findall(r'\w', failure))) - int(len(re.findall(r'\d', failure))) - kolvo_vowels
        if consonants == kolvo_vowels:
            if consonants > 2:
                return success
                main()
            else:
                test = False
                name_error = str('Wrong consonants').upper()
                main()
                print ('{} Wrong consonants'.format(success))
                return failure
        else:
            test = False
            name_error = str(Everything is wrong).upper()
            main()
            print ('{} Everything is wrong'.format(success))
            return failure
    else:
        test = False
        print ('{} Wrong number of vowels'.format(success))
        name_error = str('Wrong number of vowels').upper()
        main()
        return failure
     
askPassword(login, password)
0
Модератор
Эксперт функциональных языков программирования
3134 / 2281 / 469
Регистрация: 26.03.2015
Сообщений: 8,878
31.01.2018, 00:32
Lodhel,
Вы согласные неправильно проверяете. Согласные в пароле должны быть такие же, как в логине.
Аргументами функции askPassword должны быть функции.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
vowels = set('aeiouy')
consonants = set(chr(n) for n in range(ord('a'), ord('z') + 1) if chr(n) not in vowels)
messages = ['', 'Wrong number of vowels', 'Wrong consonants', 'Everything is wrong']
 
def check_passord(login, password):
    def filter_consonants(s):
        return [c for c in s if c in consonants]
    r1 = 0 if sum(1 for c in password if c in vowels) == 3 else 1
    r2 = 0 if filter_consonants(login) == filter_consonants(password) else 2
    return messages[r1 + r2]
 
def askPassword(success, failure):
    login =    input().lower()
    password = input().lower()
    message = check_passord(login, password)
    if message:
        failure(login, message)
    else:
        success(login)
              
def main():
    def say_hello(login):
        print(f'Привет {login}')
    def report_error(login, message):
        print(f'Кто-то пытался притвориться пользователем {login}, но в пароле допустил ошибку: {message}.')
    askPassword(say_hello, report_error)
0
10 / 59 / 21
Регистрация: 12.03.2017
Сообщений: 514
31.01.2018, 17:40  [ТС]
Выводит ошибку!


Вердикт Я.Контест: runtime-error

ompiling/file main.py || true


stderr:

Тест 1

Ресурсы 31ms/3.60Mb

Ввод

main
anastasia
nsyatos

Правильный ответ

Привет, anastasia!

Stderr

make: *** [run] Error 1

Сообщение чекера

Completion status: ABNORMAL_EXIT
Term sig: null
Error code: 2
0
Модератор
Эксперт функциональных языков программирования
3134 / 2281 / 469
Регистрация: 26.03.2015
Сообщений: 8,878
31.01.2018, 18:26
Цитата Сообщение от Pavlin234 Посмотреть сообщение
Выводит ошибку!
У меня работает.
0
10 / 59 / 21
Регистрация: 12.03.2017
Сообщений: 514
31.01.2018, 18:35  [ТС]
Можете скинуть фотку прогу!
0
Модератор
Эксперт функциональных языков программирования
3134 / 2281 / 469
Регистрация: 26.03.2015
Сообщений: 8,878
31.01.2018, 20:39
Вся прога в предыдущем сообщении. Нужно добавить одну строку - вызов функции main().
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
31.01.2018, 20:39
Помогаю со студенческими работами здесь

Генерация id, логина и пароля
Помогите, пожалуйста, выполнить задание. Создайте функцию генерации id, функцию генерации логина и функцию генерации пароля. id -...

Проверка логина и пароля
import time logins = passwords = a = 1 while a <= 3: print('Введите логин.') l = input() print('Введите...

Диалог запроса логина и пароля
Уважаемые программисты, не подскажите как вызвать системный диалог запроса логина и пароля у пользователя через Win32 Api и в какой длл он...

Нет запроса на ввод логина и пароля
Здраствуйте еще раз! Я всё бьюсь со своей базой! Я положил её(.mdb) на сетевой диск, задал пароль админу и себе. Почему когда я...

Авторизация в IIS без запроса логина и пароля в браузере
Вот какой вопрос: есть сервер W2k, на нем крутится IIS, есть пользователи, которые при загрузке своих машин вводят сетевые логины-пароли и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru