古代航海人为了方便在航海时辨别方位和观测天象,将散布在天上的星星运用想象力将它们连接起来,有一半是在古时候已命名,另一半是近代开始命名的。两千多年前古希腊的天文学家希巴克斯命名十二星座,依次为白羊座、金牛座、双子座、巨蟹座、狮子座、处女座、天秤座、天蝎座、

admin2019-08-30  48

问题 古代航海人为了方便在航海时辨别方位和观测天象,将散布在天上的星星运用想象力将它们连接起来,有一半是在古时候已命名,另一半是近代开始命名的。两千多年前古希腊的天文学家希巴克斯命名十二星座,依次为白羊座、金牛座、双子座、巨蟹座、狮子座、处女座、天秤座、天蝎座、射手座、摩羯座、水瓶座和双鱼座。给出二维数据存储CSV文件(SunSign.esv),内容如下:
星座,开始月日,结束月日,Unicode
水瓶座,120,218,9810
双鱼座,219,320,9811
白羊座,321,419,9800
金牛座,420,520,9801
双子座,521,621,9802
巨蟹座,622,722。9803
狮子座,723,822,9804
处女座,823,922,9805
天秤座,923,1023,9806
天蝎座,1024,1122,9807
射手座,1123,1221,9808
摩羯座,1222,119,9809
请编写程序,读入CSV文件中数据,循环获得用户输入,直至用户直接输入回车退出。根据用户输入的星座名称,输出此星座的出生日期范围及对应字符形式。如果输入的星座名称有误,请输出“输入星座名称有误!”。
参考输入和输出如下所示:
>>>
请输入星座中文名称(例如,双子座):双子座
Ⅱ座的生日位于521—621之间。
请输入星座中文名称(例如,双子座):猎户座
输入星座名称有误!
请输入星座中文名称(例如,双子座):
>>>

选项

答案fi=open(’’SunSign.csv’’,’’r’’) ls=[] for line in fi: line=line.replace(’’\n’’,’’’’) ls.append(line.split(’’,’’)) fi.close() iStr=input(’’请输入星座中文名称(例如,双子座):’’) while iStr!=’’’’: flag=False for line in ls: if iStr==line[0]: print(’’{}座的生日位于{}一{}之间。’’.\ format(chr(eval(line[3])),line[1],line[2])) flag=True break if flag==False: print(’’输入星座名称有误!’’) iStr=input(’’请输入星座中文名称(例如,双子座):’’)

解析 本题主要考查导入CSV格式数据到列表中。需要注意的是,以split(’’,’’)方法从CSV文件中获得内容时,每行最后一个元素后面包含了一个换行符(’’\n’’),这个换行符是多余的,可以使用字符串的replace()方法将其去除。
参考程序代码如下:
InputStr=input(’’’’)    #请输入星座名称,例如双子座
InputStr.strip()
fo=open(’’SunSign.csv’’,’’r’’)
ls=[]
for line in fo:
line=line.replace(’’\n’’,’’’’)
ls.append(line.split(’’,’’))
fo.close()
flag=False
for line in ls:
if InputStr==line[0]:
print(’’{}座的生日位于{}-{}之间。’’.\
format(chr(eval(line[3])),line[1],line[2]))
flag=True
if flag==False:
print(’’输入星座名称有误!’’)
转载请注明原文地址:https://kaotiyun.com/show/PX6p777K
0

最新回复(0)