How do I query a certain list element in python after they meet some conditions using a loop?

Issue

I am trying to go through a list (which is set as the parameter in a function) to query the suburb taken as an input from the user. The query is then searched for in the list and if a match is found, the total sales from the suburb’s stores are added and the average store sales for that suburb is calculated.

here is the list:

Hm001,6,Frankton,42305.67_
Hm002,10,Glenview,21922.22_
Hm003,7,Silverdale,63277.9_
Hm004,13,Glenview,83290.09_
Hm005,21,Queenwood,81301.82_
Hm006,14,Hillcrest,62333.3_
Hm007,7,Frankton,28998.8_
Hm008,19,Chartwell,51083.5_
Hm009,6,Glenview,62155.72_
Hm0010,8,Enderley,33075.1_
Hm0011,10,Fairfield,61824.7_
Hm0012,15,Rototuna,21804.8-
Hm0013,11,Fairfield,62804.7_

if follows the format: ID, Num of employees, suburb, and sale volume.

I have written the function below but I don’t know what is wrong with the function.

def query_suburb_stats(records):
    suburb = input("Enter a suburb name: ")
    print(suburb)
    sales = 0
    avg_sales  =  0
    for match in records:
      if suburb.lower() == match[2].lower():
       sales += match[3]
       avg_sales = avg_sales/sales
     
    if suburb.lower() != records[2].lower():
      print(f"No matching name for {suburb}")
    else:
      print(f"The total sale volume for the stores in {suburb} is: {sales}")
      print(f"The average sales for {suburb} is: {avg_sales}")

Solution

Your code will work with the following changes:

def query_suburb_stats(records):
    suburb = input("Enter a suburb name: ")
    print(suburb)
    matches = 0
    sales = 0
    avg_sales  =  0
    for match in records:
        if suburb.lower() == match[2].lower():
            matches += 1
            sales += float(match[3])
     
    if not matches:
        print(f"No matching name for {suburb}")
    else:
        avg_sales = sales/matches
        print(f"The total sale volume for the stores in {suburb} is: {sales}")
        print(f"The average sales for {suburb} is: {avg_sales}")

With Glenveiw as input, it will output:

The total sale volume for the stores in Glenview is: 167368.03
The average sales for Glenview is: 55789.34333333333

Answered By – constantstranger

This Answer collected from stackoverflow, is licensed under cc by-sa 2.5 , cc by-sa 3.0 and cc by-sa 4.0

Leave a Reply

(*) Required, Your email will not be published