也许你想把它放在一个类中,并将x
定义为属性。我改变了很多,不太确定这是否是你想要的。例如,我将x
更名为self.seats
,并将其结构更改为仅dict
而不是list
的dict
,因为这对我来说似乎更容易。
#!/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.工作
你带*名单工作*。我不确定你问的是什么问题,但是我怀疑是因为你的函数只有局部变量,并且没有返回任何东西,所以你看不到任何东西效果。 –
在**座位**功能之外初始化** x **,并将其作为参数传入 –
另外,在我看来,您只能使用第一行,不是? –