目录
1.基础准备
首先需要知道星座名称,星座符号及星座对应的时间。
2.设置星座对应的名称和符号列表
conts =['摩羯座','水瓶座','双鱼座','白羊座','金牛座','双子座','巨蟹座','狮子座','处女座','天秤座','天蝎座','射手座','摩羯座']
#符号和名称一一对应,且相连的名称时间也要相连
signs=['♑','♒','♓','♈','♉','♊','♋','♌','♍','♎','♏','♐','♑']
其中为什么把“摩羯座”放在第一个, 接着看下面函数部分就明白了。
3.设置判断列表
sdate=[20,19,21,20,21,22,23,23,23,24,23,22] # 星座判断列表
#列表的数据是从水瓶座开始的日子开始,之后每个日期都对应一个星座的开始日
4.生日的输入及月和日的提取与存储
# 输入生日,输出星座
birth = input('请输入你的出生年月日,格式为:2001-02-21\n').strip(' ')
cbir=birth.split('-') # 分割年月日到列表
cmonth=str(cbir[1]) # 提取月数据
cdate=str(cbir[2]) # 提取日数据
注:
(1).strip()的用法
它是字符串对象的一个方法,用于删除字符串的开头和结尾的特定字符(默认为空格)。
string = " Hello, World! "
result = string.strip() # 默认去除开头和结尾的空格
print(result) # 输出: "Hello, World!"
string = "***Welcome to Python!!!***"
result = string.strip("*") # 去除开头和结尾的 *
print(result) # 输出: "Welcome to Python!!!"
在我们这个示例中,input()
函数用于接收用户输入的出生年月日,并将其赋值给变量 birth
。然后,使用 strip(' ')
方法删除开头和结尾的空格。
注意,这里的参数 ' '
是一个空格字符,用于指定要从字符串中删除的字符。如果用户在输入时在日期的开头或结尾加了空格,使用 strip(' ')
可以将其去除。
(2).split()的用法
split()
是 Python 中用于字符串分割的方法,它可以根据指定的分隔符将一个字符串拆分成多个子字符串,并返回一个包含拆分后子字符串的列表。
string = "Hello, World! How are you?"
result = string.split() # 使用默认的空格字符作为分隔符
print(result) # 输出: ['Hello,', 'World!', 'How', 'are', 'you?']
string = "apple, banana, cherry, date"
result = string.split(", ") # 使用逗号和空格作为分隔符
print(result) # 输出: ['apple', 'banana', 'cherry', 'date']
string = "one-two-three-four-five"
result = string.split("-") # 使用连字符作为分隔符
print(result) # 输出: ['one', 'two', 'three', 'four', 'five']
在我们这个示例中,我们使用 split('-')
方法将 birth
字符串按照连字符 -
进行分割,并将分割后的结果存储到列表 cbir
中。
例如,如果用户输入的出生年月日是 “2001-02-21”,那么 cbir
列表将包含三个元素:
[“2001”, “02”, “21”]。
5.定义判断函数
def sign(cmonth,cdate): # 判断星座函数
if int(cdate)<sdate[int(cmonth)-1]: # 如果日数据早于对应月列表中对应的日期
print(conts[int(cmonth)-1]) # 直接输出星座列表对应月对应的星座
print(signs[int(cmonth)-1]) # 直接输出星座列表对应月对应的星座
else:
print(conts[int(cmonth)]) # 否则输出星座列表下一月对应的星座
print(signs[int(cmonth)]) # 否则输出星座列表下一月对应的星座
sign(cmonth,cdate) # 调用星座判断程序
这个函数的原理就是:
''月份-1"正好对应判断列表中不同月份可能对应的星座开始时的日数据的位置。
以2021-1-19为例子,月数据为1则判断是否有日数据19<sdate[0] = 20,满足条件,则输出魔羯座。
而若为2021-1-21,不满足条件,则输出conts[1]="水瓶座"。
日复一日,水滴石穿。