Thread Shed project - Python 3 course

Hello, I’ve run into a problem on task 19/20 in this project.
On task 20 it asks to run the color_count function with ‘white’, and it should return 28. But my function returns 112.
I’ve looked at the code, and can see that I might append the items 4 times to the same list? But I’m stuck on how to fix it without starting over. I’ve looked at previous post with similar problems, but I’m still not able to fix my code.

daily_sales = \ """Edith Mcbride ;,;$1.21 ;,; white ;,; 09/15/17 ,Herbert Tran ;,; $7.29;,; white&blue;,; 09/15/17 ,Paul Clarke ;,;$12.52 ;,; white&blue ;,; 09/15/17 ,Lucille Caldwell ;,; $5.13 ;,; white ;,; 09/15/17, Eduardo George ;,;$20.39;,; white&yellow ;,;09/15/17 , Danny Mclaughlin;,;$30.82;,; purple ;,;09/15/17 ,Stacy Vargas;,; $1.85 ;,; purple&yellow ;,;09/15/17, Shaun Brock;,; $17.98;,;purple&yellow ;,; 09/15/17 , Erick Harper ;,;$17.41;,; blue ;,; 09/15/17, Michelle Howell ;,;$28.59;,; blue;,; 09/15/17 , Carroll Boyd;,; $14.51;,; purple&blue ;,; 09/15/17 , Teresa Carter ;,; $19.64 ;,; white;,;09/15/17 , Jacob Kennedy ;,; $11.40 ;,; white&red ;,; 09/15/17, Craig Chambers;,; $8.79 ;,; white&blue&red ;,;09/15/17 , Peggy Bell;,; $8.65 ;,;blue ;,; 09/15/17, Kenneth Cunningham ;,; $10.53;,; green&blue ;,; 09/15/17 , Marvin Morgan;,; $16.49;,; green&blue&red ;,; 09/15/17 ,Marjorie Russell ;,; $6.55 ;,; green&blue&red;,; 09/15/17 , Israel Cummings;,; $11.86 ;,;black;,; 09/15/17, June Doyle ;,; $22.29 ;,; black&yellow ;,;09/15/17 , Jaime Buchanan ;,; $8.35;,; white&black&yellow ;,; 09/15/17, Rhonda Farmer;,;$2.91 ;,; white&black&yellow ;,;09/15/17, Darren Mckenzie ;,;$22.94;,;green ;,;09/15/17,Rufus Malone;,;$4.70 ;,; green&yellow ;,; 09/15/17 ,Hubert Miles;,; $3.59 ;,;green&yellow&blue;,; 09/15/17 , Joseph Bridges ;,;$5.66 ;,; green&yellow&purple&blue ;,; 09/15/17 , Sergio Murphy ;,;$17.51 ;,; black ;,; 09/15/17 , Audrey Ferguson ;,; $5.54;,;black&blue ;,;09/15/17 ,Edna Williams ;,; $17.13;,; black&blue;,; 09/15/17, Randy Fleming;,; $21.13 ;,;black ;,;09/15/17 ,Elisa Hart;,; $0.35 ;,; black&purple;,; 09/15/17 , Ernesto Hunt ;,; $13.91 ;,; black&purple ;,; 09/15/17, Shannon Chavez ;,;$19.26 ;,; yellow;,; 09/15/17 , Sammy Cain;,; $5.45;,; yellow&red ;,;09/15/17 , Steven Reeves ;,;$5.50 ;,; yellow;,; 09/15/17, Ruben Jones ;,; $14.56 ;,; yellow&blue;,;09/15/17 , Essie Hansen;,; $7.33 ;,; yellow&blue&red ;,; 09/15/17 , Rene Hardy ;,; $20.22 ;,; black ;,; 09/15/17 , Lucy Snyder ;,; $8.67 ;,;black&red ;,; 09/15/17 ,Dallas Obrien ;,; $8.31;,; black&red ;,; 09/15/17, Stacey Payne ;,; $15.70 ;,; white&black&red ;,;09/15/17 , Tanya Cox ;,; $6.74 ;,;yellow ;,; 09/15/17 , Melody Moran ;,; $30.84 ;,;yellow&black;,; 09/15/17 , Louise Becker ;,; $12.31 ;,; green&yellow&black;,; 09/15/17 , Ryan Webster;,;$2.94 ;,; yellow ;,; 09/15/17 ,Justin Blake ;,; $22.46 ;,;white&yellow ;,; 09/15/17, Beverly Baldwin ;,; $6.60;,; white&yellow&black ;,;09/15/17 , Dale Brady ;,; $6.27 ;,; yellow ;,;09/15/17 ,Guadalupe Potter ;,;$21.12 ;,; yellow;,; 09/15/17 , Desiree Butler ;,;$2.10 ;,;white;,; 09/15/17 ,Sonja Barnett ;,; $14.22 ;,;white&black;,; 09/15/17, Angelica Garza;,;$11.60;,;white&black ;,; 09/15/17 , Jamie Welch ;,; $25.27 ;,; white&black&red ;,;09/15/17 , Rex Hudson ;,;$8.26;,; purple;,; 09/15/17 , Nadine Gibbs ;,; $30.80 ;,; purple&yellow ;,; 09/15/17 , Hannah Pratt;,; $22.61 ;,; purple&yellow ;,;09/15/17,Gayle Richards;,;$22.19 ;,; green&purple&yellow ;,;09/15/17 ,Stanley Holland ;,; $7.47 ;,; red ;,; 09/15/17 , Anna Dean;,;$5.49 ;,; yellow&red ;,; 09/15/17 , Terrance Saunders ;,; $23.70 ;,;green&yellow&red ;,; 09/15/17 , Brandi Zimmerman ;,; $26.66 ;,; red ;,;09/15/17 ,Guadalupe Freeman ;,; $25.95;,; green&red ;,; 09/15/17 ,Irving Patterson ;,;$19.55 ;,; green&white&red ;,; 09/15/17 ,Karl Ross;,; $15.68;,; white ;,; 09/15/17 , Brandy Cortez ;,;$23.57;,; white&red ;,;09/15/17, Mamie Riley ;,;$29.32;,; purple;,;09/15/17 ,Mike Thornton ;,; $26.44 ;,; purple ;,; 09/15/17, Jamie Vaughn ;,; $17.24;,;green ;,; 09/15/17 , Noah Day ;,; $8.49 ;,;green ;,;09/15/17 ,Josephine Keller ;,;$13.10 ;,;green;,; 09/15/17 , Tracey Wolfe;,;$20.39 ;,; red ;,; 09/15/17 , Ignacio Parks;,;$14.70 ;,; white&red ;,;09/15/17 , Beatrice Newman ;,;$22.45 ;,;white&purple&red ;,; 09/15/17, Andre Norris ;,; $28.46 ;,; red;,; 09/15/17 , Albert Lewis ;,; $23.89;,; black&red;,; 09/15/17, Javier Bailey ;,; $24.49 ;,; black&red ;,; 09/15/17 , Everett Lyons ;,;$1.81;,; black&red ;,; 09/15/17 , Abraham Maxwell;,; $6.81 ;,;green;,; 09/15/17 , Traci Craig ;,;$0.65;,; green&yellow;,; 09/15/17 , Jeffrey Jenkins ;,;$26.45;,; green&yellow&blue ;,; 09/15/17, Merle Wilson ;,; $7.69 ;,; purple;,; 09/15/17,Janis Franklin ;,;$8.74 ;,; purple&black ;,;09/15/17 , Leonard Guerrero ;,; $1.86 ;,;yellow ;,;09/15/17,Lana Sanchez;,;$14.75 ;,; yellow;,; 09/15/17 ,Donna Ball ;,; $28.10 ;,; yellow&blue;,; 09/15/17 , Terrell Barber ;,; $9.91 ;,; green ;,;09/15/17 ,Jody Flores;,; $16.34 ;,; green ;,; 09/15/17, Daryl Herrera ;,;$27.57;,; white;,; 09/15/17 , Miguel Mcguire;,;$5.25;,; white&blue ;,; 09/15/17 , Rogelio Gonzalez;,; $9.51;,; white&black&blue ;,; 09/15/17 , Lora Hammond ;,;$20.56 ;,; green;,; 09/15/17,Owen Ward;,; $21.64 ;,; green&yellow;,;09/15/17,Malcolm Morales ;,; $24.99 ;,; green&yellow&black;,; 09/15/17 , Eric Mcdaniel ;,;$29.70;,; green ;,; 09/15/17 ,Madeline Estrada;,; $15.52;,;green;,; 09/15/17 , Leticia Manning;,;$15.70 ;,; green&purple;,; 09/15/17 , Mario Wallace ;,; $12.36 ;,;green ;,; 09/15/17,Lewis Glover;,; $13.66 ;,; green&white;,;09/15/17, Gail Phelps ;,;$30.52 ;,; green&white&blue ;,; 09/15/17 , Myrtle Morris ;,; $22.66 ;,; green&white&blue;,;09/15/17""" #------------------------------------------------ # Start coding below! daily_sales_replaced = daily_sales.replace(';,;', ' - ') # print(my_daily_sales) daily_transactions = daily_sales_replaced.split(',') # print(daily_transactions) daily_transactions_split = [] for sale in daily_transactions: daily_transactions_split.append(sale.split(' - ')) # print(daily_transactions_split) transactions_clean = [] for trans in daily_transactions_split: trans_clean = [] for n in trans: trans_clean.append(n.replace("\n", "").strip(" ")) transactions_clean.append(trans_clean) # print(transactions_clean) customers = [] sales = [] thread_sold = [] for sale in transactions_clean: for name in sale: customers.append(sale[0]) thread_sold.append(sale[2]) sales.append(sale[1]) # print(customers) # print(thread_sold) # print(sales) total_sales = 0 for num in sales: total_sales += float(num.strip('$')) # print(total_sales) thread_sold_split = [] # Iterate through thread_sold for thread in thread_sold: if '&' in thread: # Split the string around '&' and add each color individually thread_sold_split.extend(thread.split('&')) else: # Append single color directly thread_sold_split.append(thread) print(thread_sold_split) def color_count(color): count = 0 for thread in thread_sold_split: if thread == color: count += 1 return count print(color_count('white'))
1 Like

It is a good idea to step through your code and utilize your print statements to verify whether you are seeing the outputs you expect.

If you uncomment the statement,

print(transactions_clean)

the output seems to be reasonable.

But, if you uncomment the statement,

print(customers)

# ['Edith Mcbride', 'Edith Mcbride', 'Edith Mcbride', 'Edith Mcbride', 
# 'Herbert Tran', 'Herbert Tran', 'Herbert Tran', 'Herbert Tran', ... ]

you can see that you are getting 4 copies of the same thing.

The code between the two print statements is:

for sale in transactions_clean:
  for name in sale:
    customers.append(sale[0])
    thread_sold.append(sale[2])
    sales.append(sale[1])

So, seemingly, the problem lies in this snippet of code. Now, that we have possibly closed in to the potential issue, work through this snippet. Try to answer the following questions. What is the structure of transactions_clean? In each iteration of the outer loop, what value will be assigned to the sale loop variable? Use a print statement if necessary for confirmation. What is the inner loop iterating over? In each iteration of the inner loop, what value will be assigned to the name loop variable? Use a print statement if necessary for confirmation.

Hint

Do you need the inner loop? Isn’t the outer loop enough to extract all the necessary data?

1 Like

Thanks for the help. I’ve solved the issue now :slight_smile:

As mentioned, I didn’t need the innerloop in my ‘for sale in transactions_clean’-loop. I removed the ‘for name in sale:’ and now I get the correct result in the terminal.