Comma Code (Python) (Automate The Boring Stuff) This is an exercise in the Automate The Boring Stuff book. I am supposed to create a function that takes a list value as an argument and returns a string with all the items separated by a comma and a space, with 'and' inserted before the last item. My code also includes a loop for the user to create their list.
def add_and(alist):
    if ((alist != []) &amp; (len(alist) &gt; 2)):
        for item in alist[:-1]:
            print(item + &quot;, &quot;,end=&quot;&quot;)
        print(&quot;and&quot;, alist[-1])
    elif ((alist != []) &amp; (len(alist) == 2)):
        print(alist[0], &quot;and&quot;, alist[1])
    elif ((alist != []) &amp; (len(alist) == 1)):
        print(alist[0])
    else:    
        print(&quot;&quot;)
        
your_list = []
while True:
    print(&quot;Enter An Item or nothing&quot;)
    item = input()
    if ((item) == &quot;&quot;):
        print(&quot;&quot;)
        break
    else:
        your_list.append(item)
        continue

add_and(your_list)

I know that the code works, but I was wondering if there were any faux-pas that I am implementing, or if there is anything I could obviously do to make it cleaner. Thanks!
Don't surround sub-predicates or predicates with parens when that isn't needed
Use logical and rather than binary &amp;
Use join rather than a for-and-concatenate
Factor out common sub-predicates for your list emptiness checks into an outer if
Don't else-after-break
No need to continue
Gather your input in a separate function
Do not leave the input prompt blank

Suggested:
def and_add(alist):
    if len(alist) &gt; 1:
        print(', '.join(alist[:-1]), 'and', alist[-1])
    elif len(alist) == 1:
        print(alist[0])
    else:
        print('')

def get_input():
    while True:
        item = input('Enter an item or nothing: ')
        if not item:
            return
        yield item

and_add(list(get_input()))