Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 16, 2017 21:41:34

artyrpodoprigora
Зарегистрирован: 2017-04-16
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Помощь с примером

Увидел в книге, захотел повторить, но выдало ошибку.
В чём проблема?

 passw = input("Введите пароль:")
def test_passw(p):
    def deco(f)
        if p == "10":
            return f
        else:
            return lambda: "Доступ закрыт"
        return deco
@test_passw(passw)
def func():
    return "Доступ открыт"
print(func())

Отредактировано artyrpodoprigora (Апрель 16, 2017 21:42:03)

Офлайн

#2 Апрель 16, 2017 21:56:57

4kpt_V
От: Харьков
Зарегистрирован: 2017-02-19
Сообщения: 299
Репутация: +  12  -
Профиль   Отправить e-mail  

Помощь с примером

Как минимум покажите ошибку.
Как максимум у Вас неверные отступы. 8 строка

Офлайн

#3 Апрель 16, 2017 22:21:24

artyrpodoprigora
Зарегистрирован: 2017-04-16
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Помощь с примером

4kpt_V
Как минимум покажите ошибку.Как максимум у Вас неверные отступы. 8 строка
Спасибо, в этом и была проблема
Не заметил

Офлайн

#4 Апрель 17, 2017 06:12:43

old_monty
Зарегистрирован: 2015-09-27
Сообщения: 238
Репутация: +  20  -
Профиль   Отправить e-mail  

Помощь с примером

artyrpodoprigora
Спасибо, в этом и была проблема
Не заметил
Еще одну проблему не заметили. В 3-й строке после def deco(f) должно быть двоеточие.

Офлайн

#5 Апрель 17, 2017 10:57:06

troppii
Зарегистрирован: 2017-04-17
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Помощь с примером

Добрый день !
Подскажите где ошибся?
Все время выводит
print(“a*8.6/100=”,a*8.6/100)

Прикреплённый файлы:
attachment ошибка.jpg (113,4 KБ)

Офлайн

#6 Апрель 17, 2017 11:33:01

old_monty
Зарегистрирован: 2015-09-27
Сообщения: 238
Репутация: +  20  -
Профиль   Отправить e-mail  

Помощь с примером

troppii
У вас переменная с ссылается на тип int (c = int(input(…)), а проверка в if и elif делается для типа str (if c == “1”, elif c == “2”). Приведите все к какому-либо одному типу.

Офлайн

#7 Апрель 17, 2017 13:46:14

troppii
Зарегистрирован: 2017-04-17
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Помощь с примером

old_monty
troppiiУ вас переменная с ссылается на тип int (c = int(input(…)), а проверка в if и elif делается для типа str (if c == “1”, elif c == “2”). Приведите все к какому-либо одному типу.
а можно чуть развернутее ответ?)

Офлайн

#8 Апрель 17, 2017 14:41:06

old_monty
Зарегистрирован: 2015-09-27
Сообщения: 238
Репутация: +  20  -
Профиль   Отправить e-mail  

Помощь с примером

troppii
а можно чуть развернутее ответ?
Ну смотрите, вот ваш код:
 c = int(input("Если Зима, ставь 1, если Лето, то ставь 2")) # в результате c указывает на целое число (тип int) 1 или 2
if c  == "1": # проверяет, что с - это строка "1" (тип str)
...
elif c  == "2": # проверяет, что c - это строка "2" (тип str) 
...
Функция input() сама по себе возвращает тип str - строка. А int(input()) - это уже явное приведение данных типа str к типу int.
Еще на эту тему:
 >>> # Пробуем играться с типами int и str в интерактивном режиме интерпретатора Python
>>> 1+2
>>> 3
>>> "1" +"2"
>>> '12' 
>>> int("2")
2
>>> str(2)
'2'
>>>
Строки и целые числа - это разные типы данных. Разные, Карл! )

Отредактировано old_monty (Апрель 17, 2017 15:29:55)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version