TypeError: Input() missing 1 required keyword-only argument
В массиве A найти разность сумм элементов с чётными и нечётными индексами. Элементы массива: aі (a итое) = i!
n = int(input("Enter n: "))
a = []
def factorial(i):
if (i == 0): return 1
elif(i == 1): return 1
return i*factorial(i-1)
def Input(*a, n):
for i in range(0, n):
a[i] = factorial(i)
def Output(*a, n):
for i in range(0, n):
print(a[i], " ")
print("\n")
print("Array A:")
Input(a, n)
Output(a, n)
D = 0
N = 0
def Summa(D, N):
for i in range(n):
if (i % 2 == 0): D += a[i]
elif(i % 2 != 0): N += a[i]
Summa(D, N)
S = D - N
print("Subtraction:", S)
Ошибка: line 19, in Input(a, n) TypeError: Input() missing 1 required keyword-only argument: 'n'. Не понимаю, как решить эту проблему
Ответы (1 шт):
по идее ваш код должен выглядеть так:
n = int(input("Enter n: "))
def factorial(i):
return 1 if i < 2 else i * factorial(i - 1)
def Input(n):
return [factorial(i) for i in range(n)]
def Output(a, n):
print(*a, "\n", sep=" ")
print("Array A:")
a = Input(n)
Output(a, n)
def Summa():
D = 0
N = 0
for i in range(n):
if i % 2 == 0:
D += a[i]
else:
N += a[i]
return (D, N)
D, N = Summa()
S = D - N
print("Subtraction:", S)
Ошибки у вас:
так массив не заполнить
for i in range(0, n): a[i] = factorial(i)
ведь вы объявили массив как a = [], т.е. элементов в нем нет, поэтому вы и обращаться к ним не можете, минимум вы должны были бы сделать так:
for i in range(0, n):
a.append(factorial(i))
- для передачи параметров в функцию достаточно было бы использовать обычный массив
вы использовали конструкцию
def Input(*a, n):
это ошибка, кроме того вы все равно не можете заполнить глобальную переменную a из функции в таком виде
- опять же работа с локальными переменными, когда нужны глобальные
в таком коде
def Summa(D, N):
for i in range(n):
if (i % 2 == 0): D += a[i]
elif(i % 2 != 0): N += a[i]
вы работаете с локальными переменными не изменяя глобальных, т.е. вы получать 0 будете всегда для вашего код
- не ошибка, а просто неаккуратность - есть у вас условие бинарное (четное или нечетное), то зачем нужно
elifи вторая проверка?
у вас
if (i % 2 == 0): D += a[i]
elif(i % 2 != 0): N += a[i]
но это избыточно и достаточно
if i % 2 == 0: D += a[i]
else: N += a[i]