Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.54/54: Рейтинг темы: голосов - 54, средняя оценка - 4.54
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755

Как работают функции?

06.10.2020, 19:17. Показов 12121. Ответов 138
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как подправить, чтобы в функцию tr передавался параметр из функции buba, вводимый пользователем?
Python
1
2
3
4
5
6
7
8
9
10
11
12
def buba():
    print("Введите число ", end = '')
    num = int(input())
    print(num)
 
        
def tr(num):
    hi = num+1
    print(hi)
 
buba()
tr()
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.10.2020, 19:17
Ответы с готовыми решениями:

Как работают функции?
Как заменить global на что то другое? def getInput(): global k k=int(input('Введите, сколько у Вас есть ')) getInput() ...

Как работают встроенные функции?
Почему первая строка рисует сердечко, а вторая выдает ошибку?print(chr(3)) print(chr(10045)) >>> print(chr(3)) ♥ ...

Как работают функции в python?
Извините за такой тупой вопрос, но мне нужно написать небольшой скрипт на питоне. и я не помню, как именно работают функции, помню что...

138
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
31.10.2020, 20:09  [ТС]
Студворк — интернет-сервис помощи студентам
В книге "Python для сетевых инженеров" есть такой фрагмент:
Python
1
2
3
4
5
6
7
8
9
10
11
12
def ignore_command(command):
    '''
    Функция проверяет содержится ли в команде слово из списка ignore.
    * command - строка. Команда, которую надо проверить
    * Возвращает True, если в команде содержится слово из списка ignore, False - если нет
    '''
    ignore = ['duplex', 'alias', 'Current configuration']
 
    for word in ignore:
        if word in command:
            return True
    return False
Я сделал так:
Python
1
2
p = ignore_command('duplex1')
print(p)
Получаю True
И от такого получаю True
[PYTHON]
Python
1
2
p = ignore_command('duplex1')
print(p)
А от такого получаю False
Python
1
2
p = ignore_command('dupdhglex1')
print(p)
Почему добавление единицы к строке 'duplex' не изменяет результат?
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
31.10.2020, 20:32

Не по теме:

А, это ты…


Python
1
2
3
4
>>> 'duplex' in 'duplex1'
True
>>> 'duplex' == 'duplex1'
False
1
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
20.12.2020, 16:31  [ТС]
Прошу подсказать, как поправить, чтобы заработало?
Python
1
2
3
4
5
6
7
8
9
10
11
class gotovka:
    def __init__(self):
        self.dobavki = "перец, майонез"
 
    def buterbrod(self, lomtik):
        print("Берем ломтик хлеба")
        print("Дообавляем сверху ломтик " + self.lomtik)
        print("В качестве приправы добавляем " + self.dobavki)
 
buter_s_vetchinoi = gotovka
buter_s_vetchinoi.buterbrod("ветчины")
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
20.12.2020, 16:57
Цитата Сообщение от supmener Посмотреть сообщение
buter_s_vetchinoi = gotovka
Объект создай

Добавлено через 1 минуту
И у тебя поле self.lomtik не существует - будет ошибка
0
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
20.12.2020, 17:02  [ТС]
А как должен выглядеть полный код?
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
20.12.2020, 17:05
Как напишешь - так и будет выглядеть.
0
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
20.12.2020, 17:23  [ТС]
А что, по-разному можно сделать?
0
5184 / 1074 / 150
Регистрация: 29.01.2013
Сообщений: 6,263
20.12.2020, 19:44
supmener, любую проблему в программировании можно решить как минимум двумя способами
0
 Аватар для Semen-Semenich
5239 / 3483 / 1176
Регистрация: 21.03.2016
Сообщений: 8,314
20.12.2020, 19:45

Не по теме:

Цитата Сообщение от Alli_Lupin Посмотреть сообщение
любую проблему в программировании можно решить как минимум двумя способами
точно. либо почитать книжки и написать самому либо тупо замучать всех тупыми вопросами что бы вам уже готовый код написали.

1
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
20.12.2020, 20:10
Цитата Сообщение от supmener Посмотреть сообщение
Конспект веду
Вести конспект не эффективно, потом трудно в нем найти то, что Вам нужно.
Лично я веду базу данных.
Но самое простое, записывать информацию в текстовый редактор в формате таблицы.
Имя | Описание

Можно и больше полей, например так
Имя | Синтаксис | Описание

Во всех редакторах (если я не ошибаюсь) есть возможность поиска по подстроке.
В результате Вы потом в своей таблице быстро находите нужную Вам информацию.

В принципе можно использовать любую программу, куда можно записывать информацию в виде таблицы и потом осуществлять поиск нужного места в таблице.
1
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
21.12.2020, 18:25  [ТС]
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
buter_s_vetchinoi = gotovka
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
Как напишешь - так и будет выглядеть.
Добавить надо было скобки buter_s_vetchinoi = gotovka()
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
И у тебя поле self.lomtik не существует - будет ошибка
Не понимаю, что Вы имеете в виду?
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
21.12.2020, 18:26
Цитата Сообщение от supmener Посмотреть сообщение
Не понимаю, что Вы имеете в виду?
Ты код вообще не запускаешь? Запусти. Я в уме код компилирую и то вижу ошибку.
0
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
21.12.2020, 18:51  [ТС]
А, теперь понял. Надо было вместо self.lomtik написать lomtik. self.lomtik надо указывать только для работы с __init__?
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
21.12.2020, 18:53
Зачем тебе ООП, если ты не различаешь инкапсулированные поля класса и простые переменные?
0
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
21.12.2020, 22:52  [ТС]
Такие варианты тоже не работают.
Python
1
2
3
4
5
6
7
8
9
10
11
12
class gotovka:
    def __init__(self):
        self.dobavki = "перец, майонез"
 
    def buterbrod(self):
        print("Берем ломтик хлеба")
        print("Дообавляем сверху ломтик " + self.lomtik)
        print("В качестве приправы добавляем " + self.dobavki)
 
 
buter_s_vetchinoi = gotovka()
buter_s_vetchinoi.buterbrod("ветчины")
Python
1
2
3
4
5
6
7
8
9
10
11
12
class gotovka:
    def __init__(self):
        self.dobavki = "перец, майонез"
 
    def buterbrod(self):
        print("Берем ломтик хлеба")
        print("Дообавляем сверху ломтик " + self)
        print("В качестве приправы добавляем " + self.dobavki)
 
 
buter_s_vetchinoi = gotovka()
buter_s_vetchinoi.buterbrod("ветчины")
Добавлено через 4 минуты
Можно через self.lomtik подставить переменную из другого метода (в примерах темы не показанного).
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
22.12.2020, 06:25
Ну серьёзно, зачем тебе классы там, где достаточно функции?

Python
1
2
3
4
5
6
def make_buterbrod(lomtik, dobavki="перец, майонез"):
    print("Берем ломтик хлеба")
    print("Дообавляем сверху ломтик " + lomtik)
    print("В качестве приправы добавляем " + dobavki)
 
make_buterbrod("ветчины")
А теперь попробуй поменять добавки, не изменяя функцию.
2
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
22.12.2020, 11:05
supmener, Вы не верно используете ООП. В ООП существуют такие механизмы, как наследование и композиция (целое, части) Вы пытаетесь класс бутерброд превратить в процесс создания бутерброда. При этом процесс состоит из этапов. На лицо структура композиция. Процесс - это целое, а его этапы, это части процесса. Как сказал Рыжий Лис, здесь проще использовать функцию создания бутерброда. Но если в целях освоения ООП, то смотрите у Лутца пример на композицию, где рассматривается работа пиццерии.
А вообще то, название класса готовка, подразумевает поэтапный процесс создания бутерброда. А класс бутерброд должен описывать свойства бутерброда. У Вас же все наоборот, названия классов не соответствуют их содержанию.
1
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
22.12.2020, 11:12  [ТС]
Дело в том, что планировал в классе gotovka добавить потом функцию приготовления супа.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Gotovka:
    def __init__(self):
        self.dobavki = "перец, майонез"
 
    def buterbrod(self, lomtik):
        print("Берем ломтик хлеба")
        print("Добавляем сверху ломтик " + lomtik)
        print("В качестве приправы добавляем " + self.dobavki)
 
    def sup(self):
        print("варим из овощей вегетарианский суп")
        print("В качестве приправы добавляем " + self.dobavki)
 
gotovka = Gotovka()
gotovka.buterbrod("ветчины")
gotovka.sup()
Сейчас хотел бы узнать, как для функций бутерброда и супа добавить через декоратор:
Python
1
print("Посолим по вкусу при необходимости")
0
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
22.12.2020, 11:49
Цитата Сообщение от supmener Посмотреть сообщение
планировал в классе gotovka добавить потом функцию приготовления супа
Тогда класс Готовка должен описывать этапы процесса готовки, общие для любой готовки, и здесь нужно использовать композицию этапов готовки, причем каждый этап оформляется в виде класса. А приготовление бутерброда и супа будут тогда подклассами класса Готовка. Что бы решать такие задачи, нужно сначала изучить в ООП использование композиции. Как я сказал выше у Лутца есть раздел посвященный композиции, где в качестве примера рассматривается поэтапная работа пиццерии.
Когда освоите композицию, тогда беритесь решать такие задачи с помощью ООП.
Что касается декораторов, то это достаточно сложное понятие, там нужно хорошо улавливать взаимосвязи, возникающие при работе декоратора. Я уже давно занимался декораторами и подзабыл, как там работают взаимосвязи, позволяющие перед вызовом метода выполнять еще дополнительные действия. Повторно, уже в 5-ом издании мне до декораторов еще далеко.
Когда я разобрался как работает декоратор (на уровне, что бы его не просто использовать, а и создавать), я так и не смог объяснить другому человеку, как это все работает. Для того, что бы это понимать, нужно хорошо понимать несколько других достаточно сложных конструкций (понятий), которые используются при работе декоратора.

Добавлено через 14 минут
Под пониманием декоратора я подразумеваю не просто механическое его использование, а понимание почему он именно так работает.
Если не ошибаюсь, то смутно припоминаю, что работает механизм, когда при вызове метода, вместо него автоматически запускается декоратор, который при этом хранит в себе вызов исходного метода, и после выполнения дополнительных действий из декоратора, декоратор вызывает исходный метод. Вроде как то так. А с помощью каких инструментов вся эта автоматика работает, уже не помню.
1
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
22.12.2020, 12:33
Цитата Сообщение от supmener Посмотреть сообщение
Сейчас хотел бы узнать, как для функций бутерброда и супа добавить через декоратор:
Вынеси в отдельный приватный метод.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class Gotovka:
    def __init__(self):
        self.dobavki = "перец, майонез"
 
    def buterbrod(self, lomtik):
        print("Берем ломтик хлеба")
        print("Добавляем сверху ломтик " + lomtik)
        self._end()
 
    def sup(self):
        print("варим из овощей вегетарианский суп")
        self._end()
 
    def _end(self):
        print("В качестве приправы добавляем " + self.dobavki)
        print("Посолим по вкусу при необходимости")
 
gotovka = Gotovka()
gotovka.buterbrod("ветчины")
gotovka.sup()
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.12.2020, 12:33

Не работают некоторые функции php (phpinfo), простые конструкции типа for - работают
Здравствуйте. Предыстория такова - стоял и работал почти год openserver, знать не знал проблем. Потом прилетело принудительное...

Функции работают по отдельности, но если запустить их подряд, то не работают
#include <string> #include <fstream> #include <iostream> #include <vector> using namespace std; void func (vector<double>...

Как работают функции?
void UnionSet(int* Set, int SIZE, int* Set_1, int SIZE_1, int* Set_0, int & SIZE_0) { SIZE_0 = SIZE; for (int i = 0; i <...

Как работают функции?
Код отсюда https://www.ibm.com/developerworks/ru/library/j-cb02067/index.html Не пойму как это работает. Эта строка что делает (first...

как работают функции
void Model::MoveUp() { int hold=-1; if(!isCircleUp) { for(int i=0;i<NCIRCLES;i++) { if(circles.nCore ==...


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

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru