第四天 第四章 实战

数据结构 是否可变 是否重复 是否有序 定义符号
列表(list) 可变 可重复 有序 []
元组(tuple) 不可变 可重复 有序 ()
字典(dictionary) 可变 可重复 无序 {key:value}
集合(set) 可变 不可重复 无序 {}

一、输出“王者荣耀”的游戏角色:

# 坦克 英雄列表
Tanks =['苏烈','刘邦','钟馗','张飞','牛魔','程咬金','白起','刘禅','庄周','项羽','廉颇','巨灵神','安禄山','猪八戒']
# 战士 英雄列表
warriors=['狂铁','裴擒虎','','孙悟空','哪吒','杨戬','橘右京','亚瑟','雅典娜','夏侯惇','关羽','吕布','韩信','老夫子','达摩','典韦','曹操','钟无艳','墨子','赵云','刑天','龙且']
# 刺客 英雄列表
Assassins=['百里玄策','庞统','花木兰','阿轲(荆轲)','不知火舞','李白','娜可露露','兰陵王','露娜','韩信','宫本武藏','盖聂','红拂']
# 法师 英雄列表
Masters =['杨玉环','弈星','女娲','周瑜','鬼谷子','芈月','干将莫邪','东皇太一','大乔','诸葛亮','貂蝉','张良','安琪拉','不知火舞','姜子牙','武则天','王昭君','甄姬','扁鹊','高渐离','嬴政','妲己','小乔']
# 射手 英雄列表
Shooters=['公孙离','百里守约','后羿','刘备','黄忠','马可波罗','成吉思汗','虞姬','李元芳','艾琳','狄仁杰','鲁班七号','孙尚香']
# 辅助 英雄列表
auxiliarys=['明世隐','梦奇','孙膑','太乙真人','蔡文姬']
# 输出提示文字
print('“王者荣耀”游戏角色:')
print('====坦克:====')
# 循环坦克 英雄列表
for Tank in Tanks:
    # 输出列表内容 每次输出后以空格分割开
    print(Tank, end=' ')
# 换行输出内容
print('\n====战士:====')
for warrior in warriors:
    print(warrior, end=' ')
print('\n====刺客:====')
for Assassin in Assassins:
    print(Assassin, end=' ')
print('\n====法师:====')
for Master in Masters:
    print(Master, end=' ')
print('\n====射手:====')
for Shooter in Shooters:
    print(Shooter, end=' ')
print('\n====辅助:====')
for auxiliary in auxiliarys:
    print(auxiliary, end=' ')

 二、模拟火车订票系统

# 检查是否有该车次方法
def check_train_number(string):
    # 检查某个元素是否是列表的成员 这里检查输入的车次是否是包含在车次系列中
    if string in train_numbers:
        # 包含在车次系列中退出方法
        return string
    else:
        # 输出不包含在车次系列中,提示用户再次输入
        y = input("没有该车次,请重新输入要购买的车次:")
        # 检查输入的车次是否存在在车次系列中
        return check_train_number(y)
type=['车次','出发站-到达站','出发时间','到达时间','历时']
# 车次列表
train_numbers=['T40','T298','Z158','Z62']
# 出发站-到达站列表
DepartureStation_ArrivalStation=['长春-北京','长春-北京','长春-北京','长春-北京']
# 出发时间列表
Departure_time=['00:12','00:06','12:48','21:58']
# 到达时间列表
Arrival_time=['12:20','10:50','21:06','06:08']
# 用时列表
Duration=['12:08','10:44','08:18','8:20']
# 输出火车票信息
print('{}      {}    {}    {}     {}'.format(type[0],type[1],type[2],type[3],type[4]))
print('{}       {}        {}       {}       {}'.format(train_numbers[0],DepartureStation_ArrivalStation[0],Departure_time[0],Arrival_time[0],Duration[0]))
print('{}      {}        {}       {}       {}'.format(train_numbers[1],DepartureStation_ArrivalStation[1],Departure_time[1],Arrival_time[1],Duration[1]))
print('{}      {}        {}       {}       {}'.format(train_numbers[2],DepartureStation_ArrivalStation[2],Departure_time[2],Arrival_time[2],Duration[2]))
print('{}       {}        {}       {}       {}'.format(train_numbers[3],DepartureStation_ArrivalStation[3],Departure_time[3],Arrival_time[3],Duration[3]))
# 提示用户虚入车次
train_number=input("请输入要购买的车次:")
# 检查输入的车次是否包含在列表中,接收正确的车次
train_number=check_train_number(train_number)
# 提示用户输入乘车人信息
user_rider = input("请输入乘车人(用逗号分隔):")
# 判断购买的是哪个车次,根据选购的车次判断出发时间
if train_number==train_numbers[0]:
    time=Departure_time[0]
if train_number==train_numbers[1]:
    time=Departure_time[1]
if train_number==train_numbers[2]:
    time=Departure_time[2]
if train_number == train_numbers[3]:
    time = Departure_time[3]
print('你已购'+train_number+'次列车 长春-北京 '+time+"开,请"+user_rider+'尽快换取纸质车票。【铁路客服】')

三、电视剧的收视率排行榜

# 电视剧信息列表 每条信息包含收视率信息
TV_plays=[('《Give up,hold on to me》',1.4),
          ('《The private dishes of the husbands》',1.343),
          ('《My father-in-law will do martiaiarts》',0.92),
          ('《North Canton still believe in love》',0.862),
          ('《Impossible task》',0.553),
          ('《Sparrow》',0.411),
          ('《East of dream Avenue》',0.164),
          ('《Theprodigal son of the new frontier town》',0.259),
          ('《Distant distance》',0.394),
          ('《Music legend》',0.562),
          ]
# 使用内置srted方法进行降序排序
TV_plays=sorted(TV_plays, key=lambda s: s[1], reverse=True)
print('电视剧的收视率排行榜:')
# 循环输出电视剧信息
for TV_play in TV_plays:
  print(TV_play[0]+' 收视率:'+str(TV_play[1])+'%')

四、定制手机套餐

# 自定义判断选项方法 x 和 y分别代表 输入的内容 和 总字数
def check(x,y):
    # 捕捉转换类型错误异常
    try:
        # 转换输入内容类型
        x =int(x)
    # 错误执行的方法
    except:
        # 输入错误重新提示用户输入
        x = input("您输入的套餐不存在请从新输入:")
        # 重新启动检测错误方法
        return check(x, y)
    # 检测输入的是在范围内
    if x>0 and x<=y:
       # 在范围内返回
       return x
    else:
        # 不在范围内提示用户重新输入
        x = input("您输入的套餐不存在请从新输入:")
        # 重新启动检测方法
        return check(x,y)

# 可设置话费列表
Bill_sets=['0分钟','50分钟','100分钟','300分钟','不限量']
# 可设置流量列表
flow_sets=['0M','500M','1G','5G','不限量']
# 可设置短信列表
sms_sets=['0条','50条','100条 ']
# 控制台输出提示
print('定制自己的手机套餐:')
# 通话设置
print('{}\n{}\n{}\n{}\n{}\n{}'.format('A.请设置通话时长:',"1."+Bill_sets[0],"2."+Bill_sets[1],"3."+Bill_sets[2],"4."+Bill_sets[3],"5."+Bill_sets[4]))
# 提示用户输入选择通话时间
Aset=input("输入选择的通话时间编号:")
# 检测输入内容的合法性 并返回正确内容
Aset =check(Aset,5)
# 提示用户设置流量
print('\n{}\n{}\n{}\n{}\n{}\n{}'.format('B.请设置流量:',"1."+flow_sets[0],"2."+flow_sets[1],"3."+flow_sets[2],"4."+flow_sets[3],"5."+flow_sets[4]))
# 提示用户输入选择流量
Bset=input("输入选择的通话时间编号:")
# 检测输入内容的合法性 并返回正确内容
Bset =check(Bset,5)
# 提示用户设置短信条数
print('\n{}\n{}\n{}\n{}'.format('C.请设置短信条数:',"1."+sms_sets[0],"2."+sms_sets[1],"3."+sms_sets[2]))
# 提示用户输入选择短信条数
Cset=input("输入选择的通话时间编号:")
# 检测输入内容的合法性 并返回正确内容
Cset =check(Cset,3)
print('\n您的手机套餐定制成功:免费通话时长为'+Bill_sets[Aset-1]+'/月 ,流量为'+flow_sets[Bset-1]+'/月,短信条数'+sms_sets[Cset-1]+'/月')

 

posted @ 2020-08-17 05:45  Zack6688  阅读(402)  评论(0)    收藏  举报