2016-02-12 25 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()