2017-04-01 41 views
0

我在Python中製作電影預訂系統,並且無法保存已修改的數組,因此它顯示座位已被佔用,我正在使用它來創建數組。我想重新使用已經被修改的數組

def seats(): 
    rows = "ABCDE" 
    columns = range(0, 10) 
    x = [{ltr + str(y): 'Empty' for ltr in rows} for y in columns] 
    pprint(x) 
    res = str(raw_input("Pick a seat ")) 
    if res[1] == '0': 
     if x[0][res] == 'Taken': 
      print ('Seat taken') 
    else: 
     x[0][res] = 'Taken' 

請注意,我不是那麼有經驗,所以任何提示,以使代碼更清潔也將被評價。客戶應該能夠購買多個座位,我已經整理出來了,但是如果我返回到菜單,然後返回到座位,所有'帶座位'座位都會再次顯示爲'空'。

+0

你帶*名單工作*。我不確定你問的是什麼問題,但是我懷疑是因爲你的函數只有局部變量,並且沒有返回任何東西,所以你看不到任何東西效果。 –

+2

在**座位**功能之外初始化** x **,並將其作爲參數傳入 –

+1

另外,在我看來,您只能使用第一行,不是? –

回答

0

也許你想把它放在一個類中,並將x定義爲屬性。我改變了很多,不太確定這是否是你想要的。例如,我將x更名爲self.seats,並將其結構更改爲僅dict而不是listdict,因爲這對我來說似乎更容易。

#!/usr/bin/env python3 
class Cinema(object): 

    def __init__(self, rows, columns): 
     self.rows = rows 
     self.columns = columns 
     # True: seat is free, seat is availbale 
     self.seats = {"{row}{col}".format(row=row, col=col): True for row in rows for col in columns} 

    def ask_for_seat(self): 
     print("The following seats are still available:") 
     self.print_free_seats() 
     seat = input("Pick a seat: ") 
     if seat in self.seats: 
      if self.seats[seat]: 
       print("Thank you. We are reserving seat {} for you.".format(seat)) 
       self.seats[seat] = False 
       return seat 
      else: 
       print("Seat {} is already reserved. Please choose another one.".format(seat)) 
       return self.ask_for_seat() 
     else: 
      print("Sorry, this cinema does not have a seat {}. Please choose another one.".format(seat)) 
      return self.ask_for_seat() 

    def print_free_seats(self): 
     for row in self.rows: 
      for col in self.columns: 
       seat = "{row}{col}".format(row=row, col=col) 
       if self.seats[seat]: 
        print(seat, end=" ") 
       else: 
        print(" "*len(seat), end=" ") 
      print() 


if __name__=='__main__': 
    c = Cinema("ABCDE", range(0, 10)) 
    while True: 
     c.ask_for_seat() 

請注意,這是Python 3的代碼,並且不使用Python 2.工作