Python自学笔记10:实操案例七(根据星座测试性格特点、模拟12306火车订票下单)

部署运行你感兴趣的模型镜像

Python自学笔记10:实操案例七(根据星座测试性格特点、模拟12306火车订票下单)

网课传送门:https://www.bilibili.com/video/BV1Sw411Z779?p=157
第157讲
1.根据星座测试性格特点
星座列表和性格列表是一一对应的关系,需要将列表先通过zip转换成元组,再转成字典,然后通过录入的星座名称来找对应的性格特点
因为这些输出都是一样的道理,我就不写老师那么多了
正常执行:
在这里插入图片描述
查找不存在的星座:
在这里插入图片描述

constellation=['白羊座','金牛座','天蝎座','狮子座','射手座']
nature=['积极乐观','固执内向','阴暗消极','迷之自信','放荡不羁']

#两个列表打包转换成元组,再转换为字典
d=dict(zip(constellation,nature))
for item in d:
    print(item,d[item])#根据键获取值

print(d)#“键”+“值”的形式输出
key=input('请输入您的星座名称')
#print(key,'的性格特点为:',d.get(key))如果输入不存在的星座的话会输出None

flag=True
for item in d:
    if key==item:
        flag=True
        print(key,'的性格特点为:',d.get(key))
        break
    else:
        #print('对不起,您输入的星座有误')
        flag=False

if not flag:
    print('对不起,您输入的星座有误')

2.模拟12306火车订票下单
发车信息储存在字典里,用车次信息做键,用后面一大串具体信息做值:
在这里插入图片描述
一个有趣的BUG:复制写好的第一个车次信息修改的时候忘了改最前面的车次了,于是就会出现这种最后只输出一行的情况:在这里插入图片描述
把前面车次改正之后BUG解决(格式没调空格和\t所以不太美观):
在这里插入图片描述
老师在片尾留下了思考题,如果车次不存在的问题怎么解决,我这里也自己试着写了一个方法:
把买到车票之后(输入的车次确实是列表里面有的)的代码都放进一个函数里面,起名PrintTrain()
在这里插入图片描述

def PrintTrain():#如果买的有这个车次,就输出信息,因为定义要放在调用前面,所以顺序和老师的不一样
    persons = input('请输入乘车人,如果是多人请使用逗号分隔:')
    s = f'您已购买了{train_num}次列车 '
    s_info=dict_ticket[train_num]#通过train_num这个车次键获取列车详细信息(是一个列表)
    s=s_info[0]+' '+s_info[1]+' 开'#运用索引通过列表里面的元素拼接字符串
    print(f'{s}{persons}尽快取走纸质车票。【铁路客服】')#s和persons两个设定好的字符串会取代{}里面的内容

也就是说,整个代码的逻辑是:只有你真买对了列表里面有的车次,才会调用这个函数,如果你瞎输入车次,列表里根本没有这趟车,直接就输出一个查无此车,拜拜了您嘞!
在这里插入图片描述
随便乱输——查无此车:
在这里插入图片描述
输个列表里面有的:
在这里插入图片描述

dict_ticket={'G1569':['北京南-天津南','18:05','18:39','00:34'],
            'G1567':['北京南-天津南','18:15','18:49','00:34'],
            'G8917':['北京南-天津西','18:20','19:19','00:59'],
            'G203':['北京南-天津南','18:35','19:09','00:34']}
print('车次\t\t出发站-到达站\t\t出发时间\t\t到达时间\t\t历时时长:')
for item in dict_ticket:
    print(item,end='\t')#关键字参数,不换行,只空格
    for i in dict_ticket[item]:#遍历item这个键对应的值,值是一个列表
        print(i,end='\t\t')#同样不允许换行,只空格
    print()#遍历完一个车次之后换行

def PrintTrain():#如果买的有这个车次,就输出信息,因为定义要放在调用前面,所以顺序和老师的不一样
    persons = input('请输入乘车人,如果是多人请使用逗号分隔:')
    s = f'您已购买了{train_num}次列车 '
    s_info=dict_ticket[train_num]#通过train_num这个车次键获取列车详细信息(是一个列表)
    s=s_info[0]+' '+s_info[1]+' 开'#运用索引通过列表里面的元素拼接字符串
    print(f'{s}{persons}尽快取走纸质车票。【铁路客服】')#s和persons两个设定好的字符串会取代{}里面的内容

#输入要购买的车次:
train_num=input('请输入您要购买的车次:')
Flag=False
for item in dict_ticket:
    if(item==train_num):
        Flag=True#如果找得到这趟车,Flag才是True\
        PrintTrain()
        break
if(Flag==False):
    print('对不起,查无此列车!')





您可能感兴趣的与本文相关的镜像

Python3.10

Python3.10

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值