Форум сайта python.su
0
Здравствуйте, уважаемые.
Изучаю Python. До этого не программировал. Пытаюсь разобраться с данной функцией, но никак не доходит.
Объясните, пожалуйста, чайнику.
def total(initial=5, *numbers, **keywords): count = initial for number in numbers: count += number for key in keywords: count += keywords[key] return count print(total(10, 1, 2, 3, vegetables=50, fruits=100))
Отредактировано avldokuchaev (Март 26, 2016 00:34:42)
Офлайн
568
Спрашивайте что конкретно непонятно, цитировать вам учебник никто не будет.
Офлайн
0
Я практически разобрался. Потом попробую описать свои мысли, а вы, если не сложно, скажете прав я или нет.
Офлайн
0
Где то в функции ошибка. Интерпретатор выдает ошибку. Похоже, что в словаре. Надо как то извлечь из словаря числа 50 и 100, чтобы с ними математические действия могли производится. Пойду читать про словари.
Офлайн
0
Хотя нет ошибки. Я просто не верно записал. Не пойму почему в результате 166 получается?
Офлайн
0
Пока искал где ошибка, узнал, что эту функцию можно еще по другому записать.
def total(initial=5, *numbers, **keywords): count = initial for number in numbers: count += number for key, val in keywords.items(): count += val return count print(total(10, 1, 2, 3, vegetables=50, fruits=100))
Офлайн
16
А сколько по-вашему должно получиться? В вызове функции total параметру initial вы задаете 10, остальные значения параметров к нему прибавляются, так и получается 166
Отредактировано Stright (Март 26, 2016 01:10:29)
Офлайн
0
А все понял, спасибо. Я подумал, что параметр initial не меняется и будет 5.
Офлайн
0
Еще раз здравствуйте.
В процессе изучения языка Python наткнулся на следующий код. Немного изменил имена переменных.
class Privet_1: def __init__(self, imya): self.name_1 = imya def priv_1(self): print('Привет, ', self.name_1) pr_2 = Privet_1('Андрей') pr_2.priv_1()
class Privet_2: def __init__(self, inya): print('Привет, ', inya) Privet_2('Андрей')
Офлайн
857
avldokuchaevОтдельные вопросы пиши в отдельные темы. Если кто-то ответит в эту тему по первому вопросу, а другой - по второму, а третий - снова по первому, то эти ответы начнут перемешиваться и получится свалка, из которой будет непонятно, кто кому что и на что отвечает.
Еще раз здравствуйте.
avldokuchaevЗря поразмыслил. Во-первых, priv_1() в первом случае можно вызывать, а можно и не вызывать, а можно вызывать и несколько раз в разное время. А во-вторых, класс вообще ничего не должен сам выводить, выводить должны только специальные методы и только тогда, когда их специально вызывают. Иначе тебе может понадобиться этот класс там, где выводить ничего не надо, и ты его не сможешь использовать, потому что он выводит.
Потом поразмыслил и решил, что можно написать вот так:
Отредактировано py.user.next (Март 30, 2016 02:58:32)
Офлайн