Найти - Пользователи
Полная версия: Где ошибка?
Начало » Python для новичков » Где ошибка?
1
mixtaper
Подскажите пожалуйста, где ошибка?

from Tools.scripts.treesync import raw_input
m = raw_input("Введите 1 для вызова первой функции: ")
if m == "1":
    def f_print():
        return "Вы ввели число 1"
else:
    def f_print():
        return "Альтернативная функция"
print (f_print())
    return r

Каждый раз выводит одно и тоже что бы задал
JOHN_16
Ошибка во всем. Но видимо вы хотели фабрику функции, как то так:
# -*- coding: utf-8 -*-
def factory_func(value):
    def f():
        return value
    return f
m = raw_input("Введите 1 для вызова первой функции: ")
if m == "1":
    f_print = factory_func(u'Вы ввели число 1')
else:
    f_print = factory_func(u'Альтернативная функция')
print(f_print())
mixtaper
Этот пример есть в книге Прохоренок, но у меня он не выполняется

не понимаю, я тоже ввожу 1 и выходит альтернативная функция
Nikulio
fix

Первое предупреждение: оффтоп,ответ не по существу, пренебрежительное высказывание в адрес тех кто использует все еще актуальную версию Питона


mixtaper
А как будет в 3 выглядеть?
mixtaper
Сюда же ещё один вопрос добавлю…
a = []
a.append(input())
i = 0
while a[i] != 0:
    print(a[i])
    a.append(input())
    i += 1

пишет, что попытка считать из входных данных, которые уже закончились

как так то, есть же ограничение в ноль?!
mixtaper
Почему программа не прерывается, когда я ввожу 0
Romissevd
А вы посмотрите тип объекта, который вы добавляете в конец списка…
P.S. ‘0’ != 0

FIX: правильно не =! , а !=
orionit
mixtaper
Почему программа не прерывается, когда я ввожу 0
Вы вводите не 0, а ‘0’ т.е не число, а строку вот он и не реагирует.
Вот так будет работать.
a = []
a.append(int(input()))
i = 0
while a[i] != 0:
    print(a[i])
    a.append(input())
    i += 1	
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB