创建一个完善的月亮星座查询器需要考虑到多种因素,比如用户输入的处理、星座日期范围的确定、以及可能的错误处理等。以下是一个简单的文本界面版本的月亮星座查询器的实现:

```python
def find_moon_sign(month, day):
# 月亮星座日期范围
moon_signs = {
'Aries': ((3, 21, 1), (4, 19, 0)),
'Taurus': ((4, 20, 0), (5, 20, 0)),
'Gemini': ((5, 21, 0), (6, 20, 0)),
'Cancer': ((6, 21, 0), (7, 22, 0)),
'Leo': ((7, 23, 0), (8, 22, 0)),
'Virgo': ((8, 23, 0), (9, 22, 0)),
'Libra': ((9, 23, 0), (10, 22, 0)),
'Scorpio': ((10, 23, 0), (11, 21, 0)),
'Sagittarius': ((11, 22, 0), (12, 21, 0)),
'Capricorn': ((12, 22, 0), (1, 19, 0)),
'Aquarius': ((1, 20, 0), (2, 18, 0)),
'Pisces': ((2, 19, 0), (3, 20, 0))
}
# 将日期转换为元组
date_tuple = (month, day)
# 检查日期是否在某个星座的日期范围内
for sign, (start, end) in moon_signs.items():
if start <= date_tuple <= end:
return sign
return "Unknown"
def main():
while True:
# 获取用户输入
try:
month = int(input("Enter your birth month (1-12): "))
day = int(input("Enter your birth day (1-31): "))
# 检查输入是否有效
if month < 1 or month > 12 or day < 1 or day > 31:
raise ValueError("Invalid month or day. Please enter a valid date.")
# 获取月亮星座
moon_sign = find_moon_sign(month, day)
print(f"Your moon sign is: {moon_sign}")
# 询问用户是否继续
continue_query = input("Do you want to find another moon sign? (yes/no): ").lower()
if continue_query != 'yes':
break
except ValueError as e:
print(f"Error: {e}")
if __name__ == "__main__":
main()
```
这个查询器首先定义了一个函数`find_moon_sign`,它接受出生的月份和日期,然后通过比较日期范围来确定月亮星座。在`main`函数中,查询器会提示用户输入出生日期,并调用`find_moon_sign`来获取结果。如果用户输入无效,程序会捕获`ValueError`并提示用户重新输入。
请注意,这个查询器是基于西方占星术的日期范围,并不考虑时区或出生时间的影响。在真实的应用中,你可能需要考虑这些因素以及不同文化对星座的定义差异。
「点击下面查看原网页 领取您的八字精批报告☟☟☟☟☟☟」