Python二级等考知识点整理——高教版Python语言程序设计冲刺试卷(五)

《高教版Python语言程序设计冲刺试卷》——模拟试卷E知识点

本文根据该书模拟试卷E答案及试卷讲解整理得,具有题目针对性,不涵盖部分送分题。欢迎探讨。

1.程序流程图(PFD)
PFD图中箭头表示控制流。
2.turtle颜色三种表示方法
turtle.color(253,45,90)
turtle.color(“green”)
turtle.color("#0F0E02")
3.局部变量
“局部变量为组合数据类型未创建时等同于全局变量”的解释:
①函数使用参数ls,如果函数内部创建,则为局部变量,使用过后释放完全不会影响全局变量;
②函数使用参数ls,如果函数内部未创建但有同名全局变量ls,则改变全局变量ls;
③函数使用参数ls,但ls既未在函数内部创建、又无同名全局变量ls,则报错。
如:

ls = ["F","f"]
def fun(a):
    ls.append(a)
    return
fun("C")
print(ls)

输出为:
[‘F’, ‘f’, ‘C’]
4.sorted方法
sorted(list,reverse=)
sorted方法默认从小到大排列,如果reverse=True则实现从大到小。
5.求最大公约数的辗转相除法
辗转相除法核心:

while r!=0:
    r=a%b
    a=b
	b=r

a和b的大小关系其实不影响此方法,即便a 5.jieba分词全模式
jieba.lcut(s,cut_all=True)
返回s所有可能的分词结果列表。其中"cut_all="可以省略,直接写成:
jieba.lcut(s,True)
6.综合应用题
题目:
古代航海人为了方便在航海时辨别方位和观测天象,将散布在天上的星星运用想象力将它们连接起来,有一半是在古时候已命名,另一半是近代开始命名的。两千多年前古希腊的天文学家希巴克斯命名十二星座,依次为白羊座、金牛座、双子座、巨蟹座、狮子座、处女座、天秤座、天蝎座、射手座、魔蝎座、水瓶座和双鱼座。给出二维数据存储CSV文件(SunSign.csv),内容如下:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬
星座,开始月日,结束月日,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文件中数据,循环获得用户输入,直至用户输入 “exit” 退出。根据用户输入的星座名称,输出此星座的出生日期范围及对应字符形式。如果输入的星座名称有误,请输出“输入星座名称有误!”。

太长不看可直接空降至此处我自己敲的代码:

#CheckSunsign
def GETLIST(filename):  
    file=open(filename,'r',encoding='utf-8')
    ls=[]
    for line in file:
        if '星座' not in line:
            line=line.strip('\n').split(',')
            #print(line)#编写时用作检测,有时候line是不是str、处理方法是直接改变line还是返回新数据而不改变line\
                        #这些问题常常忘记,这样调试更直观。
            ls.append(line)
    #print(ls)#同上
    file.close()
    return ls

def CHECKLIST(coninfo):
    print('{0}座的生日位于{1}-{2}之间'.format(chr(eval(coninfo[3])),coninfo[1],coninfo[2]))

def MAIN():
    filename='SunSign.csv'
    filelist=GETLIST(filename)
    while True:
        tag=False
        constellation=input('请输入星座名称(如:射手座):')
        if constellation=='exit':
            break
        for consinfo in filelist:
            if constellation in consinfo:
                tag=True
                coninfo=consinfo
        if tag==False:
            print('输入星座名称有误!')
        else:
            CHECKLIST(coninfo)
MAIN()

总体来说以上编程思路是写一个函数用于从文件中筛选需要的信息、另一个函数用于对比信息并返回结果;
然而实际上写着写着就想把用户交互的循环部分放在MAIN函数里,导致头重脚轻。
参考答案就比较匀称:

#读入CSV格式数据到列表中
fo = open("SunSign.csv","r", encoding='utf-8')
ls = []
for line in fo:
    line = line.replace("\n","")
    ls.append(line.split(","))
fo.close()

while True:
    InputStr = input() # 请输入星座名称,例如双子座
    InputStr.strip()
    flag = False
    if InputStr == 'exit':
        break
    for line in ls:
        if InputStr == line[0]:
             print("{}座的生日位于{}-{}之间。".format(chr(eval(line[3])),line[1],line[2]))
             flag = True
    if flag == False:
        print("输入星座名称有误!")

吐槽:两段代码功能都没错,python123的自动评阅却都报错了。(没错就是它自己的参考答案复制粘贴自己评阅也报错)

你可能感兴趣的:(Python)