Question: I was trying different ways of using the `range()` function in Python and when I tried this:

```
print(range(1, 20, 2), end=" ")

```

I got an output like this: `range(1, 20, 2 )` , when I was expecting something like this: `1 3 5 7 9 11 13 15 17 19`  Why is this the case?

Also, are there any other ways to print a range of numbers other than using a loop statement, or is it compulsory to always use loops if I want a sequence of numbers using `range()`?

Answer: 
Detect words first then append them to the list:

```
def n_split(i_str):
    new_list= []
    word=''
    for i in range(len(i_str)):
        if i_str[i]!=' ':
            word += i_str[i]
        else:
            new_list.append(word)
            word =''
    new_list.append(word) #for the last word
    return new_list

inp_str=input("Enter the string:")
print("List:")
print(n_split(inp_str))

```
The issue is that you are adding every ***character*** to your array that is `not equal` to a space. But what you ***want*** is to have an array full of words, not just characters. So, the fix might look something like this.

```py
def n_split(i_str):
    new_list= [] ; new_word = ""
    for i in range(0, len(i_str)):
        if i_str[i]!=' ': # Add char to current word if not space
            new_word += i_str[i]
            #i+=1
        else: # Else, add current word to array
            new_list.append(new_word)
            new_word = ""
    # collect the last word as well;
    # we need this line because the last character probably is not a space
    if new_word !="": 
        new_list.append(new_word)
    return new_list

```

I also removed the `i=0` and `i+=1`, and just added the starting point 0 to the for-loop because they are redundant -- the `for i in range` can take care of that for you.