1

Тема: функція

Проходжу курс на stepic, і там таке завдання:
дана функція s

def s(a, *vs, b=10):
   res = a + b
   for v in vs:
       res += v
   return res

В результаті яких викликів дана функція поверне результат 31? і дано варіанти відповідей(їх писати не буду, бо вони не стосуються мого питання).
Що відбувається в 3 і 4 рядках? Хтось може зрозуміло пояснити?

2

Re: функція

a - простий аргумент, *vs - список аргументів, у третьому рядку відбувається звичайний перебір аргументів у даному списку. Нехай vs = [3,5,10], тоді v набуватиме по черзі значень 3, 5, 10,  а отже до результату (res) будуть додаватися числа 3, 5, і 10.
наприклад, Ви можете викликати функцію ось так:  s(9, [5, 7, 9], b=11), - тоді повинно вийти 31

Мій блог про ОС сімейства *nix - http://nixtravelling.blogspot.com/
Подякували: JessikaBaker1

3

Re: функція

У рядках 3 та 4 — цикл for, що перебирає елементи vs (який, у свою чергу, містить список додаткових аргументів, переданих функції s — напр., якщо викликати s(1,2,3,4), то vs отримує значення (2,3,4) ).
res+=v — те ж саме, що res=res+v. Таким чином, до res буде додано всі додаткові аргументи (якщо вони є).

py -3 -m pip install git+https://github.com/snoack/python-goto
∩⍴○⌈⍴⍺/∧\∨/⊢○ ⌿⍀⍴⌊
Подякували: JessikaBaker1

4

Re: функція

Master_Sergius написав:

наприклад, Ви можете викликати функцію ось так:  s(9, [5, 7, 9], b=11), - тоді повинно вийти 31

Незовсім так — зверніть увагу, що у списку параметрів не vs, а *vs — щоб вийшло 31, треба опустити квадратні дужки: s(9,5,7,9, b=11)

py -3 -m pip install git+https://github.com/snoack/python-goto
∩⍴○⌈⍴⍺/∧\∨/⊢○ ⌿⍀⍴⌊
Подякували: JessikaBaker, ping, Master_Sergius3

5

Re: функція

P.Y. написав:
Master_Sergius написав:

наприклад, Ви можете викликати функцію ось так:  s(9, [5, 7, 9], b=11), - тоді повинно вийти 31

Незовсім так — зверніть увагу, що у списку параметрів не vs, а *vs — щоб вийшло 31, треба опустити квадратні дужки: s(9,5,7,9, b=11)

буде 41

First, solve the problem. Then, write the code. (c)JJ
Подякували: P.Y., koala2

6

Re: функція

P.Y. написав:
Master_Sergius написав:

наприклад, Ви можете викликати функцію ось так:  s(9, [5, 7, 9], b=11), - тоді повинно вийти 31

Незовсім так — зверніть увагу, що у списку параметрів не vs, а *vs — щоб вийшло 31, треба опустити квадратні дужки: s(9,5,7,9, b=11)

Так, дякую. При поясненні сам себе заплутав :)

Мій блог про ОС сімейства *nix - http://nixtravelling.blogspot.com/