2016-02-12 77 views
1

我试图设置一个计数事件,它将计算一个数组中有多少人,然后我想在计算中使用该数字来计算从这些票中赚取的总金额,但我不知道如何我应该这样做。如何设置计数事件?

每个customer_ID都以c开头,我想用它作为搜索词。

def read_info(): 
    customer_id_list = [] 
    ticket_id_list = [] 
    number_of_tickets_list = [] 
    buy_method_list = [] 
    ticket_price = 0 
    total_for_customer_list = [] 

    file = open ("Data.txt","r") 
    for line in file: 

     #Splits the data from the text file into it's corresponding variables. 
     customer_id,ticket_id,number_of_tickets,buy_method = line.split(",",4) 

     #Adds customer_id into the customer_id_list array 
     customer_id_list.append(customer_id) 

     # Adds ticket_id into the ticket_id_list array 
     ticket_id_list.append(ticket_id) 

     # Adds number_of_tickets into the number_of_tickets_list array 
     number_of_tickets_list.append(number_of_tickets) 

     #Adds the buy_method into the buy_method_list array 
     buy_method_list.append(buy_method) 

     #Using IF statements the program works out the price for each day which will be later used to calculate the total price for the customer and the total raised for charity. 
     if ticket_id in ['F1','F2','F3']: 
      ticket_price = 10 
     if ticket_id in ['W1','W2','W3','T1','T2','T3']: 
      ticket_price = 5 

     #converts the ticket_price from a string variable to a integer variable which allows this variable to be used in a calculation. 
     ticket_price = int(ticket_price) 
     #converts the number_of_tickets from a string variable to a integer variable which will be used in a calculation. 
     number_of_tickets = int(number_of_tickets) 

     #calculates the total price that will be paid for each customer by multyplying the ticket_Price which was worked out using the 'IF' statements by the number_of_tickets the customer has bought 
     total_for_customer = ticket_price * number_of_tickets 


    return customer_id_list,ticket_id_list,number_of_tickets_list,buy_method_list,ticket_price,total_for_customer 

def find_number_of_people (customer_id_list): 




#main program 
customer_id_list,ticket_id_list,number_of_tickets_list,buy_method_list,ticket_price,total_for_customer = read_info() 
find_number_of_people (customer_id_list) 
+0

你有任何可以分享的代码吗?显示你试过的东西? –

+0

我曾尝试过几件事,但没有任何工作,到目前为止,我必须说我不知道​​我失败后从哪里开始。 – adiwitko

+0

我一直在寻找一个计数事件的例子,它从一个数组中读取信息,我可以用它作为参考,从中得到一个粗略的想法。 – adiwitko

回答

0

由于我不能评论你的问题,让我猜你想要什么。

如果你想要得到的长度(即数组中元素的个数),尝试:

len(array_name) 

所以我看你有没有计算的总金额为每一位顾客,只需添加他们和你将获得所有门票的总金额。要做到这一点,请尝试:

grand_total = 0 
for money in total_for_customer_list: 
    grand_total = grand_total + money 

如果我把你错了,只是跟我讨论我的回答下,这样我可以回答。

0

以下是您的代码的重构版本。你能否在你的问题中解释你想做什么?也许你可以完成下面所示的main函数,并假装存在几个你想做的功能。

import csv 


TICKET_PRICES = dict(F1=10, F2=10, F3=10, T1=5, T2=5, T3=5, W1=5, W2=5, W3=5) 
DATA_COLUMNS = ('customer', 'ticket_type', 'ticket_count', 'ticket_total', 
       'method') 


def main(): 
    """Process ticket sale information from a database file.""" 
    data = read_data('data.txt') 
    columns = pivot(data, DATA_COLUMNS) 
    find_number_of_people(columns['customer']) 


def read_data(path): 
    """Get all ticket data from a file and start processing the information.""" 
    data = [] 
    with open(path, newline='') as file: 
     reader = csv.reader(file) 
     for customer, ticket_type, count, method in reader: 
      ticket_price = TICKET_PRICES[ticket_type] 
      ticket_count = int(count) 
      ticket_total = ticket_price * ticket_count 
      row = customer, ticket_type, ticket_count, ticket_total, method 
      data.append(row) 
    return data 


def pivot(data, column_names): 
    """Convert the data table into a collection of related columns.""" 
    columns = {name: [] for name in column_names} 
    for row in data: 
     for key, value in zip(column_names, row): 
      columns[key].append(value) 
    return columns 


def find_number_of_people(customers): 
    """What am I supposed to do here? The current goal is not clear.""" 
    pass 


if __name__ == '__main__': 
    main()