Cannot append list with condition

Question:

im trying to export two lists to an excel file using pandas, but i cannot append my data using this method.

product_list1 = ["apple", "pear", "oragne", "melon"]
product_list2 = ["bread", "sugar", "flour", "salt"]
list_codes = []
list_numbers = []

def quantity_check(list_type, list_number):
    choise = input("Quantity:")
    if choise in range(1, 99):
        list_numbers.append(choise)
        list_codes.append(list_type[list_number])
quantity_check(product_list1,0)
quantity_check(product_list1,1)
quantity_check(product_list1,2)
quantity_check(product_list1,3)

print (list_numbers)
print (list_codes)

This outputs the two empty lists for some reason.

Asked By: Akis Nasos

||

Answers:

The input function returns a string.
You first need to cast the result into a number before checking if the choice is contained in the range.

def quantity_check(list_type, list_number):

    choise = input("Quantity:")
    try:
        choice_numeric = int(choise)
        if choice_numeric in range(1, 99):
            list_numbers.append(choise)
            list_codes.append(list_type[list_number])
    except:
        print("The choice is not a number")

I added a try catch block in order not to fail if the user enters an input that is not a number

Answered By: Luca

You should convert the user input to an integer as the input function returns a string by default:

def quantity_check(list_type, list_number):
    choice = int(input('Quantity:'))

    if choice in range(1, 99):
        list_numbers.append(choice)
        list_codes.append(list_type[list_number])

If you would like to add some exception handling then you can do so using try…except as follows:

def quantity_check(list_type, list_number):
  try:
    choice = int(input('Quantity:'))
  
    if choice in range(1, 99):
      list_numbers.append(choice)
      list_codes.append(list_type[list_number])
      
  except ValueError:
    print('Quantity should be numerical.')
Answered By: Prins
Categories: questions Tags: , , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.