Fix Excel/csv Imports Exports
I am at the beginning of learning Python trying to learn. The concept of the program is an 'Application' for a coffee shop to take orders [![enter image description here][1]][1]
Solution 1:
It looks like you don't loop through the Customers
dictionary in order to add it to the CSV File. You can use the .keys()
attribute of the Customers
nested dictionary and loop through each customer dictionary. Inside the loop, use .writerow()
function to add the data of the current customer.
My changes to the code:
# Rest of the code
csv_writer = DictWriter(open('data_entered.csv', 'a'),
fieldnames=['Customer Name', 'Customer Address', 'Customer ID', 'Total Orders',
'Total Amount'])
csv_writer.writeheader()
for customer_name in Customers.keys():
csv_writer.writerows(
[{'Customer Name': Customers[customer_name]['Name'], 'Customer Address': Customers[customer_name]['Address'],
'Customer ID': Customers[customer_name]['ID'],
'Total Orders': Customers[customer_name]['Orders'],
'Total Amount': Customers[customer_name]['TotalAmount']}]) # TOTAL AMOUNT= 0 IF NOT MORE THAN 2 TIMES ORDER
Full code :
import uuid # GET A RANDOM ID FOR THE CUSTOMERfrom datetime import date # GET CURRENT DATEfrom csv import DictWriter
file = open('CustomerNames.txt', 'w')
file1 = open('Orders_Per_Users.txt', 'a')
file2 = open('data_entered.csv', 'a')
x = -1
in_list = -1
length = 0
Total_Amount = 0.0
Customer_List = []
Address_List = []
Today_Key = date.toordinal(date.today())
Today_Date = date.today()
Print_Today = Today_Date
Customers = {}
Dates = {}
FirstEmployeeAccountUsername = "coffee1"
FirstEmployeeAccountPassword = "coffeeshop1"
SecondEmployeeAccountUsername = "coffee2"
SecondEmployeeAccountPassword = "coffeeshop2"
ThirdEmployeeAccountUsername = "coffee3"
ThirdEmployeeAccountPassword = "coffeeshop3"print("Welcome to our coffee shop!")
print("Login")
# EMPLOYEE LOGIN PROCESS STARTS
LoginEnter = Truewhile LoginEnter:
username = input("Username: ")
password = input("Password: ")
if username == FirstEmployeeAccountUsername and password == FirstEmployeeAccountPassword or username == SecondEmployeeAccountUsername and password == SecondEmployeeAccountPassword or username == ThirdEmployeeAccountUsername and password == ThirdEmployeeAccountPassword:
print("Login Successful")
LoginEnter = Falseelse:
print("Invalid Login. Try again")
# EMPLOYEE LOGIN PROCESS ENDS# PROCESS AFTER ORDER PLACEMENT STARTS
process1 = True
process2 = Truewhile process1:
while process2:
x += 1
Customer_Name = input("Customer's Name:")
Customer_Address = input("Customer's Address:")
Address_List.append(Customer_Address)
Customer_List.append(Customer_Name)
if x == 1:
if Customer_Address in Address_List:
First_Index = Address_List.index(Customer_Address)
if Customer_Name == Customer_List[First_Index]:
Customer_List.pop(First_Index)
Address_List.pop(First_Index)
x = x - 1if Today_Key notin Dates:
Dates[Today_Key] = {}
if Customer_Name notin Dates[Today_Key]:
Dates[Today_Key][Customer_Name] = 1else:
Dates[Today_Key][Customer_Name] += 1if Customer_Name in Customers:
Customers[Customer_Name]['Orders'] += 1
Customers[Customer_Name]['TotalAmount'] = Total_Amount
else:
Customers[Customer_Name] = {}
Customers[Customer_Name]['Name'] = Customer_Name
Customers[Customer_Name]['Address'] = Customer_Address
Customers[Customer_Name]['ID'] = uuid.uuid1()
Customers[Customer_Name]['Orders'] = 1
Customers[Customer_Name]['TotalAmount'] = 0print(Customer_Name, "has ordered {} time(s)".format(Customers[Customer_Name]['Orders']))
if Customers[Customer_Name]['TotalAmount'] == 0:
print("This is the first time", Customer_Name, "orders")
else:
print(Customer_Name, "has spent", Customers[Customer_Name]['TotalAmount'], "in total")
print("Current Date is: {}".format(Today_Date))
Order_Price = float(input("Total amount of order:"))
Total_Amount = Order_Price + Total_Amount
if Print_Today != Today_Date:
print("Total amount of orders today is: ", float(Total_Amount))
answer1 = input("Send another order? (Y/N)").lower()
process2 = answer1 == "y"
LengthCustomersList = len(Customer_List)
length += 1
in_list += 1
file.write(str(Customer_List[0:]) + '\n') # TAKE CARE FOR DUPLICATE NAMES FROM SAME ADDRESS
file1.write(Customer_Name + " has ordered " + str(Customers[Customer_Name]['Orders']) + " times in total\n")
# FIX DUPLICATES SAME NAME SAME ADDRESS
csv_writer = DictWriter(open('data_entered.csv', 'a'),
fieldnames=['Customer Name', 'Customer Address', 'Customer ID', 'Total Orders',
'Total Amount'])
csv_writer.writeheader()
for customer_name in Customers.keys():
csv_writer.writerows(
[{'Customer Name': Customers[customer_name]['Name'], 'Customer Address': Customers[customer_name]['Address'],
'Customer ID': Customers[customer_name]['ID'],
'Total Orders': Customers[customer_name]['Orders'],
'Total Amount': Customers[customer_name]['TotalAmount']}]) # TOTAL AMOUNT= 0 IF NOT MORE THAN 2 TIMES ORDERifint(length) == int(LengthCustomersList):
process1 = False
file.close()
file1.close()
file2.close()
More information on .keys()
and other dictionary built-in methods: https://www.w3schools.com/python/python_ref_dictionary.asp
Post a Comment for "Fix Excel/csv Imports Exports"