Here is my entire code(average is not working yet). The response I got from the professor is that I have to create a DRY solution replacing the five display_functions with a single get_array function you call five times like common_array = get_array(plant_xml, "COMMON") etc.    from urllib.request import urlopen from xml.etree.ElementTree import parse def read_data(data_file):     plant_url = urlopen(data_file)     plant_xml = parse(plant_url)     return plant_xml def display_common_items(plant_xml):     plant_root = plant_xml.getroot()     common_array = []     for item in plant_root.findall("PLANT"):         common_array.append(item.find("COMMON").text)     return common_array def display_botanical_items(plant_xml):     plant_root = plant_xml.getroot()     botanical_array = []     for item in plant_root.findall("PLANT"):         botanical_array.append(item.find("BOTANICAL").text)     return botanical_array def display_zone_items(plant_xml):     plant_root = plant_xml.getroot()     zone_array = []     for item in plant_root.findall("PLANT"):         zone_array.append(item.find("ZONE").text)     return zone_array def display_light_items(plant_xml):     plant_root = plant_xml.getroot()     light_array = []     for item in plant_root.findall("PLANT"):         light_array.append(item.find("LIGHT").text)     return light_array def display_price_items(plant_xml):     plant_root = plant_xml.getroot()     price_array = []     for item in plant_root.findall("PLANT"):         price_array.append(item.find("PRICE").text)     return price_array def display_output(common_array,botanical_array, zone_array, light_array, price_array):     for count in range(0, len(common_array)):         count in range(0,len(botanical_array))         count in range(0,len(zone_array))         count in range(0,len(light_array))         count in range(0,len(price_array))         print(common_array[count] + "(" + botanical_array[count] + ")" + " - " + zone_array[count] +" - " + light_array[count] + " - " + price_array[count])      def calculate_average(price_array):     sum = 0     count = 0     for item in price_array[:1]:         try:             sum += price_array[:1]             count += 1         except ValueError:             pass     average = sum/count     print(average) def main():     data_file = "https://www.w3schools.com/xml/plant_catalog.xml"     plant_xml = read_data(data_file)     common_array = display_common_items(plant_xml)     botanical_array = display_botanical_items(plant_xml)     zone_array = display_zone_items(plant_xml)     light_array = display_light_items(plant_xml)     price_array = display_price_items(plant_xml)     display_output(common_array,botanical_array,zone_array,light_array,price_array)     calculate_average(price_array)

Database System Concepts
7th Edition
ISBN:9780078022159
Author:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Chapter1: Introduction
Section: Chapter Questions
Problem 1PE
icon
Related questions
icon
Concept explainers
Question

Here is my entire code(average is not working yet). The response I got from the professor is that I have to create a DRY solution replacing the five display_functions with a single get_array function you call five times like common_array = get_array(plant_xml, "COMMON") etc. 

 

from urllib.request import urlopen
from xml.etree.ElementTree import parse


def read_data(data_file):
    plant_url = urlopen(data_file)
    plant_xml = parse(plant_url)
    return plant_xml


def display_common_items(plant_xml):
    plant_root = plant_xml.getroot()
    common_array = []
    for item in plant_root.findall("PLANT"):
        common_array.append(item.find("COMMON").text)
    return common_array


def display_botanical_items(plant_xml):
    plant_root = plant_xml.getroot()
    botanical_array = []
    for item in plant_root.findall("PLANT"):
        botanical_array.append(item.find("BOTANICAL").text)
    return botanical_array


def display_zone_items(plant_xml):
    plant_root = plant_xml.getroot()
    zone_array = []
    for item in plant_root.findall("PLANT"):
        zone_array.append(item.find("ZONE").text)
    return zone_array


def display_light_items(plant_xml):
    plant_root = plant_xml.getroot()
    light_array = []
    for item in plant_root.findall("PLANT"):
        light_array.append(item.find("LIGHT").text)
    return light_array


def display_price_items(plant_xml):
    plant_root = plant_xml.getroot()
    price_array = []
    for item in plant_root.findall("PLANT"):
        price_array.append(item.find("PRICE").text)
    return price_array


def display_output(common_array,botanical_array, zone_array, light_array, price_array):
    for count in range(0, len(common_array)):
        count in range(0,len(botanical_array))
        count in range(0,len(zone_array))
        count in range(0,len(light_array))
        count in range(0,len(price_array))
        print(common_array[count] + "(" + botanical_array[count] + ")" + " - " + zone_array[count] +" - " + light_array[count] + " - " + price_array[count])

    

def calculate_average(price_array):
    sum = 0
    count = 0
    for item in price_array[:1]:
        try:
            sum += price_array[:1]
            count += 1
        except ValueError:
            pass
    average = sum/count
    print(average)

def main():
    data_file = "https://www.w3schools.com/xml/plant_catalog.xml"
    plant_xml = read_data(data_file)
    common_array = display_common_items(plant_xml)
    botanical_array = display_botanical_items(plant_xml)
    zone_array = display_zone_items(plant_xml)
    light_array = display_light_items(plant_xml)
    price_array = display_price_items(plant_xml)
    display_output(common_array,botanical_array,zone_array,light_array,price_array)
    calculate_average(price_array)
 
main()

Expert Solution
trending now

Trending now

This is a popular solution!

steps

Step by step

Solved in 2 steps

Blurred answer
Knowledge Booster
Types of Linked List
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-science and related others by exploring similar questions and additional content below.
Similar questions
  • SEE MORE QUESTIONS
Recommended textbooks for you
Database System Concepts
Database System Concepts
Computer Science
ISBN:
9780078022159
Author:
Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:
McGraw-Hill Education
Starting Out with Python (4th Edition)
Starting Out with Python (4th Edition)
Computer Science
ISBN:
9780134444321
Author:
Tony Gaddis
Publisher:
PEARSON
Digital Fundamentals (11th Edition)
Digital Fundamentals (11th Edition)
Computer Science
ISBN:
9780132737968
Author:
Thomas L. Floyd
Publisher:
PEARSON
C How to Program (8th Edition)
C How to Program (8th Edition)
Computer Science
ISBN:
9780133976892
Author:
Paul J. Deitel, Harvey Deitel
Publisher:
PEARSON
Database Systems: Design, Implementation, & Manag…
Database Systems: Design, Implementation, & Manag…
Computer Science
ISBN:
9781337627900
Author:
Carlos Coronel, Steven Morris
Publisher:
Cengage Learning
Programmable Logic Controllers
Programmable Logic Controllers
Computer Science
ISBN:
9780073373843
Author:
Frank D. Petruzella
Publisher:
McGraw-Hill Education