古代航海人为了方便在航海时辨别方位和观测天象,将散布在天上的星星运用想象力将它们连接起来,有一半是在古时候已命名,另一半是近代开始命名的。两千多年前古希腊的天文学家希巴克斯命名十二星座,依次为白羊座、金牛座、双子座、巨蟹座、狮子座、处女座、天秤座、天蝎座、射手座、魔蝎座、水瓶座和双鱼座。给出二维数据存储 CSV 文件(SunSign.csv),内容如下:
星座,开始月日,结束月日,Unicode
水瓶座,120,218,9810
双鱼座,219,320,9811
白羊座,321,419,9800
金牛座,420,520,9801
双子座,521,621,9802
巨蟹座,622,722,9803
请编写程序,读入 CSV 文件中数据,循环获得用户输入,直至用户输入 "exit
" 退出。根据用户输入的星座名称,输出此星座的出生日期范围及对应字符形式。如果输入的星座名称有误,请输出“输入星座名称有误!
”。
示例1:
输入:"
白羊座
金牛座
双子座
exit
"
输出:"
♈座的生日位于321-419之间
♉座的生日位于420-520之间
♊座的生日位于521-621之间
"
注意:
- 输入使用 input(),不要增加额外的提示信息;
- 从附件中读取 utf-8 编码文本数据。
答案:
# 读取CSV文件数据
import csv
def read_csv(filename):
data = {}
with open(filename, 'r', encoding='utf-8') as file:
reader = csv.reader(file)
next(reader) # 跳过标题行
for row in reader:
sign, start, end, unicode = row
data[sign] = (int(start), int(end), chr(int(unicode)))
return data
# 星座数据
sun_signs = read_csv('SunSign.csv')
# 循环获取用户输入
while True:
user_input = input()
if user_input.lower() == 'exit':
break
elif user_input in sun_signs:
start_date, end_date, unicode_char = sun_signs[user_input]
print(f"{unicode_char}座的生日位于{start_date}-{end_date}之间")
else:
print("输入星座名称有误!")