Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 4, 2015 13:58:41

Pashka
Зарегистрирован: 2015-02-04
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Задания с Codecademy

Здравствуйте.
Начал изучать Python, и наткнулся на сайтик codecademy, на котором после изучения теории предлагается решить практическую задачку. Все шло хорошо, но вот застрял на одной. Подскжите, где я туплю?
Задание:
1. First, def a function, shut_down, that takes one argument s. Don't forget the parentheses or the colon!
2. Then, if the shut_down function receives an s equal to “yes”, it should return “Shutting down”
3. Alternatively, elif s is equal to “no”, then the function should return “Shutdown aborted”.
4.Finally, if shut_down gets anything other than those inputs, the function should return “Sorry”

Мое решение:

    def shut_down(s):                   #создаем функцию  shut_down с переменной s
    return s
    if s=="yes":                           #если переменная s равна yes, то
        return "Shutting down"        # возвращается значение "Shutting down"
    elif s=="no":                          #если переменная s равна no, то
        return "Shutdown aborted"  # возвращается значение "Shutdown aborted"
    else:                                     # если ни одно условие не выполняется
        return "Sorry"                    #возвращается значение "Sorry"
Выдает следующую ошибку:
Oops, try again. Your function failed on the message yes. It returned ‘yes’ when it should have returned ‘Shutting down’

Где моя ошибка, помогите

Отредактировано Pashka (Фев. 4, 2015 16:22:55)

Офлайн

#2 Фев. 4, 2015 15:33:35

botinag
Зарегистрирован: 2014-02-20
Сообщения: 179
Репутация: +  35  -
Профиль   Отправить e-mail  

Задания с Codecademy

def shut_down(s):
    if s == 'yes':
        return 'Shutting down'
    elif s == 'no':
        return 'Shutdown aborted'
    else:
        return 'Sorry'

Офлайн

#3 Фев. 4, 2015 16:57:00

Pashka
Зарегистрирован: 2015-02-04
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Задания с Codecademy

botinag
спасибо. заработало
можете пояснить, почему return s было лишним?

Отредактировано Pashka (Фев. 4, 2015 16:59:45)

Офлайн

#4 Фев. 4, 2015 19:09:59

botinag
Зарегистрирован: 2014-02-20
Сообщения: 179
Репутация: +  35  -
Профиль   Отправить e-mail  

Задания с Codecademy

def shut_down(s):                   #создаем функцию  shut_down с переменной s
   return s
...
т.к. ваша функция первой же строкой возвращает что-то (в данном случае аргумент), все последующее за строкой return s просто игнорируется.

Офлайн

#5 Фев. 4, 2015 21:33:30

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Задания с Codecademy

а еще можно else убрать

def shut_down(s):                   #создаем функцию  shut_down с переменной s
    if s=="yes":                           #если переменная s равна yes, то
        return "Shutting down"        # возвращается значение "Shutting down"
    elif s=="no":                          #если переменная s равна no, то
        return "Shutdown aborted"  # возвращается значение "Shutdown aborted"
    return "Sorry"                    # если ни одно условие не выполняется возвращается значение "Sorry"



————————————————
-*- Simple is better than complex -*-

Офлайн

#6 Фев. 4, 2015 21:55:16

Alen
Зарегистрирован: 2013-08-01
Сообщения: 373
Репутация: +  49  -
Профиль   Отправить e-mail  

Задания с Codecademy

А еще можно if/else конструкцию убрать.

def shutdow(key):
    d = {'yes': 'Shutting down', 'no': 'Shutdown aborted'}
    return d.get(key) or 'Sorry'

Офлайн

#7 Фев. 4, 2015 22:18:44

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Задания с Codecademy

а ще можно и доп словарь не использовать

def shut_down(s):
    return "Shutting down" * (s == 'yes') + "Shutdown aborted" * (s == 'no') or "Sory"



————————————————
-*- Simple is better than complex -*-

Офлайн

#8 Фев. 5, 2015 15:40:58

Pashka
Зарегистрирован: 2015-02-04
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Задания с Codecademy


botinag
Спасибо за пояснение

terabayt
а еще можно else убрать
Alen
А еще можно if/else конструкцию убрать.
terabayt
а ще можно и доп словарь не использовать

Спасибо за вашу помощь. Но я так еще не умею сокращать код, но в копилочку уже положил

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version