Уведомления

Группа в Telegram: @pythonsu

#1 Май 1, 2023 13:56:44

dmitry1959
Зарегистрирован: 2023-05-01
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

параметры и аргументы функции

Помогите, пожалуйста , разобраться .
Почему в коде для вычисления суммы цифр числа:

def sum_digits(n):
result = 0
while n > 0:
result += n % 10
n //= 10
return result
n = int(input())
print(sum_digits(n))

имя параметра обязательно должно совпадать с именем переменной (n) иначе возникает ошибка, а в аналогичном коде, только с использованием цикла for :

def print_digit_sum(num):
sm = 0
for i in str(n):
sm += int(i)
print(sm)
n = int(input())
print_digit_sum(n)

имя параметра может быть любым (в данном случае num), отличным от имени переменной (n)




Офлайн

#2 Май 1, 2023 14:16:37

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9890
Репутация: +  854  -
Профиль   Отправить e-mail  

параметры и аргументы функции

  
>>> def sum_digits(n):
...     result = 0
...     while n > 0:
...         result += n % 10
...         n //= 10
...     return result
... 
>>> 
>>> num = int(input())
12345
>>> print(sum_digits(num))
15
>>>

dmitry1959
а в аналогичном коде, только с использованием цикла for :
имя параметра может быть любым (в данном случае num), отличным от имени переменной (n)
Потому что оно в функции вообще не используется.

Вот я его убрал вообще и всё работает без него
  
>>> def print_digit_sum():
...     sm = 0
...     for i in str(n):
...         sm += int(i)
...         print(sm)
... 
>>> n = int(input())
12345
>>> print_digit_sum()
1
3
6
10
15
>>>
Переменную n он видит в глобальной области видимости.



Офлайн

#3 Май 3, 2023 00:02:30

dmitry1959
Зарегистрирован: 2023-05-01
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

параметры и аргументы функции

Спасибо за объяснение, но я до конца не понял , почему в 1-м коде с циклом while n не видно в глобальной видимости . Простите за тупость, я только начинаю осваивать язык. )

Офлайн

#4 Май 3, 2023 00:20:21

dmitry1959
Зарегистрирован: 2023-05-01
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

параметры и аргументы функции

Сформулирую точнее - почему в одном случае -(вариант с циклом for) можно использовать функцию без параметра, а с while - обязательно нужен параметр ?

Офлайн

#5 Май 3, 2023 00:29:49

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9890
Репутация: +  854  -
Профиль   Отправить e-mail  

параметры и аргументы функции

dmitry1959
но я до конца не понял , почему в 1-м коде с циклом while n не видно в глобальной видимости
Если ты создаёшь переменную в локальной области видимости, то эта переменная перекрывает собой переменную в глобальной области видимости.

dmitry1959
почему в одном случае -(вариант с циклом for) можно использовать функцию без параметра, а с while - обязательно нужен параметр ?
Если ты везде сделаешь только циклы for, они все (оба) будут работать так.
Если ты везде сделаешь циклы while, они все (оба) будут работать так.
От разновидности цикла ничего не зависит. Это ты запутался просто.



Офлайн

#6 Май 3, 2023 00:47:50

dmitry1959
Зарегистрирован: 2023-05-01
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

параметры и аргументы функции

Спасибо Вам большое за отклик! Сейчас буду разбираться. Тогда можете сказать, как будет выглядеть аналогичный код с while с функцией без параметра ? Заранее спасибо !)

Офлайн

#7 Май 3, 2023 01:22:42

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9890
Репутация: +  854  -
Профиль   Отправить e-mail  

параметры и аргументы функции

dmitry1959
как будет выглядеть аналогичный код с while с функцией без параметра ?
  
>>> def print_digit_sum():
...     sm = 0
...     i = 0
...     num = str(n)
...     while i < len(num):
...         sm += int(num[i])
...         print(sm)
...         i += 1
... 
>>> n = int(input())
12345
>>> print_digit_sum()
1
3
6
10
15
>>>



Отредактировано py.user.next (Май 3, 2023 01:23:17)

Офлайн

#8 Май 3, 2023 11:36:40

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2627
Репутация: +  61  -
Профиль   Отправить e-mail  

параметры и аргументы функции

настоятельно рекомендую перестать играть в поле чудес и почитать Марка Лутца



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

#9 Май 3, 2023 12:19:47

dmitry1959
Зарегистрирован: 2023-05-01
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

параметры и аргументы функции

Не работает :
C:\Users\Дмитрий\PycharmProjects\Study\venv\Scripts\python.exe C:\Users\Дмитрий\PycharmProjects\Study\test1.py
45
4
9

Офлайн

#10 Май 3, 2023 12:22:29

dmitry1959
Зарегистрирован: 2023-05-01
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

параметры и аргументы функции

И если print и i поменять местами - то же самое …

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version