Загрузка...

Не могу понять Python задачу((

Тема в разделе Python создана пользователем hotabuchic 24 фев 2020. 944 просмотра

  1. hotabuchic
    hotabuchic Автор темы 24 фев 2020 0 2 мар 2018
    Написать функцию ask_password(login, password, success, failure), которая получает логин и пароль пользователя и проверяет их правильность. Пароль считается правильным, если в нём содержится ровно три английские гласные буквы (гласными считать буквы a,e,i,o,u,y) и ровно такой же набор согласных (все буквы, кроме перечисленных шести), как в логине. Порядок и количество согласных также должно совпадать. Логин и пароль могут передаваться в любом регистре, однако символы, написанные в разных регистрах, считаются одинаковыми. Не будет ошибкой, если вы все введённые символы логина и пароля, сразу приведете к нижнему регистру.

    Пример: для логина “login” подойдут пароли “aaalgn” и “luagon“.

    Если пароль правильный, функция должна вызвать коллбэк success, передав ему в качестве аргумента логин. А если пароль был неверный - failure, передав ему в качестве аргументов логин и сообщение об ошибке (в таком порядке). Сообщение об ошибке должно быть одним из трёх вариантов:
    • “Wrong number of vowels”, если в пароле неверное число гласных;
    • “Wrong consonants”, если в пароле набор согласных отличается от набора согласных логина;
    • “Everything is wrong”, если оба условия нарушены.
    Также напишите функцию main(login, password), которая вызывает написанную функцию ask_password так, чтобы в случае успеха она печатала “Привет, {логин}!”, а в случае ошибки – “Кто-то пытался притвориться пользователем {логин}, но в пароле допустил ошибку: {текст ошибки, большими буквами}.”.

    Пример 1
    Ввод
    main("anastasia", "nsyatos")
    Вывод
    Привет, anastasia!
    Пример 2
    Ввод
    main("eugene", "aanig")
    Вывод
    Кто-то пытался притвориться пользователем eugene, но в пароле допустил ошибку: WRONG CONSONANTS.
    Пример 3
    Ввод
    ask_password("anastasia", "nsyatos", lambda login: print('super'), lambda login, err: print('bad'))
    Вывод
    super

    Не могу понять как должна работать переменная success и failure, что с ними должно происходить, и что должно с ними происходить в функции main((

    Вот мой код:
    [IMG]
     
  2. sesu
    sesu 24 фев 2020 Ты не умеешь писать код 114 17 ноя 2019
    А что сложного? Просто эти коллбеки обычная обертка, видишь же , лямбда функции передаются в аргументы функции.
     
  3. TooNotty
    TooNotty 24 фев 2020 33 2 авг 2019
    я вот тоже эти задачи решал дохуя, но так и не понял для чего мне эти задачи.
    есть ли способы продвигаться дальше по питону?
     
  4. sesu
    sesu 24 фев 2020 Ты не умеешь писать код 114 17 ноя 2019
    Что значит дальше?)
     
  5. hotabuchic
    hotabuchic Автор темы 24 фев 2020 0 2 мар 2018
    ну просто смотри тип у меня же в main должен быть вызов этой функции, а что у меня будет передаваться в параметры success и failure???
     
  6. sesu
    sesu 24 фев 2020 Ты не умеешь писать код 114 17 ноя 2019
    Ну ты передаешь в аргумент лишь сигнатуры функций, ты можешь их вызывать да. Допустим x = function и x ты можешь вызывать как x()
     
  7. TooNotty
    TooNotty 24 фев 2020 33 2 авг 2019
    ну не всё же время задачки решать. куда двигаться?
     
  8. sesu
    sesu 24 фев 2020 Ты не умеешь писать код 114 17 ноя 2019
    Ну , а куда ты хочешь? Изучай любую тебе интересную предметную область, хочешь идти в бэк - изучай как работает рестфул апи, изучай асинхронное программирование. Хочешь идти в дип лернинг , пожалуйста, изучай матан и основные положения нейронок(Что такое активационная функция, узнай про градиентный спуск), узнай как работать с данными(pandas), обучи модельку на какой нибудь либе, тот же keras или tensorflow.
     
  9. hotabuchic
    hotabuchic Автор темы 24 фев 2020 0 2 мар 2018
    ну смотри у меня же в main вызывается ask_password и какое значение должно попадать в success и failure если они у меня нигде не указываются их значения?
     
  10. sesu
    sesu 24 фев 2020 Ты не умеешь писать код 114 17 ноя 2019
    Ну у тебя в третьем примере лямбда функция передается
     
  11. hotabuchic
    hotabuchic Автор темы 24 фев 2020 0 2 мар 2018
    а в первом и втором?
     
  12. sesu
    sesu 24 фев 2020 Ты не умеешь писать код 114 17 ноя 2019
    ну значит ты должен указать их по умолчанию, в примере же написано, допустим по умолчанию функция имплементируется на вызов Привет $name. Просто как корированые переменные указываешь
    --- Сообщение объединено с предыдущим 24 фев 2020
    Что то вроде function(success = lambda : 'Привет $name'')
     
    24 фев 2020 Изменено
Загрузка...
Top