Python言語基礎と応用北京大学試験章節8

20812 ワード

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、次のコードを読んで、4つの選択肢の中で正しいと言えば(__).
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.v 1)の値は100です.
3、下記のコードの出力結果は(__)です.
name=['Jack','John','Mary']
name.sort(reverse=True)
print(name)

出力:[‘Mary’,‘John’,‘Jack’]
4、1つの方法の定義では、式(self.x)によってインスタンス変数xにアクセスすることができる.5、以下のPythonクラス定義における特殊なメソッドの言い方が間違っているのは(str(self)メソッドが文字列をオブジェクトに変換するために用いられる)6、Pythonでプライベート変数を定義する方法は(_変数名)7、aがクラスAのオブジェクトでプライベートデータメンバー「_value」が1つ含まれると仮定すると、クラスの外部でオブジェクトaを介してそのプライベートデータメンバー「_value」の値を直接3に設定する文は(a_A_value=3)8、オブジェクト向けのプログラム設計の3つの基本的な特徴は、パッケージ、継承、マルチステートです.
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)

——————プログラミング作業8

学生成績ソート(クラスと対象練習)


テーマ内容:学生クラス(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)

2つの数の和を求める問題.


タイトル内容:リストと整数ターゲットを指定します.リスト内の要素はすべて整数で、リスト内の2つの要素のインデックス番号(リスト形式で印刷され、結果が一意であることを確保するために、小さな番号が前にある)を返して、この2つの要素の和をこの特定のターゲットにします.(決定された唯一の解のセットにのみ対応し、同じ要素を2回使用することはできません.)
入力フォーマット:2行で、1行目のリストの要素値(それぞれ異なる)をスペースで区切り、2行目の整数です.
≪出力フォーマット|Output Format|oem_src≫:行が1つ、リストが1つです.
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

「洗練された」数


タイトル内容:2つの非負の整数xとyを与え、ある整数がxi+yjに等しい場合、整数i>=0でj>=0である場合、この整数は「精緻」な数であると考えられる.n(n<=200)以下の値を持つすべての洗練された数のリストを返します.結果リストには、各値が最大1回表示されます.sortedを使用して、結果が一意であることを保証します.
入力フォーマット:合計3行、各動作に1つの整数、それぞれx y n
≪出力フォーマット|Output Format|oem_src≫:行が1つ、リストが1つです.
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の3つの長さからなる有効な三角形の最大周長を返します.すべての長さの組み合わせが有効な三角形を構成できない場合は、0を返します.
≪フォーマットの入力|Input Format|oem_src≫:行が1つで、リスト内の要素がスペースで区切られています.
出力フォーマット:合計1行、非負の整数、最大三角形の周長
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)