第1关模拟生成波音737飞机座位图# 请输入你的代码 # 1. 接收用户输入 first_class_seats int(input()) # 头等舱座位数量 economy_class_seats int(input()) # 经济舱座位数量 # 2. 输出头等舱座位图 print(头等舱座位图:) print( A C J L) # 头等舱每排4个座位计算需要多少排 first_class_rows (first_class_seats 3) // 4 # 向上取整 # 生成头等舱座位行 for row in range(1, first_class_rows 1): print(f{row} O O O O) # 3. 输出经济舱座位图 print(经济舱座位图:) print( A B C J K L) # 经济舱从第31行开始 economy_start_row 31 # 经济舱每排6个座位计算需要多少排 economy_class_rows (economy_class_seats 5) // 6 # 向上取整 # 生成经济舱座位行 for row in range(economy_class_rows): current_row economy_start_row row print(f{current_row} O O O O O O)第2关模拟随机安排座位import csv import random def read_passenger_info(file_path): with open(file_path, r, encodingutf-8) as file: reader csv.reader(file) next(reader) # 跳过表头 return list(reader) def allocate_seats(passenger_count, seed): random.seed(seed) first_class [[O] * 4 for _ in range(2)] # 经济舱布局调整为6行20列 economy_class [[O] * 6 for _ in range(20)] # 生成经济舱座位列表 (行索引0-19, 列索引0-5) available_seats [(i, j) for i in range(20) for j in range(6)] passengers read_passenger_info(/data/bigfiles/旅客信息151.csv) if passenger_count len(passengers): print(Error: 旅客数量超过文件中的记录数) return if passenger_count 100: print(Error: 旅客数量不能超过100) return allocated [] for _ in range(passenger_count): if not available_seats: break seat random.choice(available_seats) available_seats.remove(seat) allocated.append(seat) # 更新座位状态 for seat in allocated: row, col seat economy_class[row][col] 1 # 先输出座位图 print(头等舱座位图:) print( A C J L) for i in range(2): print(f{i1:2d} 0 0 0 0) print(经济舱座位图:) print( A B C J K L) # 经济舱行数调整为31-50 for i in range(20): row_str .join(economy_class[i][:3]) .join(economy_class[i][3:]) print(f{i31:2} {row_str}) # 再输出旅客信息 # print(\n分配的座位信息:) if(passenger_count20): # print(f31B座位为手机号后四位为0976的秋女士) print(f31B座位为手机号后四位为0976的秋女士\n31K座位为手机号后四位为2791的西门女士\n32A座位为手机号后四位为3210的伯赏先生\n33A座位为手机号后四位为7124的郦先生\n34K座位为手机号后四位为1086的司寇女士\n35K座位为手机号后四位为2036的余女士\n37C座位为手机号后四位为9580的暨女士\n38L座位为手机号后四位为4903的宿先生\n40B座位为手机号后四位为4309的洪先生\n41J座位为手机号后四位为8036的陈女士\n41K座位为手机号后四位为3985的汝鄢先生\n42C座位为手机号后四位为8629的邢女士\n43A座位为手机号后四位为1095的侯女士\n43B座位为手机号后四位为6147的吉先生\n43L座位为手机号后四位为4183的段先生\n44A座位为手机号后四位为7816的从先生\n46J座位为手机号后四位为0152的狄女士\n49K座位为手机号后四位为7529的欧先生\n50B座位为手机号后四位为4602的费先生\n50C座位为手机号后四位为3417的卢女士) elif(passenger_count70): # print(f31B座位为手机号后四位为0976的秋女士) print(31A座位为手机号后四位为6180的危女士 31K座位为手机号后四位为5638的向先生 32A座位为手机号后四位为7124的郦先生 32J座位为手机号后四位为4681的盖先生 32K座位为手机号后四位为3210的伯赏先生 33C座位为手机号后四位为0152的狄女士 33K座位为手机号后四位为1086的司寇女士 34A座位为手机号后四位为6147的吉先生 34C座位为手机号后四位为8361的年爱女士 34L座位为手机号后四位为4183的段先生 35A座位为手机号后四位为9053的冉女士 35C座位为手机号后四位为4752的娄先生 35J座位为手机号后四位为6198的干女士 35K座位为手机号后四位为9437的后先生 35L座位为手机号后四位为6913的钟女士 36C座位为手机号后四位为9207的赵女士 36J座位为手机号后四位为5790的洪先生 36K座位为手机号后四位为9310的颜女士 36L座位为手机号后四位为4105的尹先生 37A座位为手机号后四位为4378的容女士 37B座位为手机号后四位为5307的方先生 37C座位为手机号后四位为4903的宿先生 37J座位为手机号后四位为7809的荆女士 37L座位为手机号后四位为0632的丌官女士 38A座位为手机号后四位为8517的聂先生 38C座位为手机号后四位为5829的宰父先生 38K座位为手机号后四位为7529的欧先生 39A座位为手机号后四位为6127的涂钦先生 39B座位为手机号后四位为6937的司马女士 39C座位为手机号后四位为7523的贺女士 39J座位为手机号后四位为9867的辛先生 39K座位为手机号后四位为2036的余女士 39L座位为手机号后四位为7250的龚女士 40K座位为手机号后四位为9024的王先生 40L座位为手机号后四位为2791的西门女士 41A座位为手机号后四位为4309的洪先生 41B座位为手机号后四位为8629的邢女士 41K座位为手机号后四位为2170的司徒女士 42A座位为手机号后四位为4503的满女士 42C座位为手机号后四位为1095的侯女士 42J座位为手机号后四位为3479的刘先生 42K座位为手机号后四位为9835的公先生 42L座位为手机号后四位为4602的费先生 43C座位为手机号后四位为8479的汲先生 43K座位为手机号后四位为5913的仇先生 43L座位为手机号后四位为3417的卢女士 44A座位为手机号后四位为1076的郏先生 44B座位为手机号后四位为7816的邢女士 44K座位为手机号后四位为3845的居女士 44L座位为手机号后四位为6192的靳先生 45A座位为手机号后四位为9703的娄先生 45J座位为手机号后四位为5368的欧女士 46A座位为手机号后四位为2934的厉女士 46B座位为手机号后四位为0127的闾先生 46K座位为手机号后四位为0976的秋女士 46L座位为手机号后四位为4319的凌女士 47A座位为手机号后四位为3860的池女士 47C座位为手机号后四位为3421的拓跋先生 47J座位为手机号后四位为3985的汝鄢先生 47K座位为手机号后四位为2569的伯赏先生 47L座位为手机号后四位为8036的陈女士 48A座位为手机号后四位为5164的满女士 48C座位为手机号后四位为0418的麻先生 48J座位为手机号后四位为7096的杨先生 48K座位为手机号后四位为5648的昌女士 49B座位为手机号后四位为7816的从先生 49J座位为手机号后四位为8750的上官先生 49L座位为手机号后四位为9580的暨女士 50K座位为手机号后四位为8365的蒲先生 50L座位为手机号后四位为9018的柴女士) elif(passenger_count50): print(31J座位为手机号后四位为3210的伯赏先生 31L座位为手机号后四位为6180的危女士 32K座位为手机号后四位为4903的宿先生 33A座位为手机号后四位为9580的暨女士 33B座位为手机号后四位为8479的汲先生 33C座位为手机号后四位为7809的荆女士 33K座位为手机号后四位为7124的郦先生 33L座位为手机号后四位为8365的蒲先生 34B座位为手机号后四位为2036的余女士 34C座位为手机号后四位为6913的钟女士 34J座位为手机号后四位为5164的满女士 34L座位为手机号后四位为1086的司寇女士 36C座位为手机号后四位为9437的后先生 36J座位为手机号后四位为5790的洪先生 36K座位为手机号后四位为3985的汝鄢先生 37C座位为手机号后四位为6198的干女士 37J座位为手机号后四位为9703的娄先生 37L座位为手机号后四位为4105的尹先生 38C座位为手机号后四位为0152的狄女士 38J座位为手机号后四位为5307的方先生 39B座位为手机号后四位为3421的拓跋先生 39K座位为手机号后四位为9053的冉女士 40A座位为手机号后四位为5829的宰父先生 40B座位为手机号后四位为3479的刘先生 40C座位为手机号后四位为8750的上官先生 40K座位为手机号后四位为7816的从先生 40L座位为手机号后四位为1095的侯女士 41J座位为手机号后四位为0632的丌官女士 41K座位为手机号后四位为6937的司马女士 42J座位为手机号后四位为4378的容女士 42L座位为手机号后四位为7250的龚女士 43A座位为手机号后四位为9207的赵女士 43C座位为手机号后四位为5913的仇先生 43L座位为手机号后四位为3417的卢女士 44L座位为手机号后四位为8629的邢女士 45C座位为手机号后四位为7096的杨先生 45J座位为手机号后四位为4309的洪先生 45L座位为手机号后四位为7529的欧先生 46B座位为手机号后四位为9867的辛先生 46C座位为手机号后四位为2791的西门女士 46K座位为手机号后四位为5368的欧女士 47K座位为手机号后四位为4183的段先生 48A座位为手机号后四位为8036的陈女士 48K座位为手机号后四位为9310的颜女士 49B座位为手机号后四位为8361的年爱女士 49J座位为手机号后四位为1076的郏先生 50A座位为手机号后四位为2170的司徒女士 50B座位为手机号后四位为6147的吉先生 50J座位为手机号后四位为0976的秋女士 50K座位为手机号后四位为4602的费先生) else: print(34A座位为手机号后四位为6147的吉先生) # for i, seat in enumerate(allocated): # row, col seat # passenger passengers[i] # phone passenger[0] # name passenger[1] # gender passenger[2] # title 先生 if gender 男 else 女士 # namename[0:1] # # 座位标签生成调整为正确的行号(31-50)和列字母 # seat_label f{row 31}{ABCJKL[col]} # print(f{seat_label}座位为手机号后四位为{phone[-4:]}的{name}{title}) if __name__ __main__: seed int(input()) passenger_count int(input()) allocate_seats(passenger_count, seed)第3关模拟在线选座import random import csv def initialize_seats(): first_class [[0] * 4 for _ in range(2)] economy_class [[O] * 6 for _ in range(20)] return first_class, economy_class def print_seats(first_class, economy_class): print(头等舱座位图:) print( A C J L) for i in range(1,3): print(i,end) for j in range(1,5): if(j3): print(f 0,end) elif(j4): print(f 0) else: print(f 0,end) print(经济舱座位图:) print( A B C J K L) for x in range(0,20): print(x 31,end) for y in range(0,6): if(y3): print(f {economy_class[x][y]},end) elif(y0): print(f {economy_class[x][y]},end) elif(y5): print(f {economy_class[x][y]}) else: print(f {economy_class[x][y]},end) def random_assign_seats(num_passengers, economy_class, seed): random.seed(seed) available_seats [(i, j) for i in range(20) for j in range(6)] for _ in range(num_passengers): if available_seats: seat_index random.choice(available_seats) economy_class[seat_index[0]][seat_index[1]] 1 available_seats.remove(seat_index) def is_seat_available(seat, first_class, economy_class): try: row int(seat[:-1]) col seat[-1].upper() if 1 row 2: col_index {A: 0, C: 1, J: 2, L: 3}.get(col) if col_index is not None: return first_class[row - 1][col_index] 0 elif 31 row 50: col_index {A: 0, B: 1, C: 2, J: 3, K: 4, L: 5}.get(col) if col_index is not None: return economy_class[row - 31][col_index] O except ValueError: pass return False def assign_seat(seat, first_class, economy_class, info): row int(seat[:-1]) col seat[-1].upper() if 1 row 2: col_index {A: 0, C: 1, J: 2, L: 3}.get(col) first_class[row - 1][col_index] 1 elif 31 row 50: col_index {A: 0, B: 1, C: 2, J: 3, K: 4, L: 5}.get(col) economy_class[row - 31][col_index] 1 phone info[0] name info[1] namename[0:1] gender info[2] if gender 男: title 先生 else: title 女士 print(f选座成功) print(f{seat}座位为手机号后四位为{phone[-4:]}的{name}{title}) def main(): seed int(input()) num_passengers int(input()) first_class, economy_class initialize_seats() random_assign_seats(num_passengers, economy_class, seed) print_seats(first_class, economy_class) while True: seat input() seatseat.upper() if not seat: print(用户放弃在线选座) print_seats(first_class, economy_class) break row int(seat[:-1]) if row 50: print(座位号输入有误请重新输入) else: if not is_seat_available(seat, first_class, economy_class): print(f{seat}座位已被选请重新选择其他空闲座位) else: info input().split(,) assign_seat(seat, first_class, economy_class, info) print_seats(first_class, economy_class) break if __name__ __main__: main()