Seems you've misunderstood the syntax and data flow of the pipeline. Each process in the pipe receives the output from the previous command, munges it a bit, and passes it along to the next process in the pipe. Unfortunately, assignment of the output the way you are attempting isn't possible. All, though, is not lost!
If you read the man page for the cut command you'll notice that you can cut two fields from a file in the same pass. The output from the cut command would be something like scooter:1001
which you can then assign to two variables. The method for assignment depends on the shell you are using. Also, it's easier if you use the --output-delimeter option to have cut remove the colon and replace it with a space.
So, something like this should generate your desired data:
grep "$username" /etc/passwd | cut -f 1,3 -d : --output-delimiter=" "
To assign the output to variables, you can use this command in an array assignment, or assign it to a single variable and split it into two (bash) or assign it straight into two variables if you are using Korn shell.
array=( $( grep "$username" /etc/passwd | cut -f 1,3 -d : --output-delimiter=" " ) )
echo "user=${array[0]} user-num=${array[1]}"
The previous code will work in both shells. The next code will work only in Korn shell:
grep "$username" /etc/passwd | cut -f 1,3 -d : --output-delimiter=" " | read user userid
and assigns the values straight to the variables.
You are faced with one problem.... if given a partial user name the output from cut will be more than just two fields. To deal with this, you'll need a bit of a different approach that involves a loop. As this seems more like a homework exercise, than something for work, or maintenance of your personal system, I'll leave you to doing that.