Найти - Пользователи
Полная версия: Помогите с написанием функции, пожалуйста
Начало » Центр помощи » Помогите с написанием функции, пожалуйста
1
Eline
Функция вида:
def convert(sum, length, *list):
    while length>=0:
            for x in list:
                new = int(x) * 16 ** length
                sum = sum + new
                length = length - 1
                return sum

При:
sum = convert(sum=0, length=int(len(list))-1, *list)

Возвращает ошибку: “TypeError: convert() got multiple values for keyword argument ‘length’”.

В чём заключается ошибка в коде?
Master_Sergius
В объявлении функции, length - простой параметр, а не по кейворду, это ты так сделал )
поэтому есть два варианта - либо в объявлении сделать параметр length = 0 (например, и это некрасиво)
либо вызов такой вот:
sum = convert(sum=0, len(list)-1, *list)

int - там лишнее

да и вообще, длину списка передавать? это по паскальному какбе… сдесь это тоже лишнее, итого, правильно будет так:
sum = convert(sum=0, *list)

ну и функцию переделать… и переменную list - переименуй, ибо list - это служебное слово
sergeek
Master_Sergius
Именованные аргументы должны идти после неименнованых. Неименнованый аргумент можно передать по имени
In [6]: def f(a,b):
   ...:     return a,b
   ...: 
 
In [7]: f(1,2)
Out[7]: (1, 2)
 
In [8]: f(a=1,2)
  File "<ipython-input-8-dda526ab872e>", line 1
    f(a=1,2)
         ^
SyntaxError: non-keyword arg after keyword arg
 
 
In [9]: f(1,b=2)
Out[9]: (1, 2)

Eline
В чём заключается ошибка в коде?
чтобы оно запустилось надо вызывать так
sum = convert(0, int(len(list))-1, *list)
наверное, еще захотите сместить строку с return на два отступа влево. Звездочки это не указатели их можно убрать. В общем много еще нехорошего тут.
py.user.next
и имена sum и list лучше заменить, иначе это придётся делать потом, когда понадобится сумма или список
да и код из-за этого нечитамый: кажется, либо с функциями что-то делается, либо там int и len - тоже переменные
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