📜  显示给定出生日期的星座或黄道十二宫的Python程序(1)

📅  最后修改于: 2023-12-03 14:55:12.584000             🧑  作者: Mango

显示给定出生日期的星座或黄道十二宫的Python程序

如果你想让你的Python程序能够根据一个给定的出生日期输出对应的星座或黄道十二宫,那么你可以使用以下的代码片段。这是一个很实用的小程序,可以用于很多实际应用中,例如星座配对或星座运势查询等。

代码
def get_constellation(birthday):
    """
    通过给定的生日获取对应的星座
    :param birthday: 生日,格式为'YYYY-MM-DD'
    :return: 星座,例如'双鱼座'
    """
    constellation_list = ['魔羯座', '水瓶座', '双鱼座', '白羊座', '金牛座', '双子座',
                          '巨蟹座', '狮子座', '处女座', '天秤座', '天蝎座', '射手座']
    month_day = birthday.split('-')[1] + birthday.split('-')[2]  # 获取月份和日期并合并
    if month_day < '0219' or month_day > '1222':
        return constellation_list[0]
    elif '0219' <= month_day <= '0320':
        return constellation_list[1]
    elif '0321' <= month_day <= '0420':
        return constellation_list[2]
    elif '0421' <= month_day <= '0521':
        return constellation_list[3]
    elif '0522' <= month_day <= '0621':
        return constellation_list[4]
    elif '0622' <= month_day <= '0722':
        return constellation_list[5]
    elif '0723' <= month_day <= '0822':
        return constellation_list[6]
    elif '0823' <= month_day <= '0922':
        return constellation_list[7]
    elif '0923' <= month_day <= '1022':
        return constellation_list[8]
    elif '1023' <= month_day <= '1121':
        return constellation_list[9]
    elif '1122' <= month_day <= '1221':
        return constellation_list[10]
    else:
        return constellation_list[0]


def get_zodiac(birthday):
    """
    通过给定的生日获取对应的黄道十二宫
    :param birthday: 生日,格式为'YYYY-MM-DD'
    :return: 黄道十二宫,例如'狮子'
    """
    zodiac_list = ['鼠', '牛', '虎', '兔', '龙', '蛇',
                   '马', '羊', '猴', '鸡', '狗', '猪']
    year = int(birthday.split('-')[0]) % 12  # 计算生肖
    zodiac = zodiac_list[year]
    return zodiac
代码说明

以上的代码片段实现了两个函数:一个是根据生日获取星座的函数 get_constellation(),另一个是根据生日获取黄道十二宫的函数 get_zodiac()

  • 对于 get_constellation(),它的实现原理是根据给定的生日提取其中的月份和日期,然后映射到相应的星座名称上。例如,如果生日为“1990-03-02”,那么月份为“03”,日期为“02”,通过下面的逻辑判断即可输出对应的星座名称:
if '0219' <= month_day <= '0320':
    return constellation_list[1]
elif '0321' <= month_day <= '0420':
    return constellation_list[2]
# ...
  • 对于 get_zodiac(),它的实现原理是根据给定的生日年份计算出属于哪一个生肖(如鼠、牛、虎等),然后输出相应的黄道十二宫名称。例如,如果生日为“1990-03-02”,那么年份为“1990”,通过下面的计算可以将其转换为属于哪一个生肖:
year = int(birthday.split('-')[0]) % 12

然后根据生肖与黄道十二宫的对应关系,即可输出对应的黄道十二宫名称。

使用方法

使用这两个函数非常简单,只需要将给定的日期作为参数传入即可:

birthday = '1990-03-02'
print(get_constellation(birthday))  # 输出:双鱼座
print(get_zodiac(birthday))         # 输出:马

你可以将上面的代码复制到你的Python环境中执行,也可以根据具体的需求进行修改和扩展。