ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Python实现电影订票系统

2022-04-10 19:34:02  阅读:243  来源: 互联网

标签:预订 Python 订票 self 电影 seats print 座位 row


一、前言

大家都喜欢看电影吧,一部新剧上场的时候往往会抢不到票,今天通过Python实现一个电影订票系统,满足你想看电影的心。

在这里插入图片描述

二、整体结构图

在这里插入图片描述

三、代码分解

3.1 infos.py

一部电影的详细信息适合用 字典 结构来存储,我们可以给字典里添加多个键值对来保存电影的名称、座位表和宣传时用的字符

画,比如电影《泰坦尼克号》的详细信息就可以按下面的形式保存到字典 titanic 中:

Python学习交流Q群:903971231###
infos = [ 
 {  
   'name': '泰坦尼克号',  
     'symbol': '''
     +==================== 泰坦尼克号 =====================+ 
      ▄▄▄▄▄▪   ▄▄▄▄▄  ▄▄▄·   ▐ ▄ ▪      ▄▄·   •██   ██  •██   ▐█ ▀█  •█▌▐█  ██  ▐█ ▌▪  ▐█.▪ ▐█·  ▐█. ▪▄█▀▀█  ▐█▐▐▌  ▐█· ██ ▄▄  ▐█▌ ·▐█▌  ▐█▌· ▐█ ▪▐▌ ██▐█▌  ▐█▌ ▐███▌  ▀▀▀  ▀▀▀  ▀▀▀   ▀  ▀  ▀▀ █  ▪▀▀▀ ·▀▀▀ +===================== Titanic =====================+
      ''',   
 'seats': [['○', '○', '○', '○', '○', '○', '○', '○'],             
             ['○', '○', '○', '○', '●', '○', '○', '●'],             
             ['○', '○', '●', '○', '●', '○', '○', '○'],            
             ['○', '○', '●', '○', '○', '○', '○', '●'],             
             ['○', '○', '●', '○', '○', '○', '●', '○'],             
            ['●', '○', '○', '○', '●', '●', '●', '●']] 
             }, 
              {   
               'name': '雨人', 
                  'symbol': '''
                  +====================== 雨人 =======================+  
,---.    .--.  ,-..-. .-.           .--.  .-. .-.   | .-.\  / /\ \ |(||  \| | |\    /| / /\ \ |  \| |   | `-'/ / /__\ \(_)|   | | |(\  / |/ /__\ \|   | |   |   (  |  __  || || |\  | (_)\/  ||  __  || |\  |   | |\ \ | |  |)|| || | |)| | \  / || |  |)|| | |)|   |_| \)\|_|  (_)`-'/(  (_) | |\/| ||_|  (_)/(  (_)       (__)         (__)     '-'  '-'       (__)     
+===================== Rain Man ====================+
''',   
 'seats': [['○', '○', '○', '○', '●', '○', '○', '●'],             
             ['○', '○', '○', '●', '●', '○', '○', '○'],             
             ['○', '●', '○', '○', '○', '○', '○', '○'],             
             ['○', '○', '○', '○', '○', '○', '○', '○'],             
             ['○', '○', '●', '○', '○', '○', '○', '○'],             
            ['○', '○', '○', '○', '○', '○', '○', '○']]
              }, 
     'name': '卡门',  
       'symbol': '''
       +======================= 卡门 =======================+  
       ▄█▄    ██   █▄▄▄▄ █▀▄▀█ ▄███▄      ▄     █▀ ▀▄  █ █  █  ▄▀ █ █ █ █▀   ▀      █    █   ▀  █▄▄█ █▀▀▌  █ ▄ █ ██▄▄    ██   █   █▄  ▄▀ █  █ █  █  █   █ █▄   ▄▀ █ █  █   ▀███▀     █   █      █  ▀███▀   █  █ █             █   ▀      ▀           █   ██           ▀                             
  +====================== Carmen =====================+''', 
     'seats': [['○', '○', '○', '○', '○', '○', '○', '○'],              
                 ['○', '○', '●', '●', '○', '○', '●', '●'],            
                 ['○', '○', '○', '○', '○', '○', '●', '○'],             
                 ['○', '○', '○', '○', '○', '○', '○', '○'],             
                 ['○', '○', '○', '○', '○', '○', '○', '○'],              
                 ['○', '○', '○', '●', '○', '○', '○', '●']] 
                  },
                    {  
                      'name': '机器人总动员', 
                         'symbol': '''
                         +==================== 机器人总动员 ===================+ 
                           (`\ .-') /`  ('-.                           ('-.       `.( OO ),' ( OO ).-.                     _(  OO)   ,--./  .--.   / . --. / ,--.      ,--.     (,------.  |      |  |   | \-.  \  |  |.-')  |  |.-')  |  .---'  |  |   |  |,.-'-'  |  | |  | OO ) |  | OO ) |  |      |  |.'.|  |_)\| |_.'  | |  |`-' | |  |`-' |(|  '--.   |         |   |  .-.  |(|  '---.'(|  '---.' |  .--'   |   ,'.   |   |  | |  | |      |  |      |  |  `---.  '--'   '--'   `--' `--' `------'  `------'  `------' 
                            +====================== WALL·E =====================+
                            ''',   
 'seats': [['●', '○', '○', '○', '○', '○', '○', '○'],             
             ['●', '○', '○', '○', '○', '○', '○', '●'],             
            ['○', '○', '●', '○', '●', '○', '●', '○'],              
            ['○', '○', '○', '○', '○', '○', '○', '●'],            
            ['○', '○', '○', '○', '●', '○', '○', '○'],              
            ['●', '●', '○', '○', '○', '●', '○', '○']] 
             },
               {   
                'name': '黑客帝国',   
                 'symbol': '''
  +===================== 黑客帝国 =====================+  
   ________            __  ___      __       _       /_  __/ /_  ___     /  |/  /___ _/ /______(_)  __   / / / __ \/ _ \   / /|_/ / __ `/ __/ ___/ / |/_/  / / / / / /  __/  / /  / / /_/ / /_/ /  / />  <   /_/ /_/ /_/\___/  /_/  /_/\__,_/\__/_/  /_/_/|_| 
    +==================== The Matrix ===================+
    ''',    
    'seats': [['○', '●', '○', '○', '○', '○', '○', '○'],             
                 ['○', '○', '○', '●', '●', '○', '○', '●'],              
                 ['○', '○', '○', '○', '○', '○', '○', '○'],              
                 ['○', '○', '○', '○', '○', '○', '○', '○'],              
                 ['○', '○', '○', '○', '○', '○', '○', '●'],              
                 ['○', '○', '●', '○', '○', '○', '○', '○']]  
                 },
                 ]

 

在这里插入图片描述

3.2 seat_book.py

选座系统,需要实现下面这两样需求:

•展示所有座位的预订状态,方便用户查看哪些座位还可以预订;

•根据用户输入的座位号完成预订。

可以把选座系统抽象成一个类:SeatBooking,这个类包含了两种方法,check_bookings() 用于展示所有座位的预订状态,

book_seat() 用于完成预订。

Python学习交流Q群:903971231####
import time class SeatBooking: # 展示所有座位的预订信息 def check_bookings(self, seats): print("正在为您查询该场次电影的预订状态...") time.sleep(0.7) print('从上到下为 1~6 排,从左至右为 1~8 座') print("======================") for row in seats: time.sleep(0.1) print(' '.join(row)) print("======================") time.sleep(0.7) # 获取符合要求的行索引 def get_row(self): input_row = input("预订第几排的座位呢?请输入 1~6 之间的数字") valid_row = [str(i + 1) for i in range(6)] while input_row not in valid_row: input_row = input('没有按要求输入哦,请输入 1~6 之间的数字') row = int(input_row) - 1 return row # 获取符合要求的列索引 def get_col(self): input_column = input('预订这一排的第几座呢?请输入 1~8 之间的数字') valid_column = [str(i + 1) for i in range(8)] while input_column not in valid_column: input_column = input('没有按要求输入哦,请输入 1~8 之间的数字') column = int(input_column) - 1 return column # 预订指定座位 def book_seat(self, seats): while True: row = self.get_row() column = self.get_col() # 指定座位没有被预订 if seats[row][column] == '○': print("正在为您预订指定座位...") time.sleep(0.7) seats[row][column] = '●' print("预订成功!座位号:{}排{}座".format(row + 1, column + 1)) break # 结束循环,退出选座 # 指定座位已经被预订了 else: print("这个座位已经被预订了哦,试试别的吧") time.sleep(0.7) # 预订最靠前的座位 def book_seat_at_front(self, seats): print("正在为您预订最靠前的座位...") time.sleep(0.7) # 外循环:遍历 seats 的行 for row in range(6): # 内循环:遍历 seats 的列 for column in range(8): # 若碰到没有被预订的座位 if seats[row][column] == '○': seats[row][column] = '●' # 预订该座位 print("预订成功!座位号:{}排{}座".format(row + 1, column + 1)) return # 结束函数的执行,返回到它被调用的地方 # 没有在循环内部结束程序,说明不存在没有被预订的座位 print("非常抱歉

标签:预订,Python,订票,self,电影,seats,print,座位,row
来源: https://www.cnblogs.com/123456feng/p/16122194.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有