需要解决的问题
根据输入的出生年月日判断所属的生肖
源码
import math # 导入math模块,用于数学计算
# 定义农历月份和生肖的对应关系
lunar = '申酉戌亥子丑寅卯辰巳午未'
zodiac = '猴鸡狗猪鼠牛虎兔龙蛇马羊'
# 定义生肖年份对应的农历日期
ztime = ['1936(1.24)', '1937(2.11)', '1938(1.31)', '1939(2.19)', '1940(2.08)', '1941(1.27)', '1942(2.15)', '1943(2.05)', '1944(1.25)', '1945(2.13)', '1946(2.02)', '1947(1.22)', '1948(2.10)', '1949(1.29)', '1950(2.17)', '1951(2.06)', '1952(1.27)', '1953(2.14)', '1954(2.03)', '1955(1.24)', '1956(2.12)', '1957(1.31)', '1958(2.18)', '1959(2.08)', '1960(1.28)', '1961(2.15)', '1962(2.05)', '1963(1.25)', '1964(2.13)', '1965(2.02)', '1966(1.21)', '1967(2.09)', '1968(1.30)', '1969(2.17)', '1970(2.06)', '1971(1.27)', '1972(2.15)', '1973(2.03)', '1974(1.23)', '1975(2.11)', '1976(1.31)', '1977(2.18)', '1978(2.07)', '1979(1.28)', '1980(2.16)', '1981(2.05)', '1982(1.25)', '1983(2.13)', '1984(2.2)', '1985(2.20)', '1986(2.09)', '1987(1.29)', '1988(2.17)', '1989(2.06)', '1990(1.27)', '1991(2.15)', '1992(2.04)', '1993(1.23)', '1994(2.10)', '1995(1.31)', '1996(2.19)', '1997(2.07)', '1998(1.28)', '1999(2.16)', '2000(2.05)', '2001(1.24)', '2002(2.12)', '2003(2.01)', '2004(1.22)', '2005(2.09)', '2006(1.29)', '2007(2.18)', '2008(2.07)', '2009(1.26)', '2010(2.14)', '2011(2.03)', '2012(1.23)', '2013(2.10)', '2014(2.04)', '2015(2.19)', '2016(2.08)', '2017(1.28)', '2018(2.16)', '2019(2.05)', '2020(1.25)']
mdate = '' # 初始化农历日期变量
ral = ['鼠', 1984] # 初始化生肖年份列表
shop = '100000056303' # 初始化商店编号
inside = '' # 初始化内部变量
birth = input('请输入你的出生年月日,格式为:2024-08-10\n') # 获取用户输入的出生年月日
cbir = birth.split('-') # 将出生年月日按照"-"分割成年、月、日三个部分
cyear = cbir[0] # 提取年份
cmonth = cbir[1] # 提取月份
cdate = cbir[2] # 提取日期
for item in ztime: # 遍历生肖年份对应的农历日期列表
if item[:4] == cyear: # 如果年份匹配
mdate = item[4:].strip(' ').strip('(').strip(')') # 提取农历日期并去除空格和括号
ctime = str(cmonth) + str(cdate) # 将月份和日期拼接成一个字符串
ndate = mdate.split('.') # 将农历日期按照"."分割成月份和日期两个部分
smonth = ndate[0] # 提取农历月份
sdate = ndate[1] # 提取农历日期
stime = str(smonth) + str(sdate) # 将农历月份和日期拼接成一个字符串
if int(ctime) < int(stime): # 如果输入的日期小于农历日期
cyear = int(cyear) - 1 # 年份减一
rem = int(cyear) % 12 # 计算年份对12取余的结果
print('要查询的属相是:' + zodiac[rem] + '\n属相对应的年份是:' + lunar[rem] + '年') # 输出结果
运行结果
(完)