Update:

I defined the expressions I was looking for by using the lambda function:

```
var('q,n,k,m')
qfac= lambda n : prod([(1-q^(k))/(1-q) for k in (1..n)]) #q-factorial
qbin = lambda n,m : qfac(n)/(qfac(m)*qfac(n-m)) #q-binomial
S= lambda n : sum([qbin(n,k) for k in (1..n)])
```

I also stopped using the iput sum(funcion,variable,lower limit,upper limit), and I am using sum([list]), where the list is defined by [expression(k) for k in (1..n)]. Although the first one works for simple stuff, It is not so good for symbolic.

Now I can call, as an example, S(4).

```
S(4)
```

A second way I defined the sum above is by defining a list in a specific range,

```
S = [sum([qbin(n,k) for k in (1..n)]) for n in (1..5)]
```

And I can call S(4) by calling the S[3] (lists start in 0, and use square brackets )

```
S[3]
```

I can also call all elements in a range of the list by

```
S[0:4]
```

This calls all elements up to S[3], which I find a bit confusing...

I'm still new to all of this... perhaps I can use "def" to do the same, maybe it is better, but I'm satisfied for now. Any comments are welcome.