Python二级上机部分试题练习

1.键盘输入张嘉译学习的课程名称及考分等信息,信息间采用空格分隔,每个课程一行,空行回车结束录入,示例格式如:
数学 98
语文 89
英语 94
物理 74
科学 87
输出得分最高的课程及成绩,得分最低的课程及成绩,以及平均分(保留两位小数),输出结果保存至考生文件夹下,命名为“1.txt”

fo=open("1.txt","w")
data=input("请输入课程名及对应的成绩:")
course_score_dict={}
while data:
    course,score=data.split(' ')
    course_score_dict[course]=eval(score) # 课程名为键,成绩为值
    data=input("请输入课程名及对应的成绩:")
score_list=sorted(list(course_score_dict.values()))
# 将字典转换成列表,values()返回所有值的信息,对成绩进行排序
max_score,min_score=score_list[-1],score_list[0]
avg_score=sum(score_list)/len(score_list)
max_course,min_course='','' # 设为空字符串
for item in course_score_dict.items(): # items方法遍历元组,元组里是键值对
    if item[1]==max_score: # 因为(键,值),值为最大成绩时,最高分课程则为元组里的键
        max_course=item[0]
    if item[1]==min_score:
        min_course=item[0]
fo.write("最高分课程是{}{},最低分课程是{}{},平均分是{:.2f}".format
         (max_course,max_score,min_course,min_score,avg_score))
fo.close()

Python二级上机部分试题练习_第1张图片
Python二级上机部分试题练习_第2张图片
2.马和骆驼都是哺乳动物,它们都有四只脚,体型也差不多大,我们将在这里为它们编写属于它们各自的类。

问题1:在“PY301-1.py文件中修改代码,代码中编写了一个马(Horse)的类,在这个类中马有三个属性,分别是年龄(age)、品种(category)及性别(gender)。在每创建一个马的对象时,我们需要为其指定它的年龄、品种及性别。该类中还编写一个get_descriptive()方法,能够组合马的这三个属性。每一匹马都有自己的最快速度,所以类中有一个速度(speed)属性,存储马的最快速度值。并且在马的生命过程中,它的速度一直在变,类中还有一个write_speed()方法用来更新马当前的最快速度值并将数据写入文件。

例如:一匹阿拉伯12岁的公马,在草原上奔跑的速度为50km/h。要求调用get_descriptive()和write_speed()方法,将输出的结果保存在考生文件夹下,文件命名为“PY301-1.txt”。

问题2:在PY301-2.py文件中修改代码,该代码编写了一个骆驼类(Camel),这个类继承自上一个文件中的马类但是不对马类中的属性和方法进行操作。因为骆驼是在沙漠中奔跑,所以在骆驼类中改写write_speed()方法用来更新骆驼当前的最快速度值并将数据写入文件。

例如:一匹双峰驼20岁的母骆驼,在沙漠上奔跑的速度为40km/h。调用父类的方法和Camel类本身的方法将结果保存在“PY301-2.txt”中,保存在考生文件夹下。

fo = open("PY301-1.txt","w")
class Horse():
    def __init__(self, category, gender, age):
        self.category=category
        self.gender=gender
        self.age=age
        self.speed=0
    def get_descriptive(self):
        self.info = "一匹" + self.category + str(self.age) + "岁的" + self.gender + "马"
    def write_speed(self, new_speed):
        self.speed=new_spped
        addr = "在草原上奔跑的速度为"
        fo.write(self.info+ "," + addr + str(self.speed) + "km/h。")
horse=Horse("阿拉伯","公",12)
horse.get_descriptive()
horse.write_speed(50)
fo.close()
fo = open("PY301-2.txt","w")
class Horse():
    def __init__(self, category, gender, age):
        self.category=category
        self.gender=gender
        self.age=age
        self.speed=0
    def get_descriptive(self):
        self.info = "一匹" + self.category + str(self.age) + "岁的" + self.gender + "马"
    def write_speed(self, new_speed):
        self.speed=new_speed
        addr = "在草原上奔跑的速度为"
        fo.write(self.info + "," + addr + str(self.speed) + "km/h。")
class Camel(Horse):
    def __init__(self, category, gender, age):
        super().__init__(category, gender, age)
    def write_speed(self,new_speed):
        self.speed=new_speed
        addr = "在沙漠上奔跑的速度为"
        fo.write(self.info.replace("马","骆驼") + "," + addr + str(self.speed) + "km/h。")
camel=Camel("双驼峰","母",20)
camel.get_descripitive()
camel.write_speed(40)
fo.close()

3.键盘输入两个大于0的整数,按要求输出这两个整数之间(不包括这两个整数)的所有素数。

lower = int(input('输入区间最小值:'))
upper = int(input('输入区间最大值:'))
for num in range(lower+1,upper):
    flag=0
    if num>1:
        for i in range(2,num):
            if(num%i)==0:
                flag=1
                break
        if flag==0:
            print(num)

4.利用turtle.seth()和turtle.circle()绘制出一个四瓣花图形,如下图
Python二级上机部分试题练习_第3张图片

import turtle
for i in range(4):
    turtle.seth(90*(i+1))
    turtle.circle(50,90)
    turtle.seth(-90+i*90)
    turtle.circle(50,90)
turtle.hideturtle()

第一次循环,i为0,seth(90),小海龟指向北,画了一个四分之一圆,停在原处,seth(-90),小海龟指向南,画了一个四分之一圆。第一片花瓣画完了。
第二次循环,i为1,seth(180),小海龟指向西,画了一个四分之一圆,停在原处,seth(0),小海龟指向东,画了一个四分之一圆。第二片花瓣画完了。
以此类推…

Python二级上机部分试题练习_第4张图片
(这里颜色是黄色是因为导出gif时有点问题)

自己用另一种方式做的(先从右边的花瓣开始画):

import turtle
for i in range(4):
    turtle.seth(90+(-90*i))
    turtle.circle(-50,90)
    turtle.seth(270-90*i)
    turtle.circle(-50,90)

5.凯撒密码,采用替换方法将信息中的每一个英文字符循环替换为字母表序列中该字符后面的第三个字符。原文:ABCDEFGHIJK 密文:DEFGHIJKLMN。接收用户输入的文本,然后对字母a ~ z和字母A ~ Z按照密码算法进行转换,同时输出,其他非英文字母原样输出。

intxt = input("请输入明文:")
for p in intxt:
    if p>='A' and p<='Z':
        print(chr(ord("A")+(ord(p)-ord("A")+3)%26),end=" ")
    elif p>='a' and p<='z':
        print(chr(ord("a")+(ord(p)-ord("a")+3)%26),end=" ")
    else:
        print(p,end=" ")

假设p为a,p+3为100,对26取余是22,不在对应字母的ASCII码范围内,所以要减去a再%26,等于3,也不在ASCII码范围内,所以要加上a,结果为3+a=d

你可能感兴趣的:(Python,计算机二级,python,开发语言,后端,计算机二级)