我已经在Python中构建了一个用于预订剧院座位的代码。代码工作正常,除了我需要能够循环重复代码,因此一旦预订了一些座位,您就可以选择预订更多座位。
这是代码:
NumSeat = input ("Please enter the number of seats you desire: ")
print (" ")
import re
if re.match("[0-9]", NumSeat):
if int(NumSeat) > 6:
print ("You may only book a maximum of 6 seats")
else:
if int(NumSeat) < 1:
print ("You must book at least 1 seat")
else:
SeatRow = input ("Please enter the row you want to sit in: ")
if len(SeatRow) > 1:
print ("Invalid row")
else:
if SeatRow.count ("A") or SeatRow.count ("a") == 1:
print ("The seats avaiable in row", SeatRow, "for", int(NumSeat), "people are", RowA[0],"-", RowA[int(NumSeat)-1])
RowA = RowA[int(NumSeat):]
else:
if SeatRow.count ("B") or SeatRow.count ("b") == 1:
print ("The seats avaiable in row", SeatRow, "for", int(NumSeat), "people are", RowB[0],"-", RowB[int(NumSeat)-1])
RowB = RowB[int(NumSeat):]
else:
if SeatRow.count ("C") or SeatRow.count ("c") == 1:
print ("The seats avaiable in row", SeatRow, "for", int(NumSeat), "people are", RowC[0],"-", RowC[int(NumSeat)-1])
RowC = RowC[int(NumSeat):]
else:
if SeatRow.count ("D") or SeatRow.count ("d") == 1:
print ("The seats avaiable in row", SeatRow, "for", int(NumSeat), "people are", RowD[0],"-", RowD[int(NumSeat)-1])
RowD = RowD[int(NumSeat):]
else:
if SeatRow.count ("E") or SeatRow.count ("e") == 1:
print ("The seats avaiable in row", SeatRow, "for", int(NumSeat), "people are", RowE[0],"-", RowE[int(NumSeat)-1])
RowE = RowE[int(NumSeat):]
else:
print("Invalid row")
else:
print ("You must input a number")
如果您有任何建议,那就太棒了
答案 0 :(得分:0)
但你的问题是避免重复,你可以创建一个字典。您可以通过使用行是键的字典并在其中添加席位数组来完全删除if / else或if elif。例如,您可能需要强制该行成为第一个元素a1
,如果不是,则需要进行一些解析。例如,您可以这样做:
import re
#initialize the rows,
valid_rows = [ 'a','b','c','d']
row_size = 10 # 10 seats per row
rows = dict(zip(valid_rows, [range(row_size)]*len(valid_rows))) # as suggested by Burhan in comments
# a forever loop booking seats (if no errors happen)
while(True):
num_seat = int(raw_input ("Please enter the number of seats you desire: "))
if re.match("[0-9]", str(num_seat)):
if num_seat > 6:
print ("You may only book a maximum of 6 seats")
elif num_seat < 1:
print ("You must book at least 1 seat")
else:
seat_row = raw_input("Please enter the row you want to sit in: ")
if seat_row in valid_rows:
if len(rows[seat_row]) < num_seat:
print "Not space in that row"
else:
print ("The seats avaiable in row", seat_row, "for",
num_seat, "people are", rows[seat_row][0],"-", rows[seat_row][num_seat-1])
rows[seat_row] = rows[seat_row][num_seat:]
else:
print("Invalid row")