【Python函数与模块】(4)实战:YCI助手

# yci助手
import random

# 机构名称/电话号码字符串
phone_numbers_str = "匪警[110],火警[119],急救中心[120],道路交通事故报警[122],水上求救专用电话[12395],天气预报[12121],报时服务[12117],森林火警[12119],电力服务[95598],红十字会急救台[999],公安短信报警[12110],通用紧急求救[112],信产部IP/网站备案[010-66411166]"
# 天气字符串
weather_str = "北京,2019年1月12日,多云,8°C,-4°C,南风3级~上海,2019年1月12日,小雨,9°C,6°C,北风2级~广州,2019年1月12日,阵雨转多云,22°C,15°C,持续无风向微风"

# 1. 生成双色球
# 规则:生出指定组数的双色球号码,
#      每组7个号码,前6个号码为1-33之间的随机数,最后一位为1-16之间的随机数
def generate_unionlotto(number):
    for j in range(0, number):
        # 前6个红球范围1~33
        for i in range(0, 6):
            red = random.randint(1, 33)
            print(red, end="\t")
        # 最后一个篮球范围1~16
        blue = random.randint(1, 16)
        print(blue)

# 2. 根据关键字找出对应机构名称或电话号码
def find_phone(keyword):
    phone_numbers = phone_numbers_str.split(",")
    for phone in phone_numbers:
        # str.find():返回的是下标,没有找到则返回-1
        if phone.find(keyword) != -1:
            print(phone)

# 3. 根据城市名称找出对应天气预报
def get_weather(city):  # 以~分割天气字符串
    city_list = weather_str.split("~")
    weather_list = {}
    for i in range(0, len(city_list)):     # 以,分割城市相关信息
        w = city_list[i].split(",")     # 以字典形式接收城市信息
        weather = dict(city=w[0], date=w[1], weather=w[2], max=w[3], min=w[4], wind=w[5])
        weather_list[weather["city"]] = weather   # 若城市名存在,输出对应城市的天气信息
    if city in weather_list:
        return weather_list.get(city)   # 城市名不存在,输出空字典
    else:
        return {}

while True:
    print("1. 双色球随机选号")
    print("2. 号码百世通")
    print("3. 明日天气预报")
    print("0. 结束程序")
    c = input("请输入功能编号:")

    # 1. 双色球随机选号
    if c == "1":
        n = input("请要生成几组双色球号码:")
        generate_unionlotto(int(n))

    # 2. 号码百世通
    elif c == "2":
        n = input("请输入您要查询的机构或电话号码:")
        find_phone(keyword=n)

    # 3. 明日天气预报
    elif c == "3":
        n = input("请输入你想要查询天气的城市:")
        w = get_weather(n)     # 若字典中含有key值“city”,则表示返回的不是空字典,则输出天气信息
        if "city" in w:
            print("{date} {weather} {max} {min} {wind}".format_map(w))
        else:
            print("未找到{}的天气数据".format(n))

    # 0. 结束程序
    elif c == "0":
        break

    else:
        print("请输入正确的功能选项")

    print("=============================")
print("感谢您的使用!祝您生活愉快!再见")

效果图:

  1. 双色球
    在这里插入图片描述
  2. 号码百事通
    在这里插入图片描述
  3. 天气预报
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值