Mixed-up Code Questions
------------------------

.. selectquestion:: file_write_line_sq
   :fromid: file_write_line_pp, file_write_line_ac
   :toggle:

.. selectquestion:: file_read_n_lines_sq
   :fromid: file_read_n_lines_pp, file_read_n_lines_ac
   :toggle:

.. selectquestion:: file_count_words_sq
   :fromid: file_count_words_pp, file_count_words_ac
   :toggle:

.. selectquestion:: file_count_lines_starting_with_sq
   :fromid: file_count_lines_starting_with_pp, file_count_lines_starting_with_ac
   :toggle:

.. selectquestion:: file_write_squares_sq
   :fromid: file_write_squares_pp, file_write_squares_ac
   :toggle:


.. parsonsprob:: file_mixed_olympics
    :adaptive:
    :numbered: left
    :practice: T

    The following program should split the lines of "olympics.txt", then print the name,
    team, and event of each athlete in a sentence. Unfortunately the code is mixed up.
    Drag the blocks of statements from the left column to the right column and put them in
    the right order. Watch out for extra pieces of code and indentation!
    -----
    olypmicsfile = open("olypmics.txt", "r")
    =====
    olympicsfile = open(olympics.txt, "r") #paired
    =====
    for line in olympicsfile:
    =====
    for line in olympicsfile #paired
    =====
        values = line.split(",")
        print(values[0], "is from", values[3], "and is on the roster for", values[4])
    =====
    olympicsfile.close()
    =====
    olypmicsfile.close #paired


The next 5 questions refer to pollution data in the US from the following file. It
contains a city, state :PM10 :PM2.5 where PM is the particulate matter and PM10 is
particulate matter that is course and 2.5 to 10 micrometers in diameter such as
dust from vehicles on the road. PM2.5 is particulate matter that is 2.5 micrometers
in diameter or smaller which are produced by combustion from things like gas-powered vehicles or forest fires.
If you want to see all of the data click on the Show button below. Once it appears,
you can hide it again by clicking on the Hide button.

.. reveal:: pol_Data_18_3
    :showtitle: Show
    :hidetitle: Hide

    .. raw:: html

       <pre id="uspoll.txt">
       Aberdeen, SD :13 :8
       Adrian, MI :15 :9
       Akron, OH :18 :11
       Albany, GA :18 :11
       Albany-Lebanon, OR :14 :8
       Albany-Schenectady-Troy, NY :13 :8
       Albuquerque, NM :12 :7
       Alexandria, LA :20 :12
       Allegan, MI :14 :9
       Allentown-Bethlehem-Easton, PA-NJ :21 :12
       Altoona, PA :19 :12
       Anchorage, AK :13 :8
       Anderson, IN :18 :11
       Ann Arbor, MI :16 :10
       Appleton, WI :14 :9
       Asheville, NC :15 :9
       Athens, OH :14 :9
       Athens, TN :15 :9
       Athens-Clarke County, GA :16 :9
       Atlanta-Sandy Springs-Marietta, GA :23 :14
       Atlantic City-Hammonton, NJ :14 :8
       Augusta-Richmond County, GA-SC :18 :11
       Augusta-Waterville, ME :14 :9
       Austin-Round Rock, TX :17 :10
       Bakersfield, CA :24 :15
       Baltimore-Towson, MD :20 :12
       Bangor, ME :12 :7
       Baraboo, WI :17 :10
       Baton Rouge, LA :19 :11
       Bay City, MI :13 :8
       Beaver Dam, WI :15 :9
       Beckley, WV :14 :8
       Bellingham, WA :7 :4
       Bennington, VT :11 :7
       Birmingham-Hoover, AL :20 :12
       Bishop, CA :11 :6
       Bismarck, ND :11 :6
       Bloomington, IN :17 :10
       Bloomington-Normal, IL :16 :9
       Boise City-Nampa, ID :17 :10
       Boone, NC :13 :8
       Boston-Cambridge-Quincy, MA-NH :16 :10
       Boulder, CO :12 :7
       Bowling Green, KY :17 :10
       Bradenton-Sarasota-Venice, FL :12 :7
       Brainerd, MN :8 :5
       Bremerton-Silverdale, WA :7 :4
       Bridgeport-Stamford-Norwalk, CT :16 :9
       Brigham City, UT :12 :7
       Brookings, SD :14 :9
       Brownsville-Harlingen, TX :16 :10
       Brunswick, GA :13 :8
       Buffalo-Niagara Falls, NY :16 :9
       Burlington, NC :14 :9
       Burlington-South Burlington, VT :12 :7
       Butte-Silver Bow, MT :19 :11
       Cadillac, MI :10 :6
       Cambridge, MD :13 :8
       Canton-Massillon, OH :21 :12
       Cape Coral-Fort Myers, FL :12 :7
       Casper, WY :9 :5
       Cedar Rapids, IA :16 :10
       Champaign-Urbana, IL :16 :10
       Charleston, WV :18 :11
       Charleston-North Charleston-Summerville, SC :16 :10
       Charlotte-Gastonia-Concord, NC-SC :16 :10
       Charlottesville, VA :13 :8
       Chattanooga, TN-GA :18 :11
       Cheyenne, WY :9 :6
       Chicago-Naperville-Joliet, IL-IN-WI :22 :13
       Chico, CA :12 :7
       Cincinnati-Middletown, OH-KY-IN :23 :14
       Clarksburg, WV :16 :10
       Clarksville, TN-KY :16 :10
       Clearlake, CA :7 :4
       Cleveland-Elyria-Mentor, OH :24 :15
       Clinton, IA :18 :11
       Colorado Springs, CO :12 :7
       Columbia, SC :17 :10
       Columbia, TN :14 :8
       Columbus, GA-AL :19 :11
       Columbus, OH :18 :11
       Concord, NH :16 :9
       Cookeville, TN :14 :9
       Corning, NY :11 :7
       Corpus Christi, TX :18 :11
       Dallas-Fort Worth-Arlington, TX :20 :12
       Daphne-Fairhope-Foley, AL :15 :9
       Davenport-Moline-Rock Island, IA-IL :18 :11
       Dayton, OH :18 :11
       Decatur, AL :15 :9
       Decatur, IL :17 :10
       Deltona-Daytona Beach-Ormond Beach, FL :11 :6
       Denver-Aurora-Broomfield, CO :14 :9
       Des Moines-West Des Moines, IA :15 :9
       Detroit-Warren-Livonia, MI :21 :12
       Dickinson, ND :7 :4
       Dothan, AL :15 :9
       Dover, DE :14 :8
       Duluth, MN-WI :11 :6
       Durango, CO :7 :4
       Durham, NC :14 :8
       Durham-Chapel Hill, NC :14 :8
       Dyersburg, TN :15 :9
       East Stroudsburg, PA :13 :8
       Eau Claire, WI :14 :8
       El Centro, CA :24 :14
       El Dorado, AR :18 :11
       El Paso, TX :21 :12
       Elizabethtown, KY :20 :12
       Elkhart-Goshen, IN :21 :12
       Erie, PA :19 :11
       Eugene-Springfield, OR :13 :8
       Eureka-Arcata-Fortuna, CA :11 :7
       Evansville, IN-KY :19 :12
       Fairbanks, AK :31 :19
       Fairmont, WV :17 :10
       Fargo, ND-MN :13 :8
       Farmington, NM :8 :5
       Fayetteville, NC :15 :9
       Fayetteville-Springdale-Rogers, AR-MO :16 :10
       Flagstaff, AZ :9 :5
       Flint, MI :13 :8
       Florence, SC :15 :9
       Florence-Muscle Shoals, AL :15 :9
       Fort Collins-Loveland, CO :12 :7
       Fort Madison-Keokuk, IA-MO :18 :11
       Fort Payne, AL :15 :9
       Fort Smith, AR-OK :17 :10
       Fort Wayne, IN :23 :14
       Fresno, CA :74 :45
       Gadsden, AL :16 :10
       Gainesville, FL :12 :7
       Gainesville, GA :16 :9
       Gettysburg, PA :18 :11
       Gillette, WY :13 :8
       Goldsboro, NC :21 :13
       Grand Island, NE :13 :8
       Grand Junction, CO :12 :7
       Grand Rapids-Wyoming, MI :16 :10
       Grants Pass, OR :12 :7
       Greeley, CO :13 :8
       Green Bay, WI :16 :10
       Greensboro-High Point, NC :14 :9
       Greenville, NC :13 :8
       Greenville-Mauldin-Easley, SC :16 :10
       Grenada, MS :16 :9
       Gulfport-Biloxi, MS :16 :10
       Hagerstown-Martinsburg, MD-WV :19 :11
       Hammond, LA :15 :9
       Hanford-Corcoran, CA :28 :17
       Harriman, TN :22 :13
       Harrisburg-Carlisle, PA :20 :12
       Harrisonburg, VA :15 :9
       Hartford-West Hartford-East Hartford, CT :14 :9
       Hattiesburg, MS :18 :11
       Helena, MT :16 :9
       Helena-West Helena, AR :16 :9
       Hickory-Lenoir-Morganton, NC :16 :10
       Hilo, HI :27 :16
       Hobbs, NM :13 :8
       Holland-Grand Haven, MI :15 :9
       Homosassa Springs, FL :11 :7
       Honolulu, HI :12 :7
       Hot Springs, AR :18 :11
       Houma-Bayou Cane-Thibodaux, LA :13 :8
       Houston-Sugar Land-Baytown, TX :21 :13
       Huntington-Ashland, WV-KY-OH :19 :11
       Huntsville, AL :16 :9
       Indianapolis-Carmel, IN :25 :15
       Iowa City, IA :16 :10
       Jackson, MS :19 :11
       Jackson, TN :15 :9
       Jackson, WY-ID :11 :6
       Jacksonville, FL :13 :8
       Jamestown-Dunkirk-Fredonia, NY :13 :8
       Jasper, IN :18 :11
       Johnstown, PA :19 :12
       Juneau, AK :11 :6
       Kahului-Wailuku, HI :11 :6
       Kalamazoo-Portage, MI :17 :10
       Kalispell, MT :13 :8
       Kansas City, MO-KS :24 :15
       Kapaa, HI :11 :7
       Keene, NH :16 :10
       Kingsport-Bristol-Bristol, TN-VA :15 :9
       Kinston, NC :13 :8
       Klamath Falls, OR :18 :11
       Knoxville, TN :18 :11
       Kokomo, IN :16 :10
       La Crosse, WI-MN :14 :8
       Laconia, NH :11 :7
       Lafayette, IN :24 :14
       Lafayette, LA :18 :11
       Lake Charles, LA :14 :8
       Lake Havasu City-Kingman, AZ :6 :4
       Lakeland-Winter Haven, FL :13 :8
       Lancaster, PA :21 :13
       Lansing-East Lansing, MI :14 :9
       Laramie, WY :9 :6
       Las Cruces, NM :25 :15
       Las Vegas-Paradise, NV :20 :12
       Laurel, MS :18 :11
       Lawrenceburg, TN :14 :8
       Lebanon, NH-VT :11 :7
       Lebanon, PA :24 :14
       Lewiston-Auburn, ME :13 :8
       Lexington-Fayette, KY :16 :10
       Lima, OH :17 :10
       Lincoln, NE :14 :9
       Little Rock-North Little Rock-Conway, AR :19 :12
       Logan, UT-ID :15 :9
       Los Angeles-Long Beach-Santa Ana, CA :33 :20
       Louisville/Jefferson County, KY-IN :22 :13
       Lumberton, NC :14 :9
       Lynchburg, VA :13 :8
       Macon, GA :19 :12
       Madera, CA :27 :16
       Madison, WI :16 :9
       Manchester-Nashua, NH :14 :8
       Marshall, MN :12 :7
       Marshall, TX :17 :10
       McAlester, OK :19 :11
       McAllen-Edinburg-Mission, TX :18 :11
       Medford, OR :15 :9
       Memphis, TN-MS-AR :17 :10
       Merced, CA :18 :11
       Meridian, MS :17 :10
       Miami-Fort Lauderdale-Pompano Beach, FL :14 :8
       Michigan City-La Porte, IN :16 :10
       Middlesborough, KY :17 :10
       Milwaukee-Waukesha-West Allis, WI :18 :11
       Minneapolis-St. Paul-Bloomington, MN-WI :17 :10
       Missoula, MT :21 :12
       Mobile, AL :15 :9
       Modesto, CA :25 :15
       Monroe, LA :22 :13
       Monroe, MI :16 :9
       Montgomery, AL :18 :11
       Morgantown, WV :15 :9
       Mount Vernon, IL :14 :9
       Muncie, IN :16 :10
       Muscatine, IA :18 :11
       Muskegon-Norton Shores, MI :15 :9
       Napa, CA :23 :14
       Nashville-Davidson--Murfreesboro--Franklin, TN :17 :10
       New Castle, IN :15 :9
       New Haven-Milford, CT :15 :9
       New Orleans-Metairie-Kenner, LA :21 :13
       New York-Northern New Jersey-Long Island, NY-NJ-PA :23 :14
       Niles-Benton Harbor, MI :14 :9
       Nogales, AZ :16 :10
       Norwich-New London, CT :13 :8
       Ogden-Clearfield, UT :15 :9
       Oklahoma City, OK :16 :10
       Omaha-Council Bluffs, NE-IA :19 :12
       Orlando-Kissimmee, FL :12 :7
       Owensboro, KY :18 :11
       Oxnard-Thousand Oaks-Ventura, CA :16 :10
       Paducah, KY-IL :17 :10
       Palm Bay-Melbourne-Titusville, FL :10 :6
       Parkersburg-Marietta-Vienna, WV-OH :17 :10
       Pascagoula, MS :15 :9
       Pendleton-Hermiston, OR :12 :7
       Pensacola-Ferry Pass-Brent, FL :14 :8
       Peoria, IL :16 :10
       Philadelphia-Camden-Wilmington, PA-NJ-DE-MD :28 :17
       Phoenix-Mesa-Scottsdale, AZ :26 :16
       Pittsburgh, PA :25 :15
       Pittsfield, MA :14 :9
       Platteville, WI :15 :9
       Pocatello, ID :15 :9
       Ponca City, OK :17 :10
       Portland-South Portland-Biddeford, ME :15 :9
       Portland-Vancouver-Beaverton, OR-WA :12 :7
       Portsmouth, OH :16 :10
       Poughkeepsie-Newburgh-Middletown, NY :13 :8
       Prescott, AZ :7 :4
       Prineville, OR :14 :9
       Providence-New Bedford-Fall River, RI-MA :18 :11
       Provo-Orem, UT :14 :8
       Pueblo, CO :11 :7
       Quincy, IL-MO :16 :10
       Raleigh-Cary, NC :16 :9
       Rapid City, SD :11 :6
       Reading, PA :19 :11
       Red Bluff, CA :14 :8
       Redding, CA :10 :6
       Reno-Sparks, NV :15 :9
       Richmond, VA :15 :9
       Richmond-Berea, KY :15 :9
       Riverside-San Bernardino-Ontario, CA :34 :21
       Riverton, WY :13 :8
       Roanoke, VA :15 :9
       Rochester, MN :13 :8
       Rochester, NY :14 :9
       Rock Springs, WY :13 :8
       Rockford, IL :16 :9
       Rocky Mount, NC :13 :8
       Rome, GA :18 :11
       Russellville, AR :14 :9
       Rutland, VT :15 :9
       Sacramento--Arden-Arcade--Roseville, CA :15 :9
       Salinas, CA :10 :6
       Salisbury, NC :16 :9
       Salt Lake City, UT :15 :9
       San Antonio, TX :14 :9
       San Diego-Carlsbad-San Marcos, CA :24 :14
       San Francisco-Oakland-Fremont, CA :16 :10
       San Jose-Sunnyvale-Santa Clara, CA :16 :10
       San Luis Obispo-Paso Robles, CA :16 :10
       Santa Barbara-Santa Maria-Goleta, CA :14 :9
       Santa Cruz-Watsonville, CA :10 :6
       Santa Fe, NM :8 :5
       Santa Rosa-Petaluma, CA :14 :8
       Sault Ste. Marie, MI :14 :8
       Savannah, GA :17 :10
       Scottsbluff, NE :9 :6
       Scranton--Wilkes-Barre, PA :14 :8
       Seaford, DE :14 :8
       Seattle-Tacoma-Bellevue, WA :16 :10
       Sheridan, WY :14 :8
       Shreveport-Bossier City, LA :26 :16
       Sierra Vista-Douglas, AZ :11 :7
       Sioux City, IA-NE-SD :16 :10
       Sioux Falls, SD :14 :9
       Somerset, KY :16 :10
       South Bend-Mishawaka, IN-MI :21 :13
       Spartanburg, SC :16 :10
       Spokane, WA :12 :7
       Springfield, IL :16 :10
       Springfield, MA :15 :9
       Springfield, MO :17 :10
       Springfield, OH :17 :10
       St. Cloud, MN :14 :8
       St. George, UT :11 :7
       St. Joseph, MO-KS :20 :12
       St. Louis, MO-IL :22 :13
       State College, PA :19 :11
       Stockton, CA :21 :12
       Syracuse, NY :12 :7
       Talladega-Sylacauga, AL :17 :10
       Tallahassee, FL :14 :9
       Tampa-St. Petersburg-Clearwater, FL :13 :8
       Terre Haute, IN :19 :12
       Texarkana, TX-Texarkana, AR :18 :11
       Thomasville-Lexington, NC :17 :10
       Toledo, OH :17 :10
       Topeka, KS :14 :9
       Torrington, CT :9 :6
       Trenton-Ewing, NJ :15 :9
       Truckee-Grass Valley, CA :10 :6
       Tucson, AZ :10 :6
       Tulsa, OK :16 :10
       Tupelo, MS :16 :10
       Tuscaloosa, AL :16 :9
       Ukiah, CA :12 :7
       Valdosta, GA :14 :9
       Vallejo-Fairfield, CA :15 :9
       Vernal, UT :12 :7
       Virginia Beach-Norfolk-Newport News, VA-NC :14 :8
       Visalia-Porterville, CA :25 :15
       Warner Robins, GA :16 :10
       Washington-Arlington-Alexandria, DC-VA-MD-WV :19 :12
       Waterloo-Cedar Falls, IA :16 :10
       Watertown, SD :18 :11
       Weirton-Steubenville, WV-OH :20 :12
       Wenatchee, WA :17 :10
       Wheeling, WV-OH :20 :12
       Wichita, KS :16 :9
       Wilmington, NC :14 :9
       Winchester, VA-WV :16 :10
       Winston-Salem, NC :15 :9
       Worcester, MA :15 :9
       Yakima, WA :17 :10
       York-Hanover, PA :20 :12
       Youngstown-Warren-Boardman, OH-PA :23 :14
       Yuba City, CA :12 :7
       Yuma, AZ :14 :9
       </pre>


.. parsonsprob:: file_mixed_pollution
    :numbered: left
    :adaptive:
    :practice: T

    The following program prints the pollution information for all cities that start with a ``D``,
    but the code is mixed up. Drag the blocks of statements from the left column to the right column
    and put them in the right order. Watch your indentation.
    -----
    # open the file for reading
    inFile = open("uspoll.txt","r")
    =====
    # for each line in the file
    for line in inFile:
    =====
        # split at the :
        v = line.split(":")

        # get the city
        city = v[0]
    =====
        # if city starts with an D print info
        if (city.find("D") == 0):
            print('City: ', city)
            print("Pollution values:",v[1],v[2])
    =====
    # close the file
    inFile.close()

.. parsonsprob:: file_mixed_largest
    :numbered: left
    :adaptive:
    :practice: T

    PM 2.5 is an air pollutant that is harmful at high levels. The following program
    prints the maximum PM 2.5 pollution found, but the code is mixed up. Drag the blocks
    of statements from the left column to the right column and put them in the right order.
    Watch your indentation.
    -----
    # read all the lines
    inFile = open("uspoll.txt","r")
    lines = inFile.readlines()
    inFile.close()

    # initialize the variables
    maxCity = ''
    max25 = 0
    =====
    # loop through the lines
    for line in lines:
    =====
        # split at :
        values = line.split(":")
    =====
        # get the PM 2.5 pollution
        new25 = float(values[2])
    =====
        # if current > max
        if new25 > max25:
    =====
            # save the new max info
            maxCity = values[0]
            max25 = new25
    =====
    # print the largest PM 2.5 value
    print("Largest is ",max25," in ",maxCity)

.. parsonsprob:: file_mixed_lowest
    :numbered: left
    :adaptive:
    :practice: T

    The following program prints the minimum PM 2.5 pollution found, but the code is mixed up.
    Drag the blocks of statements from the left column to the right column and put them in the
    right order. Watch your indentation.
    -----
    # read all the lines
    inFile = open("uspoll.txt","r")
    lines = inFile.readlines()
    inFile.close()

    # initialize the variables
    minCity = ''
    min25 = 500
    =====
    # loop through the lines
    for line in lines:
    =====
        # split at :
        values = line.split(":")
    =====
        # get the PM 2.5 pollution
        new25 = float(values[2])
    =====
        # if current <  min
        if new25 < min25:
    =====
            # save new min info
            minCity = values[0]
            min25 = new25
    =====
    # print the smallest PM 2.5 value
    print("Smallest PM 2.5 ",min25," in ",minCity)

.. parsonsprob:: file_mixed_average
    :numbered: left
    :adaptive:
    :practice: T

    The following program prints the average PM 2.5 pollution found, but the code is
    mixed up. Drag the blocks of statements from the left column to the right column
    and put them in the right order. Watch your indentation.
    -----
    # read all the lines
    inFile = open("uspoll.txt","r")
    lines = inFile.readlines()
    inFile.close()

    # initialize the variables
    total25 = 0
    count = 1.0
    =====
    # loop through the lines
    for line in lines:
    =====
        # split at :
        values = line.split(":")
    =====
        # get the PM 2.5 pollution
        new25 = float(values[2])
    =====
        # add to the total and count
        total25 = total25 + new25
        count = count + 1
    =====
    # print the average PM 2.5 value
    print("Average PM 2.5 value is ",total25/count)

.. parsonsprob:: file_mixed_stateav
    :numbered: left
    :adaptive:
    :practice: T

    The following program prints the average PM 2.5 pollution for a state, but the code is
    mixed up. Drag the blocks of statements from the left column to the right column and put
    them in the right order. Watch your indentation.
    -----
    # read all the lines
    infile = open("uspoll.txt","r")
    lines = infile.readlines()
    infile.close()

    # initialize the variables
    state = "CA"
    total25 = 0
    count = 1.0
    =====
    # loop through the lines
    for line in lines:
    =====
        # split at :
        values = line.split(":")
    =====
        # split at ,
        cityState = values[0].split(",")
    =====
        # if found state
        if cityState[1].find(state) >= 0:
    =====
            # add the current to the sum
            new25 = float(values[2])
            total25 = total25 + new25

            # increment the count
            count = count + 1
    =====
    # print the average
    avg = total25/count
    print("Avg for " , state, " is ", avg)
