龙空技术网

Python实战-根据生日判断你的星座

SZ深呼吸 57

前言:

眼前咱们对“python用日期判断星座”可能比较注意,小伙伴们都想要分析一些“python用日期判断星座”的相关知识。那么小编同时在网摘上汇集了一些有关“python用日期判断星座””的相关知识,希望兄弟们能喜欢,我们一起来了解一下吧!

星座,又称黄道十二宫,是指天文学上黄道带上的12个区域,这些区域以太阳在地球上一年的运行轨迹(称为黄道)为基础而划分的。

在古代,人们观测到太阳每个月在黄道带上的位置都有所变化,形成了12个区域,每个区域被赋予了不同的名字,代表了一种特定的星座。这些星座的名称和图像往往与神话、历史或文化传说相关联。

在西方,这12个星座分别为:

摩羯座(Capricorn):12月22日至1月19日

符号是♑。符号为一只山羊的头和鱼的尾巴,代表责任心强、实干、坚韧、踏实和追求成功的性格。

水瓶座(Aquarius):1月20日至2月18日

符号是♒。符号为一位持水壶的人,代表理想主义、创新、独立、关心社会和富有人道精神的性格。

双鱼座(Pisces):2月19日至3月20日

符号是♓。符号为两条鱼,代表敏感、梦幻、有同情心、善解人意和具有艺术气质的性格。

白羊座(Aries):3月21日至4月19日

符号是♈。符号为羊的头颅,代表积极、勇敢、热情、自信和冒险的性格。

金牛座(Taurus):4月20日至5月20日

符号是♉。符号为一头蓄势待发的公牛,代表稳健、踏实、坚韧、忍耐和享受物质生活的性格。

双子座(Gemini):5月21日至6月21日

符号是♊。符号为一对双子,代表灵活、机智、善于交际、好奇心强和喜欢变化的性格。

巨蟹座(Cancer):6月22日至7月22日

符号是♋。符号为一只螃蟹,代表情感丰富、温和、关心家人、保护性强和善解人意的性格。

狮子座(Leo):7月23日至8月22日

符号是♌。符号为一头狮子,代表自信、慷慨、热心、喜欢引领和渴望成为焦点的性格。

处女座(Virgo):8月23日至9月22日

符号是♍。符号为一位少女手持麦穗,代表谨慎、实干、细致、追求完美和善于分析的性格。

天秤座(Libra):9月23日至10月23日

符号是♎。符号为天秤,代表平衡、公正、温和、善于协调和重视和谐的性格。

天蝎座(Scorpio):10月24日至11月22日

符号是♏。符号为一只蝎子,代表热情、决断、深沉、神秘和善于洞察他人的性格。

射手座(Sagittarius):11月23日至12月21日

符号是♐。符号为一位射手张弓准备射箭,代表乐观、热情、好奇、追求自由和热爱冒险的性格。

每个星座代表了一段特定的时间,这段时间内太阳处于对应星座的位置。例如,如果一个人出生在太阳位于白羊座的时期,他/她就是白羊座的人。星座在占星学和民间传统中被认为与个人的性格、命运和特质相关联。

值得注意的是,由于地球的自转轴在长时间内会发生预cession(岁差),星座与黄道带上的实际位置有所偏差,因此星座在占星学上的作用被认为是符号性的,而在天文学上则没有实质性的影响。

我们现在用tkinter实现一个简单的小程序,根据输入的生日判断你是哪个星座的,并且显示出这个星座的性格特征。

import tkinter as tkfrom tkinter import ttkfrom tkinter import messageboxdef determine_zodiac_sign(day, month):    zodiac_signs = [        (1, 20, "♒", "水瓶座", "开朗活泼,聪明伶俐。"),        (2, 19, "♓", "双鱼座", "心地善良,有着丰富的幻想和创意。"),        (3, 21, "♈", "白羊座", "热情、坦率,富有冲劲。"),        (4, 20, "♉", "金牛座", "踏实稳重,做事认真。"),        (5, 21, "♊", "双子座", "机智灵活,善于交际。"),        (6, 22, "♋", "巨蟹座", "情绪敏感,对家庭十分重视。"),        (7, 23, "♌", "狮子座", "自信、热情,喜欢成为焦点。"),        (8, 23, "♍", "处女座", "细心周到,追求完美。"),        (9, 23, "♎", "天秤座", "温和、公正,喜欢交朋友。"),        (10, 24, "♏", "天蝎座", "敏感、深沉,善于隐藏情感。"),        (11, 23, "♐", "射手座", "乐观、热情,喜欢冒险。"),        (12, 22, "♑", "摩羯座", "稳健、踏实,有坚强的意志。")    ]    for i in range(len(zodiac_signs) - 1, -1, -1):        if (month, day) >= (zodiac_signs[i][0], zodiac_signs[i][1]):            return zodiac_signs[i][3], zodiac_signs[i][2], zodiac_signs[i][4]    return zodiac_signs[-1][3], zodiac_signs[-1][2], zodiac_signs[-1][4]def show_zodiac_traits():    year = int(year_var.get())    month = int(month_var.get())    day = int(day_var.get())    if (1 <= day <= 31) and (1 <= month <= 12):        zodiac_sign_ch, zodiac_sign_en, traits = determine_zodiac_sign(day, month)        zodiac_label.config(text=f"{zodiac_sign_ch} ({zodiac_sign_en})")        traits_label.config(text=f"{traits}")    else:        messagebox.showerror("输入错误", "请输入有效的日期(日: 1-31, 月: 1-12)")# 创建主窗口root = tk.Tk()root.title("星座查询")# 创建上半部分top_frame = tk.Frame(root)top_frame.pack(padx=10, pady=10)year_label = tk.Label(top_frame, text="年:")year_label.grid(row=0, column=0)year_var = tk.StringVar()year_entry = ttk.Combobox(top_frame, textvariable=year_var, values=list(range(1900, 2101)), state="readonly", width=6)year_entry.grid(row=0, column=1)year_entry.current(100)month_label = tk.Label(top_frame, text="月:")month_label.grid(row=0, column=2)month_var = tk.StringVar()month_entry = ttk.Combobox(top_frame, textvariable=month_var, values=list(range(1, 13)), state="readonly", width=6)month_entry.grid(row=0, column=3)month_entry.current(0)day_label = tk.Label(top_frame, text="日:")day_label.grid(row=0, column=4)day_var = tk.StringVar()day_entry = ttk.Combobox(top_frame, textvariable=day_var, values=list(range(1, 32)), state="readonly", width=6)day_entry.grid(row=0, column=5)day_entry.current(0)submit_button = tk.Button(top_frame, text="查询星座", command=show_zodiac_traits)submit_button.grid(row=0, column=6, padx=10)# 创建下半部分bottom_frame = tk.Frame(root)bottom_frame.pack(padx=10, pady=5)zodiac_label = tk.Label(bottom_frame)zodiac_label.grid(row=0, column=0)traits_label = tk.Label(bottom_frame)traits_label.grid(row=1, column=0)# 运行主循环root.mainloop()

运行效果:

标签: #python用日期判断星座 #python日期判断星座