Python语言基础与应用 北京大学 测试章节八

1、下列代码的输出结果是(_____)。

class Person:
    def __init__(self,id):
        self.id=id
tom=Person(123)
tom.__dict__['age']=20
print(tom.age+len(tom.__dict__))

输出:22

2、阅读以下代码,四个选项中说法正确的是(____)。

class parent:
    def __init__(self,param):
        self.v1=param
class child(parent):
    def __init__(self,param):
        parent.__init__(self,param)
        self.v2=param
odj=child(100)

print(odj.v1)值为100。

3、下列代码的输出结果是(____)。

name=['Jack','John','Mary']
name.sort(reverse=True)
print(name)

输出:[‘Mary’, ‘John’, ‘Jack’]

4、在一个方法的定义中,可以通过表达式(self.x)访问实例变量x。
5、以下关于Python类定义中的特殊方法说法错误的是(str(self)方法用来把字符串转换为对象)
6、Python中定义私有变量的方法是(__变量名)
7、假设a为类A的对象且包含一个私有数据成员“__value”,那么在类的外部通过对象a直接将其私有数据成员“__value”的值设置为3的语句可以写作(a._A__value=3)
8、面向对象的程序设计的三个基本特征是:封装、继承、多态

9、下列代码的输出结果是(100)。

class Account:
    def __init__(self,id):
        self.id=id
        id=888
acc=Account(100)
print(acc.id)

10、下列代码的输出结果是(11)。

class A:
    def __init__(self,a,b,c):
        self.x=a+b+c
a=A(6,2,3)
print(a.x)

——————
编程作业八

学生成绩排序(类与对象练习)

题目内容:
设计一个学生类(Student),其中的数据成员有:字符串类型sname表示录入的学生姓名,整型值mscore代表学生的数学成绩,整型值cscore代表学生的语文成绩,整型值escore代表学生的英语成绩。
然后要求根据录入的学生成绩(各不相同),输出总分最高的学生姓名和各科目成绩。

输入格式:
输入分为4个部分:
先输入学生姓名,以空格分隔;
然后输入学生的数学成绩(各不相同的正整数),也以空格分隔;
再输入学生的语文数学成绩(各不相同的正整数),也以空格分隔。
最后输入学生的英语数学成绩(各不相同的正整数),也以空格分隔。
学生姓名个数和成绩个数一定会相同。

输出格式:共一行,为总分最高的学生姓名和各科目成绩,以空格分隔。

n=input().split()
m=list(map(int,input().split()))
c=list(map(int,input().split()))
e=list(map(int,input().split()))
class Student:
    def __init__(self,a1,a2,a3,a4):
        self.score = a2 + a3 + a4
        self.pr='%s %d %d %d'%(a1,a2,a3,a4)
ls=[];j=0
for i in n:
    ls.append(Student(i,m[j],c[j],e[j]))
    j+=1
ls.sort(key=lambda x:x.score,reverse=True)
print(ls[0].pr)

两数求和问题

题目内容:
给定一个列表和一个整数目标,其中列表中的元素都为整数,要求返回列表中的两个元素的索引编号(以列表形式打印,为确保结果唯一,小的编号在前),使这两个元素的和为这个特定的目标。
(只对应确定的唯一一组解,并且不能使用同一个元素两次。)

输入格式:共两行,第一行为列表中的元素值(各不相同),以空格隔开,第二行为一个整数。

输出格式:共一行,为一个列表。

m=tuple(map(int,input().split()))
n=int(input())
d={}
for i,j in enumerate(m):
    if n-j in d:
        print([d[n-j],i])
        break
    d[j]=i

"精致"的数

题目内容:
给定两个非负整数x和y,如果某一整数等于xi+yj,其中整数i>= 0且j>=0,那么我们认为该整数是一个"精致"的数。返回值小于或等于n(n<=200)的所有精致的数组成的列表。
结果列表中每个值最多出现一次,同时请使用sorted保证结果唯一。

输入格式:共三行,每一行为一个整数,分别是x y n

输出格式:共一行,为一个列表。

from math import log
 
# 输入整数x,y,n
x = int(input())
y = int(input())
n = int(input())
 
# 根据 x^i+y^j <= n(整数i>=0且j>=0),求出i,j的可能的最大值
# i的最大值:以x为底的n的对数;j同理
i_max = int(log(n, x))
j_max = int(log(n, y))
 
 
# 创建所有可能的精致的数的列表
num_list = []
for i in range(i_max+1):
    for j in range(j_max+1):
        num = x ** i + y ** j
        if num <= n:
            num_list.append(num)
 
# 不重复且排序的num_list
new_num_list = sorted(list(set(num_list)))
print(new_num_list)

最大的周长

题目内容:
给定一个列表alist,alist由一些正整数(代表长度)组成,返回由alist中的三个长度组成的有效三角形的最大周长。如果所有的长度组合都不能构成有效三角形,则返回 0。

输入格式:共一行,列表中的元素以空格隔开。

输出格式:共一行,为一个非负整数,是最大三角形的周长

a=list(map(int,input().split()))
a.sort(reverse=True)
for i in range(len(a)-2):
    if a[i]<a[i+1]+a[i+2]:
        print(a[i]+a[i+1]+a[i+2])
        break
else:
    print(0)
发布了70 篇原创文章 · 获赞 15 · 访问量 4310

猜你喜欢

转载自blog.csdn.net/Heart_for_Ling/article/details/103404063
今日推荐