目录

一、单项选择题

二、程序填空题

三、题目

四、测试代码


一、单项选择题

题号

1

2

3

4

5

6

7

8

9

10

答案

B

D

D

C

A

B

B

C

C

C

题号

11

12

13

14

15

16

17

18

19

20

答案

C

C

B

B

C

A

A

B

A

A

题号

21

22

23

24

25

26

27

28

29

30

答案

D

D

A

A

D

A

A

A

B

C

题号

31

32

33

34

35

36

37

38

39

40

答案

B

C

A

A

A

B

A

B

B

A

题号

41

42

43

44

45

46

47

48

49

50

答案

A

D

C

A

A

A

D

C

B

C

题号

51

52

53

54

55

56

57

58

59

60

答案

B

A

B

B

A

D

B

B

C

C

题号

61

62

63

64

65

66

67

68

69

70

答案

A

B

C

A

A

A

C

B

A

D

题号

71

72

73

74

75

76

77

78

79

80

答案

B

A

B

A

C

D

C

A

B

A

题号

81

82

83

84

85

86

87

88

89

90

答案

B

C

B

C

A

C

A

C

A

A

题号

91

92

93

94

95

96

97

98

99

100

答案

B

B

D

D

C

B

D

B

B

D

二、程序填空题

101. n//2

102. n%16

103. global n

104. import os

105. 2*(n-i-1)-1

106. ‘w’

107. t%2

108. s

109. s

110. ‘其他异常!’

111. ‘Goodbye!’

112. Exception

113. len(s)

114. AssertionError

115. IndexError

116. KeyError

117. IOError

118. NameError

119. TypeError

120. 0

121. Person

122. 5

123. value

#124.class Rectangle:def __init__(self, a, b, c, d):self.a = aself.b = bself.c = cself.d = ddef S_Rec(self):print('The area of the rectangle is:', end='')print((self.c-self.a) * (self.b-self.d))r = Rectangle(0,1,2,0)r.S_Rec()#125.class Point:def __init__(self, x=0, y=0, z=0):self.x = xself.y = yself.z = zdef __repr__(self):return '({},{},{})'.format(self.x, self.y, self.z)def getX(self):return self.xdef getY(self):return self.ydef getZ(self):return self.zclass Line(Point):def __init__(self, a=Point(), b=Point()):self.a = aself.b = bdef printLine(self):print('First Point:', self.getPointa())print('Second Point:', self.getPointb())print('The length of the line is ', self.LineLength())def LineLength(self):x = self.a.getX() - self.b.getX()y = self.a.getY() - self.b.getY()z = self.a.getZ() - self.b.getZ()return pow((x**2+y**2+z**2), 1/2)def getPointa(self):return self.adef getPointb(self):return self.ba = Point(0, 0, 0)b = Point(0, 1, 0)l = Line(a, b)l.printLine()

三、题目

1. 按照源程序文件方式运行下面程序段后的输出结果是(  B  )

def f():

pass

print(f())

A. 无任何输出    B. None     C. pass     D. 出错

2. 一个函数中可以有多少个return语句?(   D )

A. 0    B. 1     C. 2     D. 任意

3. 按照源程序文件方式运行下面程序段后的输出结果是( D   )

f()

def f():

print('ok')

A. 无任何输出    B. None     C. ok     D. 出错

4. 按照源程序文件方式运行下面程序段后的输出结果是(    C)

def f(x,y):

return x**2+y

print(f(2,3))

A. 2    B. 3     C. 7     D. 11

5. 按照源程序文件方式运行下面程序段后的输出结果是(  A  )

def f(x,y):

return x**2

return y**2

return x+y

print(f(2,3))

A. 4    B. 9     C. 5     D. 出错

6. 按照源程序文件方式运行下面程序段后的输出结果是(   B )

def f():

print('AA',end='')

return

print('BB',end='')

return

print(f())

A. None    B. AANone     C. AABBNone     D. 出错

7. 按照源程序文件方式运行下面程序段后的输出结果是(   B )

def f():

return 2,3,4

def main():

print(f())

return

main()

A. 2,3,4    B. (2,3,4)     C. [2,3,4]     D. 出错

8. 按照源程序文件方式运行下面程序段后的输出结果是(  C  )

def f():

print('AA',end='')

def main():

print(f())

main()

A. 无任何输出    B. None     C. AANone     D. 出错

9. 按照源程序文件方式运行下面程序段后的输出结果是(  C  )

f=lambda:2

def main():

print(f())

return

main()

A. 无任何输出    B. None     C. 2     D. 出错

10. 按照源程序文件方式运行下面程序段后的输出结果是(  C  )

f=lambda x:(2,x,x**2)

def main():

print(f(3))

return

main()

A. 无任何输出    B. 2,3,9     C. (2, 3, 9)     D. 出错

11. 按照源程序文件方式运行下面程序段后的输出结果是(  C  )

f,g=lambda x:x**2,lambda y:2*y

def main():

print('{},{}'.format(f(2),g(3)))

return

main()

A. 无任何输出    B. None     C. 4,6     D. 出错

12. 按照源程序文件方式运行下面程序段后的输出结果是(   C )

def g():

return lambda x,y:x+y

def main():

f=g()

print(f(2,3))

return

main()

A. 无任何输出    B. None     C. 5     D. 出错

13. 按照源程序文件方式运行下面程序段后的输出结果是(  B  )

f=(lambda:2,lambda x:x*3,lambda y:y**2)

def main():

print(f[0]()+f[1](2)+f[2](3))

return

main()

A. 0    B. 17    C. None     D. 出错

14. 按照源程序文件方式运行下面程序段后的输出结果是(  B  )

def f(x):

return x(2)

def main():

y=f(lambda x:x**2)

print(y)

return

main()

A. 0    B. 4     C. None     D. 出错

15. 按照源程序文件方式运行下面程序段后的输出结果是( C   )

def f(x):

x=3

def main():

x=2

f(x)

print(x)

return

main()

A. None    B. 0     C. 2     D. 3

16. 按照源程序文件方式运行下面程序段后的输出结果是(  A  )

def f(x):

x[1]=5

def main():

x=[2,3,4]

f(x)

print(x)

return

main()

A. [2,5,4]    B. [5,3,4]     C. [2,3,4]     D. [2,3,5]

17. 按照源程序文件方式运行下面程序段后的输出结果是(  A  )

def f(x):

x['a']=4

def main():

x=dict(a=2,b=3)

f(x)

print(x)

return

main()

A. {'a': 4, 'b': 3}    B. {'a': 2, 'b': 3}     C. {'a': 3, 'b': 4}     D. {'a': 2, 'b': 4}

18. 按照源程序文件方式运行下面程序段后的输出结果是(  B  )

def f(x,y):

x,y=y,x

def main():

x,y=2,3

f(x,y)

print('{},{}'.format(x,y))

return

main()

A. 3,2    B. 2,3     C. 2,2     D. 3,3

19. 按照源程序文件方式运行下面程序段后的输出结果是( A   )

def f(s):

s[0],s[1]=s[1],s[0]

def main():

s=[2,3]

f(s)

print(s)

return

main()

A. [3, 2]    B. [2, 3]     C. [2, 2]     D. [3, 3]

20. 按照源程序文件方式运行下面程序段后的输出结果是( A   )

def f(x,y=4,z=5):

print(x,y,z,sep=',')

def main():

f(2,3)

return

main()

A. 2,3,5    B. 2,4,5     C. 2,4,3     D. 3,4,5

21. 按照源程序文件方式运行下面程序段后的输出结果是(   D )

def f(x=4,y,z=5):

print(x,y,z,sep=',')

def main():

f(2,3)

return

main()

A. 2,3,5    B. 4,2,5     C. 4,3,5     D. 出错

22. 按照源程序文件方式运行下面程序段后的输出结果是(  D  )

def f(x=4,y,z=5):

print(x,y,z,sep=',')

def main():

f(y=2,x=3)

return

main()

A. 3,2,5    B. 4,2,5     C. 2,3,5     D. 出错

23. 按照源程序文件方式运行下面程序段后的输出结果是(    A)

def f(x,y=4,z=5):

print(x,y,z,sep=',')

def main():

f(y=2,x=3)

return

main()

A. 3,2,5    B. 3,4,5     C. 2,3,5     D. 出错

24. 按照源程序文件方式运行下面程序段后的输出结果是(   A )

def f(x,y,*z):

print(x,y,z,sep=',')

def main():

f(2,3,4,5,6)

return

main()

A. 2,3,(4,5,6)    B. 2,3,[ 4,5,6]     C. 2,3,{4,5,6}     D. 2,3,4,5,6

25. 按照源程序文件方式运行下面程序段后的输出结果是( D   )

def f(x=6,y=7,**z):

print(x,y,z,sep=',')

def main():

f(2,3,4,b=5)

return

main()

A. 2,3,{None: 4, 'b': 5}    B. 2,3,{'b': 5}     C. 3,4,{'b': 5}     D. 出错

26. 按照源程序文件方式运行下面程序段后的输出结果是(   A )

def f(x=6,y=7,*z,**t):

print(x,y,z,t,sep=',')

def main():

f(2,a=4,b=5)

return

main()

A. 2,7,(),{'a': 4, 'b': 5}     B. 6,7,(2,),{'a': 4, 'b': 5}

C. 2,7,(4,),{'b': 5}         D. 2,7,(4,5),{}

27. 按照源程序文件方式运行下面程序段后的输出结果是( A   )

def f(x=6,y=7,*z):

print(x,y,z,sep=',')

def main():

x,*y,z=2,3,4,5

f(x,y,z)

return

main()

A. 2,[3, 4],(5,)   B. 2,(3, 4),(5,)    C. 2,3,(4,5)    D. 2,[3, 4],(5)

28. 按照源程序文件方式运行下面程序段后的输出结果是(   A )

def f(x=6,y=7,*z):

print(x,y,z,sep=',')

def main():

x,y,*z=2,3,4,5

f(x,y,z)

return

main()

A. 2,3,([4, 5],)    B. 2,3,(4, 5,)     C. 2,3,[4, 5]     D. 2,3,([4, 5])

29. 按照源程序文件方式运行下面程序段后的输出结果是(  B  )

def f(x=6,y=7,*z):

print(x,y,z,sep=',')

def main():

x,*y,z=2,3,4,5

f(x,*y,z)

return

main()

A. 2,[3, 4],(5,)    B. 2,3,(4, 5)     C. 2,[3],(4, 5)     D. 2,[3,4], (5)

30. 按照源程序文件方式运行下面程序段后的输出结果是( C   )

def f(x,*y):

m=x;

for i in y:

if(i>m):

m=i

return m

def main():

z=f(3,4,2,5,6,8,6,7,1)

print(z)

return

main()

A. 1    B. 6     C. 8     D. 9

31. 按照源程序文件方式运行下面程序段后的输出结果是(  B  )

def f(x):

a=2;

x=3

print(a,x,sep='',end='')

def g(x):

a=4;

x=x+5

print(a,x,sep='',end='')

def main():

a,x=2,3

f(a)

g(x)

main()

A. 23412    B. 2348     C. 26412    D. 2328

32. 按照源程序文件方式运行下面程序段后的输出结果是(  C  )

def f(x):

a=2;

x=3

print(a,x,sep='',end='')

def g(x):

global a

a=a+4;

x=x+5

print(a,x,sep='',end='')

a,x=2,3

f(a)

g(x)

A. 23412    B. 2348     C. 2368    D. 2328

33. 按照源程序文件方式运行下面程序段后的输出结果是(    A)

x=2

def f(x=4):

print(x,end='')

f(x)

x=3

f(x)

A. 23    B. 32     C. 22     D. 33

34. 按照源程序文件方式运行下面程序段后的输出结果是(  A  )

x=2

def f(x=4):

print(x,end='')

def main():

global x

f(x)

x=3

f(x)

main()

A. 23    B. 32     C. 22     D. 33

35. 按照源程序文件方式运行下面程序段后的输出结果是(  A  )

s='uestc'

def f(i):

if(i<-len(s)):

return

else:

f(i-1)

print(s[i],end='')

def main():

f(-1)

main()

A. uestc    B. ctseu     C. None     D. 出错

36. 按照源程序文件方式运行下面程序段后的输出结果是( B   )

def f(i):

if(i>=len(s)):

return

else:

f(i+1)

print(s[i],end='')

def main():

global s

s='uestc'

f(0)

main()

A. uestc    B. ctseu     C. None     D. 出错

37. 按照源程序文件方式运行下面程序段后的输出结果是(  A  )

def f(y=3):

x=y

print(x,end='')

def g():

nonlocal x

print(x,end='')

x=4

g()

print(x,end='')

def main():

global x

x=2

f(x)

print(x,end='')

main()

A. 2242    B. 2224     C. 2442     D. 3242

38. 按照源程序文件方式运行下面程序段后的输出结果是(   B )

def f(y=3):

x=y

print(x,end='')

def g():

global x

print(x,end='')

x=4

g()

print(x,end='')

def main():

global x

x=2

f(x)

print(x,end='')

main()

A. 2242    B. 2224     C. 2442     D. 3242

39. 按照源程序文件方式运行下面程序段后的输出结果是(   B )

def f(y=3):

x=y

print(x,end='')

def g():

global x

print(x,end='')

x=4

def h():

print(x,end='')

x=5

g()

print(x,end='')

def main():

global x

x=2

f(x)

print(x,end='')

main()

A. 2242    B. 2224     C. 24422     D. 32422

40. 按照源程序文件方式运行下面程序段后的输出结果是( A   )

def f(y=3):

x=y

print(x,end='')

def g():

global x

print(x,end='')

x=4

def h():

global x

print(x,end='')

x=5

h()

g()

print(x,end='')

def main():

global x

x=2

f(x)

print(x,end='')

main()

A. 22425    B. 22455     C. 24422     D. 32422

41. 按照源程序文件方式运行下面程序段后的输出结果是(  A  )

def f(n):

print(n,end='')

if(n<1):

return

else:

f(n-1)

print(n,end='')

def main():

f(3)

main()

A. 3210123    B. 32100123     C. 321123     D. 32123

42. 按照源程序文件方式运行下面程序段后的输出结果是(  D  )

def f():

global x

x=4

y=5

def g():

nonlocal y

global x

x=6

y=7

print('{}{}'.format(x,y),end='')

g()

print('{}{}'.format(x,y),end='')

x=2

y=3

f()

print('{}{}'.format(x,y),end='')

A. 674723    B. 674523     C. 676767     D. 676763

43. 要将源程序模块文件搜索路径“D:\user\”加入sys.path中,正确的语句是(   C )

A. import sys;sys.path.append('D:\user\')     B. import sys;sys.path.append(r'D:\user\')

C. import sys;sys.path.append("D:\\user\\")   D. import sys;sys.path.append(r"D:\user\")

44. 要将源程序模块文件搜索路径“D:\user\”加入sys.path中,错误的语句是(   A)

A. import sys;sys.path.append(r'D:\user\')    B. import sys;sys.path.append('D:\\user\\')

C. import sys;sys.path+=["D:\\user\\"]       D. import sys;sys.path+=['D:\\user\\']

45. 按照源程序文件方式运行下面程序c.py后的输出结果是( A   )

在D:\user文件夹中建立如下三个Python源程序文件:

# D:\user\a.py

def f():

print('AA',end='')

# D:\user\b.py

def g():

print('BB',end='')

# D:\user\c.py

from a import f

from b import g

def main():

f()

g()

print('CC')

main()

A. AABBCC    B. CC     C. 无输出     D. 出错

46. 按照源程序文件方式运行下面程序c.py后的输出结果是(   A)

在D:\user\aa文件夹中建立如下a.py源程序文件:

# D:\user\aa\a.py

def f():

print('AA',end='')

在D:\user\bb文件夹中建立如下b.py源程序文件:

# D:\user\bb\b.py

def g():

print('BB',end='')

在D:\user\cc文件夹中建立如下c.py源程序文件:

# D:\user\cc\c.py

import sys

sys.path.append('D:\\user\\aa')

sys.path.append('D:\\user\\bb')

from a import f

from b import g

def main():

f()

g()

print('CC')

main()

A. AABBCC    B. CC     C. 无输出     D. 出错

47. 按照源程序文件方式运行下面程序c.py后的输出结果是( D   )

在D:\user文件夹中建立如下三个Python源程序文件:

# D:\user\a.py

def f():

print(__name__,end='')

# D:\user\b.py

def g():

print(__name__,end='')

# D:\user\c.py

from a import f

from b import g

def main():

f()

g()

print(__name__,end='')

main()

A. abc    B. __main__bc     C. a__main__c     D. ab__main__

48. 按照源程序文件方式运行下面程序b.py后的输出结果是( C   )

在D:\user文件夹中建立如下三个Python源程序文件:

# D:\user\a.py

def f():

print(__name__,end='')

# D:\user\b.py

import a,c

def g():

a.f()

print(__name__,end='')

c.main()

g()

# D:\user\c.py

def main():

print(__name__,end='')

A. abc    B. __main__bc     C. a__main__c     D. ab__main__

49. 按照源程序文件方式运行下面程序a.py后的输出结果是(  B )

在D:\user文件夹中建立如下三个Python源程序文件:

# D:\user\a.py

def f():

print(__name__,end='')

f()

# D:\user\b.py

def g():

print(__name__,end='')

g()

# D:\user\c.py

def main():

print(__name__,end='')

main()

A. a    B. __main__     C. a__main__     D. __main__a

50. 按照源程序文件方式运行下面程序a.py后的输出结果是(  C  )

在D:\user文件夹中建立如下两个Python源程序文件:

# D:\user\a.py

def f():

print(__name__,end='')

if __name__=='__main__':

f()

import b

b.g()

# D:\user\b.py

def g():

print(__name__,end='')

if __name__=='__main__':

g()

import a

a.f()

A. ab    B. __main__a     C. __main__b     D. __main____main__

51. 按照源程序文件方式运行下面程序b.py后的输出结果是(B    )

在D:\user文件夹中建立如下两个Python源程序文件:

# D:\user\a.py

def f():

print(__name__,end='')

if __name__=='__main__':

f()

import b

b.g()

# D:\user\b.py

def g():

print(__name__,end='')

if __name__=='__main__':

g()

import a

a.f()

A. ab    B. __main__a     C. __main__b     D. __main____main__

52. 如果当前源程序模块文件是主模块文件,则其系统变量“__name__”的值为(  A  )

A. __main__              B. 其源程序文件的文件根名(不加后面的.py,即模块名)

C. 其源程序文件的路径    D. 其源程序文件所在的文件夹名字

53. 如果当前源程序模块文件是非主模块文件,则其系统变量“__name__”的值为( B  )

A. __main__              B. 其源程序文件的文件根名(不加后面的.py,即模块名)

C. 其源程序文件的路径    D. 其源程序文件所在的文件夹名字

54. 新建一个文本文件,欲对其进行读和写操作,则该文件的正确打开方式是( B   )

A. f=open(r'D:\user\a.txt','r+')      B. f=open(r'D:\user\a.txt','w+')

C. f=open(r'D:\user\a.txt','rb+')     D. f=open(r'D:\user\a.txt','wb+')

55. 打开一个已经存在的文本文件,欲对其进行读和写操作,则该文件的正确打开方式是(  A  )

A. f=open(r'D:\user\a.txt','r+')      B. f=open(r'D:\user\a.txt','w+')

C. f=open(r'D:\user\a.txt','rb+')     D. f=open(r'D:\user\a.txt','wb+')

56. 打开一个已经存在的二进制文件,欲在其原有内容后面写入一些新内容,则该文件的正确打开方式是(   D )

A. f=open(r'D:\user\a.txt','r+')       B. f=open(r'D:\user\a.txt','wb+')

C. f=open(r'D:\user\a.txt','a+')       D. f=open(r'D:\user\a.txt','ab+')

57. 下列哪种打开文件的方式会造成原文件内容被清除?(  B  )

A. f=open(r'D:\user\a.txt','r+')       B. f=open(r'D:\user\a.txt','w+')

C. f=open(r'D:\user\a.txt','a+')       D. f=open(r'D:\user\a.txt','ab+')

58. 用方法“f=open(r'D:\user\a.txt','r+')”打开文件,则关闭该文件的方法是(  B  )

A. close(f)    B. f.close()     C. close(f,'r+')     D. f.close('r+')

59. 已知文本文件“D:\user\t.txt”的内容如下,按照源程序文件方式运行下面各程序段后,输出结果与其余三项不同的是(C    )

# D:\user\t.txt

AA

BBB

CCCC

A.

f=open(r'D:\user\t.txt')

s=f.read()

print(s)

f.close()

B.

f=open(r'D:\user\t.txt','r')

while True:

s=f.read(2)

if not s:

break

print(s,end='')

f.close()

C.

f=open(r'D:\user\t.txt','r')

while True:

s=f.readline()

if not s:

break

print(s)

f.close()

D.

f=open(r'D:\user\t.txt')

for i in f:

print(i,end='')

f.close()

60. 已知文本文件“D:\user\t.txt”的内容如下,按照源程序文件方式运行下面各程序段后,输出结果与其余三项不同的是(C)

AA

BBB

CCCC

A.

f=open(r'D:\user\t.txt')

s=[]

for i in f:

s+=[i]

print(s)

f.close()

B.

f=open(r'D:\user\t.txt','r')

s=[]

while True:

t=f.readline()

if not t:

break

s+=[t]

print(s)

f.close()

C.

f=open(r'D:\user\t.txt','r')

s=[]

t=''

while True:

i=f.read(1)

if not i:

break

if (i!='\n'):

t+=i

else:

t+='\n'

s+=[t]

t=''

print(s)

f.close()

D.

f=open(r'D:\user\t.txt','r')

s=f.readlines()

print(s)

f.close()

61. 按照源程序文件方式运行下面程序段后的输出结果是(  A  )

import string

f=open(r'D:\user\t.txt','w+')

f.write(string.digits+string.ascii_uppercase)

f.seek(0)

s=f.read(10)

print(s)

f.close()

A. 0123456789    B. ABCDEFGHIJ     C. 01234     D. ABCDE

62. 按照源程序文件方式运行下面程序段后的输出结果是(   B )

import string

f=open(r'D:\user\t.txt','w+')

f.write(string.digits+'\n'+string.ascii_uppercase+'\n'+string.ascii_lowercase)

print(f.tell(),end=',')

f.seek(0)

s=f.read(1)

print(f.tell(),end=',')

t=f.readline()

print(f.tell(),end=',')

print(len(s+t))

f.close()

A. 65,1,12,12    B. 66,1,12,11     C. 66,1,12,12     D. 65,1,12,11

63. 按照源程序文件方式运行下面程序段后的输出结果是(       C  )

import string

f=open(r'D:\user\t.dat','wb+')

s=string.digits+string.ascii_uppercase+string.ascii_lowercase

sb=s.encode()

f.write(sb)

print(f.tell(),end=',')

f.seek(-5,2)

t=f.read()

print(t,end=',')

print(f.tell())

f.close()

A. 0,b'vwxyz',62    B. 0,'vwxyz',62     C. 62,b'vwxyz',62     D. 62,'vwxyz',62

64. 按照源程序文件方式运行下面程序段后的输出结果是( A   )

import string

f=open(r'D:\user\t.dat','wb+')

s=string.digits+string.ascii_uppercase+string.ascii_lowercase

sb=s.encode()

f.write(sb)

f.seek(-40,1)

print(f.tell(),end=',')

f.seek(-10,1)

print(f.tell())

f.close()

A. 22,12    B. 21,11     C. 21,12     D. 22,13

65. 按照源程序文件方式运行下面程序段后的输出结果是( A   )

import string

f=open(r'D:\user\t.dat','wb+')

s='电子科技大学'

sb=s.encode('gbk')

f.write(sb)

f.seek(-12,1)

print(f.tell(),end=',')

t=f.read(4)

x=t.decode('gbk')

print(x,end=',')

print(f.tell())

f.close()

A. 0,电子,4    B. 0,电子科技,4     C. 6,科技大学,18     D. 4,科技,8

66. 在交互命令模式下,获取当前工作目录的程序段是( A   )

A. import os;os.getcwd()       B. import os;os.chdir()

C. import os;os.listdir()        D. import os;os.mkdir()

67. 在交互命令模式下,创建“D:\aa”文件夹(目录)的程序段是(  C  )

A. import os;os.rmdir(r'D:\aa')     B. import os;os.listdir(r'D:\aa')

C. import os;os.mkdir(r'D:\aa')     D. import os;os.chdir(r'D:\aa')

68. 在交互命令模式下,列出“D:\user”文件夹(目录)中内容的程序段是(   B )

A. import os;os.rmdir(r'D:\user')     B. import os;os.listdir(r'D:\user')

C. import os;os.mkdir(r'D:\user')     D. import os;os.chdir(r'D:\user')

69. 在交互命令模式下,删除空目录“D:\aa”的程序段是( A   )

A. import os;os.rmdir(r'D:\aa')     B. import os;os.listdir(r'D:\aa')

C. import os;os.mkdir(r'D:\aa')     D. import os;os.chdir(r'D:\aa')

70. 在交互命令模式下,将系统当前目录改为“D:\aa”的程序段是(  D  )

A. import os;os.rmdir(r'D:\aa')     B. import os;os.listdir(r'D:\aa')

C. import os;os.mkdir(r'D:\aa')     D. import os;os.chdir(r'D:\aa')

71. 功能与下面程序段相同的是(  B  )

import os

path=os.getcwd()

s=os.listdir(path)

print(s)

A.

import os

path=os.getcwd()

s=os.walk(path)

print(s)

B.

import os

path=os.getcwd()

s=os.walk(path)

for dirpath,dirnames,filenames in s:

print(filenames)

C.

import os

path=os.getcwd()

s=os.walk(path)

for dirpath,dirnames,filenames in s:

print(dirpath)

D.

import os

path=os.getcwd()

s=os.walk(path)

for dirpath,dirnames,filenames in s:

print(dirnames)

72. 查看文件“D:\user\a.txt”大小(单位是字节)的程序段是(  A  )

A.

import os

s=os.path.getsize(r'D:\user\a.txt')

print(s)

B.

import os

s=os.path.exists(r'D:\user\a.txt')

print(s)

C.

import os

s=os.stat(r'D:\user\a.txt')

print(s)

D.

import os

s=os.path.getctime(r'D:\user\a.txt')

print(s)

73. 判断文件“D:\user\a.txt”是否存在的程序段是( B   )

A.

import os

s=os.path.getsize(r'D:\user\a.txt')

print(s)

B.

import os

s=os.path.exists(r'D:\user\a.txt')

print(s)

C.

import os

s=os.stat(r'D:\user\a.txt')

print(s)

D.

import os

s=os.path.getctime(r'D:\user\a.txt')

print(s)

74. 将文件“D:\user\a.txt”改名为“D:\user\b.txt”,不能实现该功能的程序段是(  A  )

A.

import os

os.rename('D:\user\a.txt','D:\user\b.txt')

B.

import os

os.rename('D:/user/a.txt','D:/user/b.txt')

C.

import os,shutil

shutil.copyfile('D:/user/a.txt','D:/user/b.txt')

os.remove('D:/user/a.txt')

D.

import shutil

shutil.move('D:/user/a.txt','D:/user/b.txt')

75. 将文件“D:\user\a.txt”复制为“D:\b.txt”,正确的程序段是(  C  )

A.

import os

os.rename('D:\\user\\a.txt','D:\\b.txt')

B.

import os

os.remove('D:\\user\\a.txt','D:\\b.txt')

C.

import shutil

shutil.copyfile('D:\\user\\a.txt','D:\\b.txt')

D.

import shutil

shutil.move('D:\\user\\a.txt','D:\\b.txt')

76. 在Python中可使用read([size])来读取文件中的数据,如果参数size省略,则读取文件中的( D   )

A. 什么也不读取    B. 一个字符     C. 一行数据     D. 所有数据

77. 在Python中可使用readline([size])来读取文件中的数据,如果参数size省略,则读取文件中的(  C  )

A. 什么也不读取    B. 一个字符     C. 一行数据     D. 所有数据

78. 在Python中可使用readlines([size])来读取文件中的数据,此时返回的数据为(  A  )

A. 列表    B. 字符     C. 字符串     D. 对象

79. 在Python中使用seek(offset)来移动文件位置指针,当offset为负值时,表示(  B  )

A. 文件指针向文件尾部方向移动    B. 文件指针向文件头部方向移动

C. 文件指针不向任何地方移动      D. 文件指针直接移动到文件末尾

80. 在Python中,欲对文件任意位置进行写入操作,则文件的打开方式应该是( A  )

A. 'w'    B. 'a'     C. 'a+'     D. 'w'或'a'

81. 在Python中,打开文件时没有指出打开方式,则默认的文件打开方式是(  B  )

A. 'w'    B. 'r'     C. 'a'     D. 'w+'

82. 在Python中,如果文件打开方式是'w',当向该文件写入‘uestc’时,则(  C  )

A. 将该字符串插入在文件头部           B. 将该字符串插入在文件尾部

C. 将用该字符串覆盖文件的原有内容     D. 报错

83. 在Python中,如果文件打开方式是'a',则打开文件时文件位置指针在(  B  )

A. 文件头部    B. 文件尾部     C. 文件中部     D. 随机位置

84. 在Python中,不能表示当前文件目录的是( C   )

A. '.'    B. './'     C. '..'或'../'     D. import os;os.getcwd()

85. 按照源程序文件方式运行下面程序段后的输出结果是( A  )

try:

x=[3,4,5]

y=2+x

print(y)

except TypeError:

print('类型不匹配!')

except SyntaxError:

print('语法错误!')

except:

print('其他错误!')

A. 类型不匹配!    B. 语法错误!     C. 其他错误!     D. [2,3,4,5]

86. 按照源程序文件方式运行下面程序段后的输出结果是(  C  )

try:

x=x+2

except TypeError:

print('AA')

except SyntaxError:

print('BB')

except NameError:

print('CC')

except:

print('DD')

A. AA    B. BB     C. CC     D. DD

87. 按照源程序文件方式运行下面程序段后的输出结果是(  A  )

try:

s=(2,3,4)

s[1]=5

except TypeError:

print('AA')

except SyntaxError:

print('BB')

except NameError:

print('CC')

except:

print('DD')

A. AA    B. BB     C. CC     D. DD

88. 按照源程序文件方式运行下面程序段后的输出结果是(  C  )

try:

x=1+2,2+3,3+4

except:

print('AA',end='')

else:

print('BB',end='')

finally:

print('CC',end='')

print('DD',end='')

A. AA    B. AACCDD     C. BBCCDD     D. AABBCCDD

89. 在Python语言中定义一个类时,如果省略父类名,则默认的父类是( A   )

A. object    B. root     C. pass     D. None

90. 类中私有属性和私有方法的名称是(  A  )

A. 以双下划线(__)开头         B. 以双下划线(__)结尾

C. 用private声明                 D. 以单下划线(_)开头

91. 在Python中,类的构造方法名是( B   )

A. 与类名相同    B. __init__     C. __new__     D. 以@开头

92. 在类中方法外定义的属性是(  B  )

A. 实例属性    B. 类属性     C. 私有属性     D. 公有属性

93. 在Python中,哪种方法内只能访问类属性,不能访问实例属性?(  D  )

A. 实例方法    B. 类方法     C. 静态方法     D. 析构方法

94. 在Python中,用户自定义类直接继承的父类个数是(   D )

A. 1个    B. 至少1个     C. 至少2个     D. 任意个

95. 下列方法中,哪种方法可以没有形式参数?(  C  )

A. 带有装饰器@classmethod的方法      B. 实例方法

C. 带有装饰器@staticmethod的方法      D. 构造方法和析构方法

96. 在Python中,一个类有多少个类对象?(B   )

A. 1个    B. 至少1个     C. 至少2个     D. 任意个

97. 在Python中,一个类可以有多少个实例对象?(   D )

A. 1个    B. 至少1个     C. 至少2个     D. 任意个

98. 在Python中,一个类有多少个(有效的)构造方法?(  B  )

A. 1个    B. 至少1个     C. 至少2个     D. 任意个

99. 在Python中,一个类可以有多少个类属性?(  B )

A. 1个    B. 至少1个     C. 至少2个     D. 任意个

100. 在Python中,一个类可以有多少个实例方法?(  D )

A. 1个    B. 至少1个     C. 至少2个     D. 任意个

二、程序填空题

(为便于阅卷,不用抄题,只提交各小题答案。请将答案填写在答题纸上。)

101. 下面程序的功能是从键盘读入一个正整数,将其转换为二进制数,并输出之。程序按照源程序文件方式运行后的输入输出情况如下图所示。请在横线处填写适当的语句或表达式将程序补充完整。

源程序:

def f(n):

if(n==0):

return

else:

f(_________________n//2         _________________________)

print(n%2,end='')

def main():

x=eval(input('x='))

print('0b',end='')

f(x)

main()

102. 下面程序的功能是从键盘读入一个正整数,将其转换为十六进制数,并输出之。程序按照源程序文件方式运行后的输入输出情况如下图所示。请在横线处填写适当的语句或表达式将程序补充完整。

源程序:

def f(n):

global s

if(n==0):

return

else:

f(n//16)

print(s[____________________  n%16  ______________________],end='')

def main():

global s

s='0123456789ABCDEF'

x=eval(input('x='))

print('0x',end='')

f(x)

main()

103. 下面程序的功能是模拟系统登录过程。从键盘读入一个账号的密码,如果输入的密码正确,就显示“欢迎光临!”;如果输入的密码错误,则显示“密码错误!”;如果用户输入的密码连续错误3次,则显示“你不是合法用户!”。程序按照源程序文件方式运行后的输入输出情况如下图所示。请在横线处填写适当的语句或表达式将程序补充完整。

源程序:

def f():

______________    global n  ____________________________

if(n>3):

print('你不是合法用户!')

return

else:

k=input('请输入密码:')

if(k=='123'):

print('欢迎光临!')

x=input('继续?(y/n)')

if (x=='y' or x=='Y'):

n=1

f()

else:

return

else:

print('密码错误!')

n=n+1

f()

def main():

global n

n=1

f()

main()

104. 下面程序的功能是遍历输出当前工作目录中的所有文件和文件夹。程序按照源程序文件方式运行后的输入输出情况如下图所示。请在横线处填写适当的语句或表达式将程序补充完整。

源程序:

__________________  import os ________________________

s=[]

path=os.getcwd()

f=os.walk(path)

for dirpath,dirnames,filenames in f:

for i in dirnames:

s.append(os.path.join(dirpath,i))

for i in filenames:

s.append(os.path.join(dirpath,i))

for i in s:

print(i)

105. 下面程序的功能是从键盘读入菱形图案的行数(上三角行数),构造该菱形图案,并将其存入文本文件“D:\user\a.txt”中。程序按照源程序文件方式运行后的输入输出情况如下图所示。请在横线处填写适当的语句或表达式将程序补充完整。

源程序:

f=open(r'D:\user\a.txt','w')

n=int(input('n='))

for i in range(n):

s=''

for j in range(n-i-1):

s+=' '

for k in range(2*i+1):

s+='*'

f.write(s+'\n')

for i in range(n-1):

s=''

for j in range(i+1):

s+=' '

for k in range(_________________  2*(n-i-1)-1 _________________________):

s+='*'

f.write(s+'\n')

f.close()

with open('D:/user/a.txt','r') as f:

s=f.read()

print(s)

106. 下面程序的功能是随机生成100个0~100的正整数,每个整数占一行,写入“D:\user\a.txt”文件中。程序按照源程序文件方式运行后的输入输出情况如下图所示。请在横线处填写适当的语句或表达式将程序补充完整。

源程序:

import random

with open('d:/user/a.txt', _______________  ‘w’ ___________________________) as f:

for i in range(100):

f.write(str(random.randrange(0,100))+'\n')

107. 下面程序的功能是随机生成100个0~100的正整数,每个整数占一行,写入“D:\user\a.txt”文件中。然后统计其中奇数的个数。程序按照源程序文件方式运行后的输入输出情况如下图所示。请在横线处填写适当的语句或表达式将程序补充完整。

源程序:

import random

with open('d:/user/a.txt','w') as f:

for i in range(100):

f.write(str(random.randrange(0,100))+'\n')

n=0

with open('d:/user/a.txt','r') as f:

for i in f:

t=int(i)

if(____________________  n % 2 ______________________):

n=n+1

print(n)

108. 下面程序的功能是文本文件的复制,即将已经存在的“D:\user\a.txt”文件内容复制到文件“D:\user\b.txt”中。请在横线处填写适当的语句或表达式将程序补充完整。

源程序:

f1=open('d:/user/a.txt','r')

f2=open('d:/user/b.txt','w')

s=f1.read()

f2.write(____________________  s ______________________)

f1.close()

f2.close()

109. 下面程序的功能是从键盘读入一个字符串,将其转换为整数。程序按照源程序文件方式运行后的输入输出情况如下图所示。请在横线处填写适当的语句或表达式将程序补充完整。

源程序:

import sys

x=input('x=')

try:

y=int(x)

except Exception as ______________ s  ____________________________:

print(s)

sys.exit(0)

else:

print(y)

110. 下面程序的功能是从键盘读入一个整数,对除法运算进行分类异常处理。程序按照源程序文件方式运行后的输入输出情况如下图所示。请在横线处填写适当的语句或表达式将程序补充完整。

源程序:

try:

x=eval(input('x='))

y=12/x

except (NameError,ZeroDivisionError) as s:

print(s)

except:

print(_________________ ‘其他异常!’  _________________________)

else:

print(y)

111. 下面程序的功能是从键盘读入一个整数,测试各种异常处理场景。程序按照源程序文件方式运行后的输入输出情况如下图所示。请在横线处填写适当的语句或表达式将程序补充完整。

源程序:

try:

x=eval(input('x='))

if(x==1):raise AttributeError('对象属性异常')

elif(x==2):raise IOError('输入输出异常')

elif(x==3):raise IndexError('索引异常')

elif(x==4):raise KeyError('关键字异常')

elif(x==5):raise NameError('名字异常')

elif(x==6):raise TypeError('类型异常')

elif(x==7):raise ValueError('值异常')

elif(x==8):raise ZeroDivisionError('零除异常')

elif(x==9):raise EOFError('文件结束异常')

else:print('没有触发异常!')

print('in try')

except (AttributeError,IOError,IndexError,KeyError,NameError,\

TypeError,ValueError,ZeroDivisionError,EOFError) as s:

print(s)

except:

print('其他异常!')

else:

print('正常!')

finally:

print(____________________ ‘Goodbye!’  ______________________)

112. 下面程序的功能是从键盘读入一个整数,测试自定义零除异常类的异常处理。程序按照源程序文件方式运行后的输入输出情况如下图所示。请在横线处填写适当的语句或表达式将程序补充完整。

源程序:

class MyException(________________ Exception  __________________________):

def __init__(self,data):

self.data=data

def main():

try:

x=eval(input('x='))

if x==0:

raise MyException('不能为0哦!')

y=100/x

print(y)

except MyException as s:

print(s)

finally:

print('Goodbye!')

main()

113. 下面程序的功能是从键盘读入一个整数,根据该整数,从字符串中提取指定字符。程序按照源程序文件方式运行后的输入输出情况如下图所示。请在横线处填写适当的语句或表达式将程序补充完整。

源程序:

s='uestc'

i=eval(input('i='))

assert i<____________ len(s)  ______________________,'索引下标超出字符串的长度范围啦!'

print('s[{}]={}'.format(i,s[i]))

114. 下面程序的功能是从键盘读入一个整数,根据该整数,从字符串中提取指定字符。程序按照源程序文件方式运行后的输入输出情况如下图所示。请在横线处填写适当的语句或表达式将程序补充完整。

源程序:

s='uestc'

try:

i=eval(input('i='))

assert i<len(s),'索引下标超出字符串的长度范围啦!'

print('s[{}]={}'.format(i,s[i]))

except ___________________ AssertionError  _______________________ as e:

print('这是断言错误!',e)

except:

print('其他错误!')

115. 下面程序的功能是从键盘读入一个整数,根据该整数,从字符串中提取指定字符。程序按照源程序文件方式运行后的输入输出情况如下图所示。请在横线处填写适当的语句或表达式将程序补充完整。

源程序:

s='uestc'

try:

i=eval(input('i='))

print('s[{}]={}'.format(i,s[i]))

except ______________________ IndexError  ____________________ as e:

print(e)

except:

print('其他错误!')

116. 下面程序的功能是从键盘读入一个字符串关键字,根据该字符串关键字,从字典中提取指定词条。程序按照源程序文件方式运行后的输入输出情况如下图所示。请在横线处填写适当的语句或表达式将程序补充完整。

源程序:

d=dict(a=2,b=3,c=4)

try:

key=input('key=')

print("d['{}']={}".format(key,d[key]))

except ________________  KeyError __________________________ as e:

print('字典中没有这个词条:',e)

except:

print('其他错误!')

117. 下面程序的功能是从键盘读入一个文件名,然后打开该文件,读取其内容,再关闭该文件。假设D:\user\b.txt文件的内容为“我是b.txt文件!”。程序按照源程序文件方式运行后的输入输出情况如下图所示。请在横线处填写适当的语句或表达式将程序补充完整。

源程序:

d=dict(a=2,b=3,c=4)

try:

fn=input('fileName=')

f=open('D:/user/'+fn,'r')

print(f.read())

f.close()

except ____________________ IOError  ______________________ as e:

print('没有找到这个文件:',e)

except:

print('其他错误!')

118. 下面程序的功能是从键盘读入一个变量名,输出其值。程序按照源程序文件方式运行后的输入输出情况如下图所示。请在横线处填写适当的语句或表达式将程序补充完整。

源程序:

x,y,z=2,3,4

try:

n=input('name=')

print(eval(n))

except _____________________ NameError  _____________________ as e:

print('没有找到这个变量:',e)

except:

print('其他错误!')

119. 下面程序的功能是从键盘读入一个数据作为函数调用的实在参数。程序按照源程序文件方式运行后的输入输出情况如下图所示。请在横线处填写适当的语句或表达式将程序补充完整。

源程序:

def f(s):

s[2]=3

return s[2]

try:

x=eval(input('x='))

y=f(x)

print(y)

except __________________  TypeError ________________________ as e:

print('类型不匹配:',e)

except:

print('其他错误!')

120. 下面程序的功能是统计员工数量和显示员工信息。程序按照源程序文件方式运行后的输入输出情况如下图所示。请在横线处填写适当的语句或表达式将程序补充完整。

源程序:

class Employee:

empCount=______________ 0  ____________________________

def __init__(self,name,salary):

self.name=name

self.salary=salary

Employee.empCount+=1

def displayCount(self):

print("empCount={}".format(Employee.empCount))

def displayEmployee(self):

print("name={},salary={}".format(self.name,self.salary))

def main():

emp1=Employee("zhangyi",8000)

emp2=Employee("zhanger",9000)

emp1.displayEmployee()

emp2.displayEmployee()

print("empCount={}".format(Employee.empCount))

emp1.displayCount()

main()

121. 下面程序的功能是创建父类Person,并派生出子类Man。程序按照源程序文件方式运行后的输入输出情况如下图所示。请在横线处填写适当的语句或表达式将程序补充完整。

源程序:

class Person:

def __init__(self,name,age):

self.name=name

self.age=age

def print_age(self):

print(self.name,".age=",self.age)

class Man(_____________________ Person  _____________________):

work="Teacher"

def print_age(self):

print("{}'s age is {}".format(self.name,self.age))

def print_work(self):

print("{}'s work is {}".format(self.name,self.work))

def main():

a=Man("Bob",30)

a.print_age()

a.print_work()

main()

122. 下面程序的功能是求圆、正方形和矩形的面积。程序按照源程序文件方式运行后的输入输出情况如下图所示。请在横线处填写适当的语句或表达式将程序补充完整。

源程序:

import math

class Circle:

def __init__(self,r):

self.r=r

def getArea(self):

return math.pi*self.r**2

class Square:

def __init__(self,size):

self.size=size

def getArea(self):

return self.size*self.size

class Rectangle:

def __init__(self,w,h):

self.w=w

self.h=h

def getArea(self):

return self.w*self.h

def main():

a=Circle(2)

b=Square(3)

c=Rectangle(4, ______________ 5  ____________________________)

print("a=",a.getArea())

print("b=",b.getArea())

print("c=",c.getArea())

main()

123. 下面程序的功能是实现“+”和“-”的运算符重载。程序按照源程序文件方式运行后的输入输出情况如下图所示。请在横线处填写适当的语句或表达式将程序补充完整。

提示:Python的运算符是通过调用对象的特殊方法来实现的。重写运算符所对应的特殊方法,就可以实现运算符的重载。详情参见本作业文档最后面的附录。

源程序:

class MyNumber:

def __init__(self,value):

self.data= _______________ value  ___________________________

def __repr__(self):  # 对应于内置函数str(),用于显示数据

return "MyNumber({})".format(self.data)

def __add__(self,other):

v=self.data+other.data

return MyNumber(v)

def __sub__(self,other):

v=self.data-other.data

return MyNumber(v)

def main():

n1=MyNumber(30)

n2=MyNumber(20)

n3=n1+n2    # 等效为 n3=n1.__add__(n2)

n4=n3-n2    # 等效为 n4=n3.__sub__(n2)

print("n3.data=",n3.data)

print(n1,"+",n2,"=",n3)

# 等效为print(n1.__repr__(),"+",n2.__repr__(),"=",n3.__repr__())

# 等效为print(str(n1),"+",str(n2),"=",str(n3))

print(n3,"-",n2,"=",n4)

# 等效为print(n3.__repr__(),"-",n2.__repr__(),"=",n4.__repr__())

# 等效为print(str(n3),"-",str(n2),"=",str(n4))

main()

124. 编写一段程序实现下面的功能:定义一个Rectangle类,属性为左上角和右下角的平面坐标,编写方法,实现根据坐标计算矩形面积的功能。

class Rectangle:

def __init__(self, a, b, c, d):

self.a = a

self.b = b

self.c = c

self.d = d

def S_Rec(self):

print('The area of the rectangle is:', end='')

print((self.c-self.a) * (self.b-self.d))

r = Rectangle(0,1,2,0)

r.S_Rec()

125. 编写一段程序实现下面的功能:定义一个三维空间的点类Point,其属性是三维空间的坐标,再由它派生出一个直线类Line,能求直线的长度。

提示:从基类中继承的点的信息可以用于表示直线的中点。下面的二维点类仅供参考。

import math

class Point:

def __init__(self,x=0,y=0):

self.x=x

self.y=y

def __repr__(self):

return "({},{})".format(self.x,self.y)

def getX(self):

return self.x

def getY(self):

return self.y

def setX(self,x):

self.x=x

def setY(self,y):

self.y=y

class Line(Point):

def __init__(self,ps=Point(),pe=Point()):

self.ps=ps

self.pe=pe

mx=(self.ps.getX()+self.pe.getX())/2

my=(self.ps.getY()+self.pe.getY())/2

self.setX(mx)

self.setY(my)

def printLine(self):

print("1st:",self.getStartpoint())

print("2nd:",self.getEndpoint())

print("The Length of Line:",self.getLength())

print("The Midpoint of Line:",self.getMidpoint())

def getLength(self):

dx=self.pe.getX()-self.ps.getX()

dy=self.pe.getY()-self.ps.getY()

return math.sqrt(dx*dx+dy*dy)

def getStartpoint(self):

return self.ps

def getEndpoint(self):

return self.pe

def getMidpoint(self):

return Point(self.x,self.y)

def main():

ps=Point(-2,5)

pe=Point(7,9)

x=Line(ps,pe)

x.printLine()  # 输出直线x的信息

main()

class Point:

def __init__(self, x=0, y=0, z=0):

self.x = x

self.y = y

self.z = z

def __repr__(self):

return '({},{},{})'.format(self.x, self.y, self.z)

def getX(self):

return self.x

def getY(self):

return self.y

def getZ(self):

return self.z

class Line(Point):

def __init__(self, a=Point(), b=Point()):

self.a = a

self.b = b

def printLine(self):

print('First Point:', self.getPointa())

print('Second Point:', self.getPointb())

print('The length of the line is ', self.LineLength())

def LineLength(self):

x = self.a.getX() - self.b.getX()

y = self.a.getY() - self.b.getY()

z = self.a.getZ() - self.b.getZ()

return pow((x**2+y**2+z**2), 1/2)

def getPointa(self):

return self.a

def getPointb(self):

return self.b

a = Point(0, 0, 0)

b = Point(0, 1, 0)

l = Line(a, b)

l.printLine()

-----------------------------------------------------------------------------------------------------------

附录:运算符重载

(1)什么是运算符重载

让用户自定义的类生成的对象(实例)能够使用运算符进行操作

只能对已经存在的运算符进行重载,不能自己臆造发明新的运算符

运算符重载遵循三不变:优先级不变,结合性不变,运算量的个数不变

运算符重载的目的是提高可读性,让用户自定义数据类型(即类class的对象)能够使用常规运算符进行运算处理。

(2)作用

让用户自定义的实例像内建对象(即基本数据类型的变量或常量)一样进行运算符操作

让程序简洁易读

对用户自定义对象,将运算符赋予新的运算规则

提醒:运算符重载时,最好遵循运算符原有功能,否则会降低可读性。如果运算符重载不能提高程序的可读性,还不如不进行运算符重载,直接使用普通方法(函数)。

注意:可以用普通方法来实现运算符重载方法的功能。唯一的区别是:普通方法定义后需要人工调用(显示调用),而运算符重载方法定义后既可以自动调用(即隐式调用),也可以显示调用(即人工调用)。对于运算符重载方法,语法上可以显示调用,但为了提高可读性,还是尽量使用隐式调用,即使用与基本数据类型相同的运算表达式。

(3)算术运算符的重载

方法名             运算符和表达式      说明

__add__(self,rhs)        self + rhs          加法

__sub__(self,rhs)         self - rhs          减法

__mul__(self,rhs)         self * rhs         乘法

__truediv__(self,rhs)      self / rhs          除法

__floordiv__(self,rhs)      self //rhs         地板除

__mod__(self,rhs)         self % rhs       取模(求余)

__pow__(self,rhs)         self **rhs        幂运算

注:rhs (right hand side) 右手边,lhs (left hand side) 左手边

说明:

运算符重载的方法的参数已经有了固定的含义,不建议改变原有的运算符的含义及参数的意义

二元运算符的重载方法格式:

def __xx__(self,other):

语句块

例:实现两个自定义列表的相加和列表自连接(乘整数)

class Mylist:

def __init__(self,iterable=()):

self.data=list(iterable)

def __repr__(self):

return "Mylist({})".format(self.data)

def __add__(self,lst):

return Mylist(self.data+lst.data)

def __mul__(self,rhs):

# rhs为int类型,不能用rhs.data

return Mylist(self.data*rhs)

def main():

L1=Mylist([1,2,3])

L2=Mylist([4,5,6])

L3=L1+L2  # 这是隐式调用运算符重载方法

# 它等效为如下显式调用形式

# L3=L1.__add__(L2)

L4=L2+L1  # 等效为如下显式调用形式 L4=L2.__add__(L1)

L5=L1*3    # 等效为如下显式调用形式 L5=L1.__mul__(3)

print(L3)  # Mylist([1,2,3,4,5,6])  等效为如下显式调用形式 print(L3.__repr__())

print(L4)  # Mylist([4,5,6,1,2,3])

print(L5)  # Mylist([1,2,3,1,2,3,1,2,3])

main()

(4)反向运算符的重载

当运算符的左侧为内建类型时,右侧为自定义类型进行算术运算符运算时会出现TypeError错误,因为无法修改内建类型的代码实现运算符重载,此时需要使用反向运算符的重载

反向算术运算符的重载:

方法名            运算符和表达式       说明

__radd__(self,lhs)       lhs + self          加法

__rsub__(self,lhs)       lhs - self          减法

__rmul__(self,lhs)       lhs * self          乘法

__rtruediv__(self,lhs)    lhs / self           除法

__rfloordiv__(self,lhs)    lhs // self         地板除

__rmod__(self,lhs)       lhs % self         取模(求余)

__rpow__(self,lhs)       lhs ** self         幂运算

例:

class Mylist:

def __init__(self,iterable=()):

self.data=list(iterable)

def __repr__(self):

return "Mylist({})".format(self.data)

def __add__(self,lst):

return Mylist(self.data+lst.data)

def __mul__(self, rhs):

# rhs为int类型,不能用rhs.data

return Mylist(self.data*rhs)

def __rmul__(self,lhs):

return Mylist(self.data*lhs)

def main():

L1=Mylist([1,2,3])

L2=Mylist([4,5,6])

L3=3*L1     # 等效为 L3=L1.__rmul__(3)

print(L3)   # 等效为 print(L3.__repr__())

L1+=L2      # 等效为 L1=L1.__add__(L2)

print(L1)

L2*=3       # 等效为 L2=L2.__mul__(3)

print(L2)

main()

(5)复合赋值算术运算符的重载

以复合赋值算术运算符 x += y为例,此运算符会优先调用x.__iadd__(y)方法,如果没有__iadd__方法时,则会将复合赋值算术运算拆解为:x = x + y

然后调用x = x.__add__(y)方法,如果再不存在__add__方法则会触发TypeError类型的错误异常

复合赋值算术运算符的重载:

方法名             运算符和表达式      说明

__iadd__(self,rhs)       self += rhs        加法

__isub__(self,rhs)       self -= rhs         减法

__imul__(self,rhs)       self *= rhs         乘法

__itruediv__(self,rhs)     self /= rhs        除法

__ifloordiv__(self,rhs)    self //=rhs        地板除

__imod__(self,rhs)       self %= rhs     取模(求余)

__ipow__(self,rhs)       self **=rhs       幂运算

(6)比较算术运算符的重载

比较算术运算符的重载:

方法名           算符和表达式      说明

__lt__(self,rhs)       self < rhs        小于

__le__(self,rhs)       self <= rhs       小于等于

__gt__(self,rhs)       self > rhs        大于

__ge__(self,rhs)       self >= rhs       大于等于

__eq__(self,rhs)       self == rhs       等于

__ne__(self,rhs)       self != rhs       不等于

(7)位运算符重载

方法名            运算符和表达式        说明

__and__(self,rhs)      self & rhs            位与

__or__(self,rhs)        self | rhs             位或

__xor__(self,rhs)       self ^ rhs             位异或

__lshift__(self,rhs)      self <<rhs            左移

__rshift__(self,rhs)      self >>rhs            右移

(8)反向位运算符重载

方法名            运算符和表达式        说明

__and__(self,lhs)       lhs & rhs             位与

__or__(self,lhs)         lhs | rhs             位或

__xor__(self,lhs)        lhs ^ rhs             位异或

__lshift__(self,lhs)      lhs <<rhs             左移

__rshift__(self,lhs)      lhs >>rhs             右移

(9)复合赋值位相关运算符重载

方法名             运算符和表达式       说明

__iand__(self,rhs)       self & rhs           位与

__ior__(self,rhs)        self | rhs            位或

__ixor__(self,rhs)       self ^ rhs            位异或

__ilshift__(self,rhs)      self <<rhs           左移

__irshift__(self,rhs)      self >>rhs           右移

(10)一元运算符的重载

方法名         运算符和表达式     说明

__neg__(self)        - self           负号

__pos__(self)        + self           正号

__invert__(self)      ~ self           取反

语法

一、单项选择题

题号

1

2

3

4

5

6

7

8

9

10

答案

B

D

D

C

A

B

B

C

C

C

题号

11

12

13

14

15

16

17

18

19

20

答案

C

C

B

B

C

A

A

B

A

A

题号

21

22

23

24

25

26

27

28

29

30

答案

D

D

A

A

D

A

A

A

B

C

题号

31

32

33

34

35

36

37

38

39

40

答案

B

C

A

A

A

B

A

B

B

A

题号

41

42

43

44

45

46

47

48

49

50

答案

A

D

C

A

A

A

D

C

B

C

题号

51

52

53

54

55

56

57

58

59

60

答案

B

A

B

B

A

D

B

B

C

C

题号

61

62

63

64

65

66

67

68

69

70

答案

A

B

C

A

A

A

C

B

A

D

题号

71

72

73

74

75

76

77

78

79

80

答案

B

A

B

A

C

D

C

A

B

A

题号

81

82

83

84

85

86

87

88

89

90

答案

B

C

B

C

A

C

A

C

A

A

题号

91

92

93

94

95

96

97

98

99

100

答案

B

B

D

D

C

B

D

B

B

D

二、程序填空题

101. n//2

102. n%16

103. global n

104. import os

105. 2*(n-i-1)-1

106. ‘w’

107. t%2

108. s

109. s

110. ‘其他异常!’

111. ‘Goodbye!’

112. Exception

113. len(s)

114. AssertionError

115. IndexError

116. KeyError

117. IOError

118. NameError

119. TypeError

120. 0

121. Person

122. 5

123. value

124.

class Rectangle:

def __init__(self, a, b, c, d):

self.a = a

self.b = b

self.c = c

self.d = d

def S_Rec(self):

print('The area of the rectangle is:', end='')

print((self.c-self.a) * (self.b-self.d))

r = Rectangle(0,1,2,0)

r.S_Rec()

125.

class Point:

def __init__(self, x=0, y=0, z=0):

self.x = x

self.y = y

self.z = z

def __repr__(self):

return '({},{},{})'.format(self.x, self.y, self.z)

def getX(self):

return self.x

def getY(self):

return self.y

def getZ(self):

return self.z

class Line(Point):

def __init__(self, a=Point(), b=Point()):

self.a = a

self.b = b

def printLine(self):

print('First Point:', self.getPointa())

print('Second Point:', self.getPointb())

print('The length of the line is ', self.LineLength())

def LineLength(self):

x = self.a.getX() - self.b.getX()

y = self.a.getY() - self.b.getY()

z = self.a.getZ() - self.b.getZ()

return pow((x**2+y**2+z**2), 1/2)

def getPointa(self):

return self.a

def getPointb(self):

return self.b

a = Point(0, 0, 0)

b = Point(0, 1, 0)

l = Line(a, b)

l.printLine()

一、单项选择题

1. 按照源程序文件方式运行下面程序段后的输出结果是(  B  )

def f():

pass

print(f())

A. 无任何输出    B. None     C. pass     D. 出错

2. 一个函数中可以有多少个return语句?(   D )

A. 0    B. 1     C. 2     D. 任意

3. 按照源程序文件方式运行下面程序段后的输出结果是( D   )

f()

def f():

print('ok')

A. 无任何输出    B. None     C. ok     D. 出错

4. 按照源程序文件方式运行下面程序段后的输出结果是(    C)

def f(x,y):

return x**2+y

print(f(2,3))

A. 2    B. 3     C. 7     D. 11

5. 按照源程序文件方式运行下面程序段后的输出结果是(  A  )

def f(x,y):

return x**2

return y**2

return x+y

print(f(2,3))

A. 4    B. 9     C. 5     D. 出错

6. 按照源程序文件方式运行下面程序段后的输出结果是(   B )

def f():

print('AA',end='')

return

print('BB',end='')

return

print(f())

A. None    B. AANone     C. AABBNone     D. 出错

7. 按照源程序文件方式运行下面程序段后的输出结果是(   B )

def f():

return 2,3,4

def main():

print(f())

return

main()

A. 2,3,4    B. (2,3,4)     C. [2,3,4]     D. 出错

8. 按照源程序文件方式运行下面程序段后的输出结果是(  C  )

def f():

print('AA',end='')

def main():

print(f())

main()

A. 无任何输出    B. None     C. AANone     D. 出错

9. 按照源程序文件方式运行下面程序段后的输出结果是(  C  )

f=lambda:2

def main():

print(f())

return

main()

A. 无任何输出    B. None     C. 2     D. 出错

10. 按照源程序文件方式运行下面程序段后的输出结果是(  C  )

f=lambda x:(2,x,x**2)

def main():

print(f(3))

return

main()

A. 无任何输出    B. 2,3,9     C. (2, 3, 9)     D. 出错

11. 按照源程序文件方式运行下面程序段后的输出结果是(  C  )

f,g=lambda x:x**2,lambda y:2*y

def main():

print('{},{}'.format(f(2),g(3)))

return

main()

A. 无任何输出    B. None     C. 4,6     D. 出错

12. 按照源程序文件方式运行下面程序段后的输出结果是(   C )

def g():

return lambda x,y:x+y

def main():

f=g()

print(f(2,3))

return

main()

A. 无任何输出    B. None     C. 5     D. 出错

13. 按照源程序文件方式运行下面程序段后的输出结果是(  B  )

f=(lambda:2,lambda x:x*3,lambda y:y**2)

def main():

print(f[0]()+f[1](2)+f[2](3))

return

main()

A. 0    B. 17    C. None     D. 出错

14. 按照源程序文件方式运行下面程序段后的输出结果是(  B  )

def f(x):

return x(2)

def main():

y=f(lambda x:x**2)

print(y)

return

main()

A. 0    B. 4     C. None     D. 出错

15. 按照源程序文件方式运行下面程序段后的输出结果是( C   )

def f(x):

x=3

def main():

x=2

f(x)

print(x)

return

main()

A. None    B. 0     C. 2     D. 3

16. 按照源程序文件方式运行下面程序段后的输出结果是(  A  )

def f(x):

x[1]=5

def main():

x=[2,3,4]

f(x)

print(x)

return

main()

A. [2,5,4]    B. [5,3,4]     C. [2,3,4]     D. [2,3,5]

17. 按照源程序文件方式运行下面程序段后的输出结果是(  A  )

def f(x):

x['a']=4

def main():

x=dict(a=2,b=3)

f(x)

print(x)

return

main()

A. {'a': 4, 'b': 3}    B. {'a': 2, 'b': 3}     C. {'a': 3, 'b': 4}     D. {'a': 2, 'b': 4}

18. 按照源程序文件方式运行下面程序段后的输出结果是(  B  )

def f(x,y):

x,y=y,x

def main():

x,y=2,3

f(x,y)

print('{},{}'.format(x,y))

return

main()

A. 3,2    B. 2,3     C. 2,2     D. 3,3

19. 按照源程序文件方式运行下面程序段后的输出结果是( A   )

def f(s):

s[0],s[1]=s[1],s[0]

def main():

s=[2,3]

f(s)

print(s)

return

main()

A. [3, 2]    B. [2, 3]     C. [2, 2]     D. [3, 3]

20. 按照源程序文件方式运行下面程序段后的输出结果是( A   )

def f(x,y=4,z=5):

print(x,y,z,sep=',')

def main():

f(2,3)

return

main()

A. 2,3,5    B. 2,4,5     C. 2,4,3     D. 3,4,5

21. 按照源程序文件方式运行下面程序段后的输出结果是(   D )

def f(x=4,y,z=5):

print(x,y,z,sep=',')

def main():

f(2,3)

return

main()

A. 2,3,5    B. 4,2,5     C. 4,3,5     D. 出错

22. 按照源程序文件方式运行下面程序段后的输出结果是(  D  )

def f(x=4,y,z=5):

print(x,y,z,sep=',')

def main():

f(y=2,x=3)

return

main()

A. 3,2,5    B. 4,2,5     C. 2,3,5     D. 出错

23. 按照源程序文件方式运行下面程序段后的输出结果是(    A)

def f(x,y=4,z=5):

print(x,y,z,sep=',')

def main():

f(y=2,x=3)

return

main()

A. 3,2,5    B. 3,4,5     C. 2,3,5     D. 出错

24. 按照源程序文件方式运行下面程序段后的输出结果是(   A )

def f(x,y,*z):

print(x,y,z,sep=',')

def main():

f(2,3,4,5,6)

return

main()

A. 2,3,(4,5,6)    B. 2,3,[ 4,5,6]     C. 2,3,{4,5,6}     D. 2,3,4,5,6

25. 按照源程序文件方式运行下面程序段后的输出结果是( D   )

def f(x=6,y=7,**z):

print(x,y,z,sep=',')

def main():

f(2,3,4,b=5)

return

main()

A. 2,3,{None: 4, 'b': 5}    B. 2,3,{'b': 5}     C. 3,4,{'b': 5}     D. 出错

26. 按照源程序文件方式运行下面程序段后的输出结果是(   A )

def f(x=6,y=7,*z,**t):

print(x,y,z,t,sep=',')

def main():

f(2,a=4,b=5)

return

main()

A. 2,7,(),{'a': 4, 'b': 5}     B. 6,7,(2,),{'a': 4, 'b': 5}

C. 2,7,(4,),{'b': 5}         D. 2,7,(4,5),{}

27. 按照源程序文件方式运行下面程序段后的输出结果是( A   )

def f(x=6,y=7,*z):

print(x,y,z,sep=',')

def main():

x,*y,z=2,3,4,5

f(x,y,z)

return

main()

A. 2,[3, 4],(5,)   B. 2,(3, 4),(5,)    C. 2,3,(4,5)    D. 2,[3, 4],(5)

28. 按照源程序文件方式运行下面程序段后的输出结果是(   A )

def f(x=6,y=7,*z):

print(x,y,z,sep=',')

def main():

x,y,*z=2,3,4,5

f(x,y,z)

return

main()

A. 2,3,([4, 5],)    B. 2,3,(4, 5,)     C. 2,3,[4, 5]     D. 2,3,([4, 5])

29. 按照源程序文件方式运行下面程序段后的输出结果是(  B  )

def f(x=6,y=7,*z):

print(x,y,z,sep=',')

def main():

x,*y,z=2,3,4,5

f(x,*y,z)

return

main()

A. 2,[3, 4],(5,)    B. 2,3,(4, 5)     C. 2,[3],(4, 5)     D. 2,[3,4], (5)

30. 按照源程序文件方式运行下面程序段后的输出结果是( C   )

def f(x,*y):

m=x;

for i in y:

if(i>m):

m=i

return m

def main():

z=f(3,4,2,5,6,8,6,7,1)

print(z)

return

main()

A. 1    B. 6     C. 8     D. 9

31. 按照源程序文件方式运行下面程序段后的输出结果是(  B  )

def f(x):

a=2;

x=3

print(a,x,sep='',end='')

def g(x):

a=4;

x=x+5

print(a,x,sep='',end='')

def main():

a,x=2,3

f(a)

g(x)

main()

A. 23412    B. 2348     C. 26412    D. 2328

32. 按照源程序文件方式运行下面程序段后的输出结果是(  C  )

def f(x):

a=2;

x=3

print(a,x,sep='',end='')

def g(x):

global a

a=a+4;

x=x+5

print(a,x,sep='',end='')

a,x=2,3

f(a)

g(x)

A. 23412    B. 2348     C. 2368    D. 2328

33. 按照源程序文件方式运行下面程序段后的输出结果是(    A)

x=2

def f(x=4):

print(x,end='')

f(x)

x=3

f(x)

A. 23    B. 32     C. 22     D. 33

34. 按照源程序文件方式运行下面程序段后的输出结果是(  A  )

x=2

def f(x=4):

print(x,end='')

def main():

global x

f(x)

x=3

f(x)

main()

A. 23    B. 32     C. 22     D. 33

35. 按照源程序文件方式运行下面程序段后的输出结果是(  A  )

s='uestc'

def f(i):

if(i<-len(s)):

return

else:

f(i-1)

print(s[i],end='')

def main():

f(-1)

main()

A. uestc    B. ctseu     C. None     D. 出错

36. 按照源程序文件方式运行下面程序段后的输出结果是( B   )

def f(i):

if(i>=len(s)):

return

else:

f(i+1)

print(s[i],end='')

def main():

global s

s='uestc'

f(0)

main()

A. uestc    B. ctseu     C. None     D. 出错

37. 按照源程序文件方式运行下面程序段后的输出结果是(  A  )

def f(y=3):

x=y

print(x,end='')

def g():

nonlocal x

print(x,end='')

x=4

g()

print(x,end='')

def main():

global x

x=2

f(x)

print(x,end='')

main()

A. 2242    B. 2224     C. 2442     D. 3242

38. 按照源程序文件方式运行下面程序段后的输出结果是(   B )

def f(y=3):

x=y

print(x,end='')

def g():

global x

print(x,end='')

x=4

g()

print(x,end='')

def main():

global x

x=2

f(x)

print(x,end='')

main()

A. 2242    B. 2224     C. 2442     D. 3242

39. 按照源程序文件方式运行下面程序段后的输出结果是(   B )

def f(y=3):

x=y

print(x,end='')

def g():

global x

print(x,end='')

x=4

def h():

print(x,end='')

x=5

g()

print(x,end='')

def main():

global x

x=2

f(x)

print(x,end='')

main()

A. 2242    B. 2224     C. 24422     D. 32422

40. 按照源程序文件方式运行下面程序段后的输出结果是( A   )

def f(y=3):

x=y

print(x,end='')

def g():

global x

print(x,end='')

x=4

def h():

global x

print(x,end='')

x=5

h()

g()

print(x,end='')

def main():

global x

x=2

f(x)

print(x,end='')

main()

A. 22425    B. 22455     C. 24422     D. 32422

41. 按照源程序文件方式运行下面程序段后的输出结果是(  A  )

def f(n):

print(n,end='')

if(n<1):

return

else:

f(n-1)

print(n,end='')

def main():

f(3)

main()

A. 3210123    B. 32100123     C. 321123     D. 32123

42. 按照源程序文件方式运行下面程序段后的输出结果是(  D  )

def f():

global x

x=4

y=5

def g():

nonlocal y

global x

x=6

y=7

print('{}{}'.format(x,y),end='')

g()

print('{}{}'.format(x,y),end='')

x=2

y=3

f()

print('{}{}'.format(x,y),end='')

A. 674723    B. 674523     C. 676767     D. 676763

43. 要将源程序模块文件搜索路径“D:\user\”加入sys.path中,正确的语句是(   C )

A. import sys;sys.path.append('D:\user\')     B. import sys;sys.path.append(r'D:\user\')

C. import sys;sys.path.append("D:\\user\\")   D. import sys;sys.path.append(r"D:\user\")

44. 要将源程序模块文件搜索路径“D:\user\”加入sys.path中,错误的语句是(   A)

A. import sys;sys.path.append(r'D:\user\')    B. import sys;sys.path.append('D:\\user\\')

C. import sys;sys.path+=["D:\\user\\"]       D. import sys;sys.path+=['D:\\user\\']

45. 按照源程序文件方式运行下面程序c.py后的输出结果是( A   )

在D:\user文件夹中建立如下三个Python源程序文件:

# D:\user\a.py

def f():

print('AA',end='')

# D:\user\b.py

def g():

print('BB',end='')

# D:\user\c.py

from a import f

from b import g

def main():

f()

g()

print('CC')

main()

A. AABBCC    B. CC     C. 无输出     D. 出错

46. 按照源程序文件方式运行下面程序c.py后的输出结果是(   A)

在D:\user\aa文件夹中建立如下a.py源程序文件:

# D:\user\aa\a.py

def f():

print('AA',end='')

在D:\user\bb文件夹中建立如下b.py源程序文件:

# D:\user\bb\b.py

def g():

print('BB',end='')

在D:\user\cc文件夹中建立如下c.py源程序文件:

# D:\user\cc\c.py

import sys

sys.path.append('D:\\user\\aa')

sys.path.append('D:\\user\\bb')

from a import f

from b import g

def main():

f()

g()

print('CC')

main()

A. AABBCC    B. CC     C. 无输出     D. 出错

47. 按照源程序文件方式运行下面程序c.py后的输出结果是( D   )

在D:\user文件夹中建立如下三个Python源程序文件:

# D:\user\a.py

def f():

print(__name__,end='')

# D:\user\b.py

def g():

print(__name__,end='')

# D:\user\c.py

from a import f

from b import g

def main():

f()

g()

print(__name__,end='')

main()

A. abc    B. __main__bc     C. a__main__c     D. ab__main__

48. 按照源程序文件方式运行下面程序b.py后的输出结果是( C   )

在D:\user文件夹中建立如下三个Python源程序文件:

# D:\user\a.py

def f():

print(__name__,end='')

# D:\user\b.py

import a,c

def g():

a.f()

print(__name__,end='')

c.main()

g()

# D:\user\c.py

def main():

print(__name__,end='')

A. abc    B. __main__bc     C. a__main__c     D. ab__main__

49. 按照源程序文件方式运行下面程序a.py后的输出结果是(  B )

在D:\user文件夹中建立如下三个Python源程序文件:

# D:\user\a.py

def f():

print(__name__,end='')

f()

# D:\user\b.py

def g():

print(__name__,end='')

g()

# D:\user\c.py

def main():

print(__name__,end='')

main()

A. a    B. __main__     C. a__main__     D. __main__a

50. 按照源程序文件方式运行下面程序a.py后的输出结果是(  C  )

在D:\user文件夹中建立如下两个Python源程序文件:

# D:\user\a.py

def f():

print(__name__,end='')

if __name__=='__main__':

f()

import b

b.g()

# D:\user\b.py

def g():

print(__name__,end='')

if __name__=='__main__':

g()

import a

a.f()

A. ab    B. __main__a     C. __main__b     D. __main____main__

51. 按照源程序文件方式运行下面程序b.py后的输出结果是(B    )

在D:\user文件夹中建立如下两个Python源程序文件:

# D:\user\a.py

def f():

print(__name__,end='')

if __name__=='__main__':

f()

import b

b.g()

# D:\user\b.py

def g():

print(__name__,end='')

if __name__=='__main__':

g()

import a

a.f()

A. ab    B. __main__a     C. __main__b     D. __main____main__

52. 如果当前源程序模块文件是主模块文件,则其系统变量“__name__”的值为(  A  )

A. __main__              B. 其源程序文件的文件根名(不加后面的.py,即模块名)

C. 其源程序文件的路径    D. 其源程序文件所在的文件夹名字

53. 如果当前源程序模块文件是非主模块文件,则其系统变量“__name__”的值为( B  )

A. __main__              B. 其源程序文件的文件根名(不加后面的.py,即模块名)

C. 其源程序文件的路径    D. 其源程序文件所在的文件夹名字

54. 新建一个文本文件,欲对其进行读和写操作,则该文件的正确打开方式是( B   )

A. f=open(r'D:\user\a.txt','r+')      B. f=open(r'D:\user\a.txt','w+')

C. f=open(r'D:\user\a.txt','rb+')     D. f=open(r'D:\user\a.txt','wb+')

55. 打开一个已经存在的文本文件,欲对其进行读和写操作,则该文件的正确打开方式是(  A  )

A. f=open(r'D:\user\a.txt','r+')      B. f=open(r'D:\user\a.txt','w+')

C. f=open(r'D:\user\a.txt','rb+')     D. f=open(r'D:\user\a.txt','wb+')

56. 打开一个已经存在的二进制文件,欲在其原有内容后面写入一些新内容,则该文件的正确打开方式是(   D )

A. f=open(r'D:\user\a.txt','r+')       B. f=open(r'D:\user\a.txt','wb+')

C. f=open(r'D:\user\a.txt','a+')       D. f=open(r'D:\user\a.txt','ab+')

57. 下列哪种打开文件的方式会造成原文件内容被清除?(  B  )

A. f=open(r'D:\user\a.txt','r+')       B. f=open(r'D:\user\a.txt','w+')

C. f=open(r'D:\user\a.txt','a+')       D. f=open(r'D:\user\a.txt','ab+')

58. 用方法“f=open(r'D:\user\a.txt','r+')”打开文件,则关闭该文件的方法是(  B  )

A. close(f)    B. f.close()     C. close(f,'r+')     D. f.close('r+')

59. 已知文本文件“D:\user\t.txt”的内容如下,按照源程序文件方式运行下面各程序段后,输出结果与其余三项不同的是(C    )

# D:\user\t.txt

AA

BBB

CCCC

A.

f=open(r'D:\user\t.txt')

s=f.read()

print(s)

f.close()

B.

f=open(r'D:\user\t.txt','r')

while True:

s=f.read(2)

if not s:

break

print(s,end='')

f.close()

C.

f=open(r'D:\user\t.txt','r')

while True:

s=f.readline()

if not s:

break

print(s)

f.close()

D.

f=open(r'D:\user\t.txt')

for i in f:

print(i,end='')

f.close()

60. 已知文本文件“D:\user\t.txt”的内容如下,按照源程序文件方式运行下面各程序段后,输出结果与其余三项不同的是(C)

AA

BBB

CCCC

A.

f=open(r'D:\user\t.txt')

s=[]

for i in f:

s+=[i]

print(s)

f.close()

B.

f=open(r'D:\user\t.txt','r')

s=[]

while True:

t=f.readline()

if not t:

break

s+=[t]

print(s)

f.close()

C.

f=open(r'D:\user\t.txt','r')

s=[]

t=''

while True:

i=f.read(1)

if not i:

break

if (i!='\n'):

t+=i

else:

t+='\n'

s+=[t]

t=''

print(s)

f.close()

D.

f=open(r'D:\user\t.txt','r')

s=f.readlines()

print(s)

f.close()

61. 按照源程序文件方式运行下面程序段后的输出结果是(  A  )

import string

f=open(r'D:\user\t.txt','w+')

f.write(string.digits+string.ascii_uppercase)

f.seek(0)

s=f.read(10)

print(s)

f.close()

A. 0123456789    B. ABCDEFGHIJ     C. 01234     D. ABCDE

62. 按照源程序文件方式运行下面程序段后的输出结果是(   B )

import string

f=open(r'D:\user\t.txt','w+')

f.write(string.digits+'\n'+string.ascii_uppercase+'\n'+string.ascii_lowercase)

print(f.tell(),end=',')

f.seek(0)

s=f.read(1)

print(f.tell(),end=',')

t=f.readline()

print(f.tell(),end=',')

print(len(s+t))

f.close()

A. 65,1,12,12    B. 66,1,12,11     C. 66,1,12,12     D. 65,1,12,11

63. 按照源程序文件方式运行下面程序段后的输出结果是(       C  )

import string

f=open(r'D:\user\t.dat','wb+')

s=string.digits+string.ascii_uppercase+string.ascii_lowercase

sb=s.encode()

f.write(sb)

print(f.tell(),end=',')

f.seek(-5,2)

t=f.read()

print(t,end=',')

print(f.tell())

f.close()

A. 0,b'vwxyz',62    B. 0,'vwxyz',62     C. 62,b'vwxyz',62     D. 62,'vwxyz',62

64. 按照源程序文件方式运行下面程序段后的输出结果是( A   )

import string

f=open(r'D:\user\t.dat','wb+')

s=string.digits+string.ascii_uppercase+string.ascii_lowercase

sb=s.encode()

f.write(sb)

f.seek(-40,1)

print(f.tell(),end=',')

f.seek(-10,1)

print(f.tell())

f.close()

A. 22,12    B. 21,11     C. 21,12     D. 22,13

65. 按照源程序文件方式运行下面程序段后的输出结果是( A   )

import string

f=open(r'D:\user\t.dat','wb+')

s='电子科技大学'

sb=s.encode('gbk')

f.write(sb)

f.seek(-12,1)

print(f.tell(),end=',')

t=f.read(4)

x=t.decode('gbk')

print(x,end=',')

print(f.tell())

f.close()

A. 0,电子,4    B. 0,电子科技,4     C. 6,科技大学,18     D. 4,科技,8

66. 在交互命令模式下,获取当前工作目录的程序段是( A   )

A. import os;os.getcwd()       B. import os;os.chdir()

C. import os;os.listdir()        D. import os;os.mkdir()

67. 在交互命令模式下,创建“D:\aa”文件夹(目录)的程序段是(  C  )

A. import os;os.rmdir(r'D:\aa')     B. import os;os.listdir(r'D:\aa')

C. import os;os.mkdir(r'D:\aa')     D. import os;os.chdir(r'D:\aa')

68. 在交互命令模式下,列出“D:\user”文件夹(目录)中内容的程序段是(   B )

A. import os;os.rmdir(r'D:\user')     B. import os;os.listdir(r'D:\user')

C. import os;os.mkdir(r'D:\user')     D. import os;os.chdir(r'D:\user')

69. 在交互命令模式下,删除空目录“D:\aa”的程序段是( A   )

A. import os;os.rmdir(r'D:\aa')     B. import os;os.listdir(r'D:\aa')

C. import os;os.mkdir(r'D:\aa')     D. import os;os.chdir(r'D:\aa')

70. 在交互命令模式下,将系统当前目录改为“D:\aa”的程序段是(  D  )

A. import os;os.rmdir(r'D:\aa')     B. import os;os.listdir(r'D:\aa')

C. import os;os.mkdir(r'D:\aa')     D. import os;os.chdir(r'D:\aa')

71. 功能与下面程序段相同的是(  B  )

import os

path=os.getcwd()

s=os.listdir(path)

print(s)

A.

import os

path=os.getcwd()

s=os.walk(path)

print(s)

B.

import os

path=os.getcwd()

s=os.walk(path)

for dirpath,dirnames,filenames in s:

print(filenames)

C.

import os

path=os.getcwd()

s=os.walk(path)

for dirpath,dirnames,filenames in s:

print(dirpath)

D.

import os

path=os.getcwd()

s=os.walk(path)

for dirpath,dirnames,filenames in s:

print(dirnames)

72. 查看文件“D:\user\a.txt”大小(单位是字节)的程序段是(  A  )

A.

import os

s=os.path.getsize(r'D:\user\a.txt')

print(s)

B.

import os

s=os.path.exists(r'D:\user\a.txt')

print(s)

C.

import os

s=os.stat(r'D:\user\a.txt')

print(s)

D.

import os

s=os.path.getctime(r'D:\user\a.txt')

print(s)

73. 判断文件“D:\user\a.txt”是否存在的程序段是( B   )

A.

import os

s=os.path.getsize(r'D:\user\a.txt')

print(s)

B.

import os

s=os.path.exists(r'D:\user\a.txt')

print(s)

C.

import os

s=os.stat(r'D:\user\a.txt')

print(s)

D.

import os

s=os.path.getctime(r'D:\user\a.txt')

print(s)

74. 将文件“D:\user\a.txt”改名为“D:\user\b.txt”,不能实现该功能的程序段是(  A  )

A.

import os

os.rename('D:\user\a.txt','D:\user\b.txt')

B.

import os

os.rename('D:/user/a.txt','D:/user/b.txt')

C.

import os,shutil

shutil.copyfile('D:/user/a.txt','D:/user/b.txt')

os.remove('D:/user/a.txt')

D.

import shutil

shutil.move('D:/user/a.txt','D:/user/b.txt')

75. 将文件“D:\user\a.txt”复制为“D:\b.txt”,正确的程序段是(  C  )

A.

import os

os.rename('D:\\user\\a.txt','D:\\b.txt')

B.

import os

os.remove('D:\\user\\a.txt','D:\\b.txt')

C.

import shutil

shutil.copyfile('D:\\user\\a.txt','D:\\b.txt')

D.

import shutil

shutil.move('D:\\user\\a.txt','D:\\b.txt')

76. 在Python中可使用read([size])来读取文件中的数据,如果参数size省略,则读取文件中的( D   )

A. 什么也不读取    B. 一个字符     C. 一行数据     D. 所有数据

77. 在Python中可使用readline([size])来读取文件中的数据,如果参数size省略,则读取文件中的(  C  )

A. 什么也不读取    B. 一个字符     C. 一行数据     D. 所有数据

78. 在Python中可使用readlines([size])来读取文件中的数据,此时返回的数据为(  A  )

A. 列表    B. 字符     C. 字符串     D. 对象

79. 在Python中使用seek(offset)来移动文件位置指针,当offset为负值时,表示(  B  )

A. 文件指针向文件尾部方向移动    B. 文件指针向文件头部方向移动

C. 文件指针不向任何地方移动      D. 文件指针直接移动到文件末尾

80. 在Python中,欲对文件任意位置进行写入操作,则文件的打开方式应该是( A  )

A. 'w'    B. 'a'     C. 'a+'     D. 'w'或'a'

81. 在Python中,打开文件时没有指出打开方式,则默认的文件打开方式是(  B  )

A. 'w'    B. 'r'     C. 'a'     D. 'w+'

82. 在Python中,如果文件打开方式是'w',当向该文件写入‘uestc’时,则(  C  )

A. 将该字符串插入在文件头部           B. 将该字符串插入在文件尾部

C. 将用该字符串覆盖文件的原有内容     D. 报错

83. 在Python中,如果文件打开方式是'a',则打开文件时文件位置指针在(  B  )

A. 文件头部    B. 文件尾部     C. 文件中部     D. 随机位置

84. 在Python中,不能表示当前文件目录的是( C   )

A. '.'    B. './'     C. '..'或'../'     D. import os;os.getcwd()

85. 按照源程序文件方式运行下面程序段后的输出结果是( A  )

try:

x=[3,4,5]

y=2+x

print(y)

except TypeError:

print('类型不匹配!')

except SyntaxError:

print('语法错误!')

except:

print('其他错误!')

A. 类型不匹配!    B. 语法错误!     C. 其他错误!     D. [2,3,4,5]

86. 按照源程序文件方式运行下面程序段后的输出结果是(  C  )

try:

x=x+2

except TypeError:

print('AA')

except SyntaxError:

print('BB')

except NameError:

print('CC')

except:

print('DD')

A. AA    B. BB     C. CC     D. DD

87. 按照源程序文件方式运行下面程序段后的输出结果是(  A  )

try:

s=(2,3,4)

s[1]=5

except TypeError:

print('AA')

except SyntaxError:

print('BB')

except NameError:

print('CC')

except:

print('DD')

A. AA    B. BB     C. CC     D. DD

88. 按照源程序文件方式运行下面程序段后的输出结果是(  C  )

try:

x=1+2,2+3,3+4

except:

print('AA',end='')

else:

print('BB',end='')

finally:

print('CC',end='')

print('DD',end='')

A. AA    B. AACCDD     C. BBCCDD     D. AABBCCDD

89. 在Python语言中定义一个类时,如果省略父类名,则默认的父类是( A   )

A. object    B. root     C. pass     D. None

90. 类中私有属性和私有方法的名称是(  A  )

A. 以双下划线(__)开头         B. 以双下划线(__)结尾

C. 用private声明                 D. 以单下划线(_)开头

91. 在Python中,类的构造方法名是( B   )

A. 与类名相同    B. __init__     C. __new__     D. 以@开头

92. 在类中方法外定义的属性是(  B  )

A. 实例属性    B. 类属性     C. 私有属性     D. 公有属性

93. 在Python中,哪种方法内只能访问类属性,不能访问实例属性?(  D  )

A. 实例方法    B. 类方法     C. 静态方法     D. 析构方法

94. 在Python中,用户自定义类直接继承的父类个数是(   D )

A. 1个    B. 至少1个     C. 至少2个     D. 任意个

95. 下列方法中,哪种方法可以没有形式参数?(  C  )

A. 带有装饰器@classmethod的方法      B. 实例方法

C. 带有装饰器@staticmethod的方法      D. 构造方法和析构方法

96. 在Python中,一个类有多少个类对象?(B   )

A. 1个    B. 至少1个     C. 至少2个     D. 任意个

97. 在Python中,一个类可以有多少个实例对象?(   D )

A. 1个    B. 至少1个     C. 至少2个     D. 任意个

98. 在Python中,一个类有多少个(有效的)构造方法?(  B  )

A. 1个    B. 至少1个     C. 至少2个     D. 任意个

99. 在Python中,一个类可以有多少个类属性?(  B )

A. 1个    B. 至少1个     C. 至少2个     D. 任意个

100. 在Python中,一个类可以有多少个实例方法?(  D )

A. 1个    B. 至少1个     C. 至少2个     D. 任意个

二、程序填空题

(为便于阅卷,不用抄题,只提交各小题答案。请将答案填写在答题纸上。)

101. 下面程序的功能是从键盘读入一个正整数,将其转换为二进制数,并输出之。程序按照源程序文件方式运行后的输入输出情况如下图所示。请在横线处填写适当的语句或表达式将程序补充完整。

源程序:

def f(n):

if(n==0):

return

else:

f(_________________n//2         _________________________)

print(n%2,end='')

def main():

x=eval(input('x='))

print('0b',end='')

f(x)

main()

102. 下面程序的功能是从键盘读入一个正整数,将其转换为十六进制数,并输出之。程序按照源程序文件方式运行后的输入输出情况如下图所示。请在横线处填写适当的语句或表达式将程序补充完整。

源程序:

def f(n):

global s

if(n==0):

return

else:

f(n//16)

print(s[____________________  n%16  ______________________],end='')

def main():

global s

s='0123456789ABCDEF'

x=eval(input('x='))

print('0x',end='')

f(x)

main()

103. 下面程序的功能是模拟系统登录过程。从键盘读入一个账号的密码,如果输入的密码正确,就显示“欢迎光临!”;如果输入的密码错误,则显示“密码错误!”;如果用户输入的密码连续错误3次,则显示“你不是合法用户!”。程序按照源程序文件方式运行后的输入输出情况如下图所示。请在横线处填写适当的语句或表达式将程序补充完整。

源程序:

def f():

______________    global n  ____________________________

if(n>3):

print('你不是合法用户!')

return

else:

k=input('请输入密码:')

if(k=='123'):

print('欢迎光临!')

x=input('继续?(y/n)')

if (x=='y' or x=='Y'):

n=1

f()

else:

return

else:

print('密码错误!')

n=n+1

f()

def main():

global n

n=1

f()

main()

104. 下面程序的功能是遍历输出当前工作目录中的所有文件和文件夹。程序按照源程序文件方式运行后的输入输出情况如下图所示。请在横线处填写适当的语句或表达式将程序补充完整。

源程序:

__________________  import os ________________________

s=[]

path=os.getcwd()

f=os.walk(path)

for dirpath,dirnames,filenames in f:

for i in dirnames:

s.append(os.path.join(dirpath,i))

for i in filenames:

s.append(os.path.join(dirpath,i))

for i in s:

print(i)

105. 下面程序的功能是从键盘读入菱形图案的行数(上三角行数),构造该菱形图案,并将其存入文本文件“D:\user\a.txt”中。程序按照源程序文件方式运行后的输入输出情况如下图所示。请在横线处填写适当的语句或表达式将程序补充完整。

源程序:

f=open(r'D:\user\a.txt','w')

n=int(input('n='))

for i in range(n):

s=''

for j in range(n-i-1):

s+=' '

for k in range(2*i+1):

s+='*'

f.write(s+'\n')

for i in range(n-1):

s=''

for j in range(i+1):

s+=' '

for k in range(_________________  2*(n-i-1)-1 _________________________):

s+='*'

f.write(s+'\n')

f.close()

with open('D:/user/a.txt','r') as f:

s=f.read()

print(s)

106. 下面程序的功能是随机生成100个0~100的正整数,每个整数占一行,写入“D:\user\a.txt”文件中。程序按照源程序文件方式运行后的输入输出情况如下图所示。请在横线处填写适当的语句或表达式将程序补充完整。

源程序:

import random

with open('d:/user/a.txt', _______________  ‘w’ ___________________________) as f:

for i in range(100):

f.write(str(random.randrange(0,100))+'\n')

107. 下面程序的功能是随机生成100个0~100的正整数,每个整数占一行,写入“D:\user\a.txt”文件中。然后统计其中奇数的个数。程序按照源程序文件方式运行后的输入输出情况如下图所示。请在横线处填写适当的语句或表达式将程序补充完整。

源程序:

import random

with open('d:/user/a.txt','w') as f:

for i in range(100):

f.write(str(random.randrange(0,100))+'\n')

n=0

with open('d:/user/a.txt','r') as f:

for i in f:

t=int(i)

if(____________________  n % 2 ______________________):

n=n+1

print(n)

108. 下面程序的功能是文本文件的复制,即将已经存在的“D:\user\a.txt”文件内容复制到文件“D:\user\b.txt”中。请在横线处填写适当的语句或表达式将程序补充完整。

源程序:

f1=open('d:/user/a.txt','r')

f2=open('d:/user/b.txt','w')

s=f1.read()

f2.write(____________________  s ______________________)

f1.close()

f2.close()

109. 下面程序的功能是从键盘读入一个字符串,将其转换为整数。程序按照源程序文件方式运行后的输入输出情况如下图所示。请在横线处填写适当的语句或表达式将程序补充完整。

源程序:

import sys

x=input('x=')

try:

y=int(x)

except Exception as ______________ s  ____________________________:

print(s)

sys.exit(0)

else:

print(y)

110. 下面程序的功能是从键盘读入一个整数,对除法运算进行分类异常处理。程序按照源程序文件方式运行后的输入输出情况如下图所示。请在横线处填写适当的语句或表达式将程序补充完整。

源程序:

try:

x=eval(input('x='))

y=12/x

except (NameError,ZeroDivisionError) as s:

print(s)

except:

print(_________________ ‘其他异常!’  _________________________)

else:

print(y)

111. 下面程序的功能是从键盘读入一个整数,测试各种异常处理场景。程序按照源程序文件方式运行后的输入输出情况如下图所示。请在横线处填写适当的语句或表达式将程序补充完整。

源程序:

try:

x=eval(input('x='))

if(x==1):raise AttributeError('对象属性异常')

elif(x==2):raise IOError('输入输出异常')

elif(x==3):raise IndexError('索引异常')

elif(x==4):raise KeyError('关键字异常')

elif(x==5):raise NameError('名字异常')

elif(x==6):raise TypeError('类型异常')

elif(x==7):raise ValueError('值异常')

elif(x==8):raise ZeroDivisionError('零除异常')

elif(x==9):raise EOFError('文件结束异常')

else:print('没有触发异常!')

print('in try')

except (AttributeError,IOError,IndexError,KeyError,NameError,\

TypeError,ValueError,ZeroDivisionError,EOFError) as s:

print(s)

except:

print('其他异常!')

else:

print('正常!')

finally:

print(____________________ ‘Goodbye!’  ______________________)

112. 下面程序的功能是从键盘读入一个整数,测试自定义零除异常类的异常处理。程序按照源程序文件方式运行后的输入输出情况如下图所示。请在横线处填写适当的语句或表达式将程序补充完整。

源程序:

class MyException(________________ Exception  __________________________):

def __init__(self,data):

self.data=data

def main():

try:

x=eval(input('x='))

if x==0:

raise MyException('不能为0哦!')

y=100/x

print(y)

except MyException as s:

print(s)

finally:

print('Goodbye!')

main()

113. 下面程序的功能是从键盘读入一个整数,根据该整数,从字符串中提取指定字符。程序按照源程序文件方式运行后的输入输出情况如下图所示。请在横线处填写适当的语句或表达式将程序补充完整。

源程序:

s='uestc'

i=eval(input('i='))

assert i<____________ len(s)  ______________________,'索引下标超出字符串的长度范围啦!'

print('s[{}]={}'.format(i,s[i]))

114. 下面程序的功能是从键盘读入一个整数,根据该整数,从字符串中提取指定字符。程序按照源程序文件方式运行后的输入输出情况如下图所示。请在横线处填写适当的语句或表达式将程序补充完整。

源程序:

s='uestc'

try:

i=eval(input('i='))

assert i<len(s),'索引下标超出字符串的长度范围啦!'

print('s[{}]={}'.format(i,s[i]))

except ___________________ AssertionError  _______________________ as e:

print('这是断言错误!',e)

except:

print('其他错误!')

115. 下面程序的功能是从键盘读入一个整数,根据该整数,从字符串中提取指定字符。程序按照源程序文件方式运行后的输入输出情况如下图所示。请在横线处填写适当的语句或表达式将程序补充完整。

源程序:

s='uestc'

try:

i=eval(input('i='))

print('s[{}]={}'.format(i,s[i]))

except ______________________ IndexError  ____________________ as e:

print(e)

except:

print('其他错误!')

116. 下面程序的功能是从键盘读入一个字符串关键字,根据该字符串关键字,从字典中提取指定词条。程序按照源程序文件方式运行后的输入输出情况如下图所示。请在横线处填写适当的语句或表达式将程序补充完整。

源程序:

d=dict(a=2,b=3,c=4)

try:

key=input('key=')

print("d['{}']={}".format(key,d[key]))

except ________________  KeyError __________________________ as e:

print('字典中没有这个词条:',e)

except:

print('其他错误!')

117. 下面程序的功能是从键盘读入一个文件名,然后打开该文件,读取其内容,再关闭该文件。假设D:\user\b.txt文件的内容为“我是b.txt文件!”。程序按照源程序文件方式运行后的输入输出情况如下图所示。请在横线处填写适当的语句或表达式将程序补充完整。

源程序:

d=dict(a=2,b=3,c=4)

try:

fn=input('fileName=')

f=open('D:/user/'+fn,'r')

print(f.read())

f.close()

except ____________________ IOError  ______________________ as e:

print('没有找到这个文件:',e)

except:

print('其他错误!')

118. 下面程序的功能是从键盘读入一个变量名,输出其值。程序按照源程序文件方式运行后的输入输出情况如下图所示。请在横线处填写适当的语句或表达式将程序补充完整。

源程序:

x,y,z=2,3,4

try:

n=input('name=')

print(eval(n))

except _____________________ NameError  _____________________ as e:

print('没有找到这个变量:',e)

except:

print('其他错误!')

119. 下面程序的功能是从键盘读入一个数据作为函数调用的实在参数。程序按照源程序文件方式运行后的输入输出情况如下图所示。请在横线处填写适当的语句或表达式将程序补充完整。

源程序:

def f(s):

s[2]=3

return s[2]

try:

x=eval(input('x='))

y=f(x)

print(y)

except __________________  TypeError ________________________ as e:

print('类型不匹配:',e)

except:

print('其他错误!')

120. 下面程序的功能是统计员工数量和显示员工信息。程序按照源程序文件方式运行后的输入输出情况如下图所示。请在横线处填写适当的语句或表达式将程序补充完整。

源程序:

class Employee:

empCount=______________ 0  ____________________________

def __init__(self,name,salary):

self.name=name

self.salary=salary

Employee.empCount+=1

def displayCount(self):

print("empCount={}".format(Employee.empCount))

def displayEmployee(self):

print("name={},salary={}".format(self.name,self.salary))

def main():

emp1=Employee("zhangyi",8000)

emp2=Employee("zhanger",9000)

emp1.displayEmployee()

emp2.displayEmployee()

print("empCount={}".format(Employee.empCount))

emp1.displayCount()

main()

121. 下面程序的功能是创建父类Person,并派生出子类Man。程序按照源程序文件方式运行后的输入输出情况如下图所示。请在横线处填写适当的语句或表达式将程序补充完整。

源程序:

class Person:

def __init__(self,name,age):

self.name=name

self.age=age

def print_age(self):

print(self.name,".age=",self.age)

class Man(_____________________ Person  _____________________):

work="Teacher"

def print_age(self):

print("{}'s age is {}".format(self.name,self.age))

def print_work(self):

print("{}'s work is {}".format(self.name,self.work))

def main():

a=Man("Bob",30)

a.print_age()

a.print_work()

main()

122. 下面程序的功能是求圆、正方形和矩形的面积。程序按照源程序文件方式运行后的输入输出情况如下图所示。请在横线处填写适当的语句或表达式将程序补充完整。

源程序:

import math

class Circle:

def __init__(self,r):

self.r=r

def getArea(self):

return math.pi*self.r**2

class Square:

def __init__(self,size):

self.size=size

def getArea(self):

return self.size*self.size

class Rectangle:

def __init__(self,w,h):

self.w=w

self.h=h

def getArea(self):

return self.w*self.h

def main():

a=Circle(2)

b=Square(3)

c=Rectangle(4, ______________ 5  ____________________________)

print("a=",a.getArea())

print("b=",b.getArea())

print("c=",c.getArea())

main()

123. 下面程序的功能是实现“+”和“-”的运算符重载。程序按照源程序文件方式运行后的输入输出情况如下图所示。请在横线处填写适当的语句或表达式将程序补充完整。

提示:Python的运算符是通过调用对象的特殊方法来实现的。重写运算符所对应的特殊方法,就可以实现运算符的重载。详情参见本作业文档最后面的附录。

源程序:

class MyNumber:

def __init__(self,value):

self.data= _______________ value  ___________________________

def __repr__(self):  # 对应于内置函数str(),用于显示数据

return "MyNumber({})".format(self.data)

def __add__(self,other):

v=self.data+other.data

return MyNumber(v)

def __sub__(self,other):

v=self.data-other.data

return MyNumber(v)

def main():

n1=MyNumber(30)

n2=MyNumber(20)

n3=n1+n2    # 等效为 n3=n1.__add__(n2)

n4=n3-n2    # 等效为 n4=n3.__sub__(n2)

print("n3.data=",n3.data)

print(n1,"+",n2,"=",n3)

# 等效为print(n1.__repr__(),"+",n2.__repr__(),"=",n3.__repr__())

# 等效为print(str(n1),"+",str(n2),"=",str(n3))

print(n3,"-",n2,"=",n4)

# 等效为print(n3.__repr__(),"-",n2.__repr__(),"=",n4.__repr__())

# 等效为print(str(n3),"-",str(n2),"=",str(n4))

main()

124. 编写一段程序实现下面的功能:定义一个Rectangle类,属性为左上角和右下角的平面坐标,编写方法,实现根据坐标计算矩形面积的功能。

class Rectangle:

def __init__(self, a, b, c, d):

self.a = a

self.b = b

self.c = c

self.d = d

def S_Rec(self):

print('The area of the rectangle is:', end='')

print((self.c-self.a) * (self.b-self.d))

r = Rectangle(0,1,2,0)

r.S_Rec()

125. 编写一段程序实现下面的功能:定义一个三维空间的点类Point,其属性是三维空间的坐标,再由它派生出一个直线类Line,能求直线的长度。

提示:从基类中继承的点的信息可以用于表示直线的中点。下面的二维点类仅供参考。

import math

class Point:

def __init__(self,x=0,y=0):

self.x=x

self.y=y

def __repr__(self):

return "({},{})".format(self.x,self.y)

def getX(self):

return self.x

def getY(self):

return self.y

def setX(self,x):

self.x=x

def setY(self,y):

self.y=y

class Line(Point):

def __init__(self,ps=Point(),pe=Point()):

self.ps=ps

self.pe=pe

mx=(self.ps.getX()+self.pe.getX())/2

my=(self.ps.getY()+self.pe.getY())/2

self.setX(mx)

self.setY(my)

def printLine(self):

print("1st:",self.getStartpoint())

print("2nd:",self.getEndpoint())

print("The Length of Line:",self.getLength())

print("The Midpoint of Line:",self.getMidpoint())

def getLength(self):

dx=self.pe.getX()-self.ps.getX()

dy=self.pe.getY()-self.ps.getY()

return math.sqrt(dx*dx+dy*dy)

def getStartpoint(self):

return self.ps

def getEndpoint(self):

return self.pe

def getMidpoint(self):

return Point(self.x,self.y)

def main():

ps=Point(-2,5)

pe=Point(7,9)

x=Line(ps,pe)

x.printLine()  # 输出直线x的信息

main()

class Point:

def __init__(self, x=0, y=0, z=0):

self.x = x

self.y = y

self.z = z

def __repr__(self):

return '({},{},{})'.format(self.x, self.y, self.z)

def getX(self):

return self.x

def getY(self):

return self.y

def getZ(self):

return self.z

class Line(Point):

def __init__(self, a=Point(), b=Point()):

self.a = a

self.b = b

def printLine(self):

print('First Point:', self.getPointa())

print('Second Point:', self.getPointb())

print('The length of the line is ', self.LineLength())

def LineLength(self):

x = self.a.getX() - self.b.getX()

y = self.a.getY() - self.b.getY()

z = self.a.getZ() - self.b.getZ()

return pow((x**2+y**2+z**2), 1/2)

def getPointa(self):

return self.a

def getPointb(self):

return self.b

a = Point(0, 0, 0)

b = Point(0, 1, 0)

l = Line(a, b)

l.printLine()

-----------------------------------------------------------------------------------------------------------

附录:运算符重载

(1)什么是运算符重载

让用户自定义的类生成的对象(实例)能够使用运算符进行操作

只能对已经存在的运算符进行重载,不能自己臆造发明新的运算符

运算符重载遵循三不变:优先级不变,结合性不变,运算量的个数不变

运算符重载的目的是提高可读性,让用户自定义数据类型(即类class的对象)能够使用常规运算符进行运算处理。

(2)作用

让用户自定义的实例像内建对象(即基本数据类型的变量或常量)一样进行运算符操作

让程序简洁易读

对用户自定义对象,将运算符赋予新的运算规则

提醒:运算符重载时,最好遵循运算符原有功能,否则会降低可读性。如果运算符重载不能提高程序的可读性,还不如不进行运算符重载,直接使用普通方法(函数)。

注意:可以用普通方法来实现运算符重载方法的功能。唯一的区别是:普通方法定义后需要人工调用(显示调用),而运算符重载方法定义后既可以自动调用(即隐式调用),也可以显示调用(即人工调用)。对于运算符重载方法,语法上可以显示调用,但为了提高可读性,还是尽量使用隐式调用,即使用与基本数据类型相同的运算表达式。

(3)算术运算符的重载

方法名             运算符和表达式      说明

__add__(self,rhs)        self + rhs          加法

__sub__(self,rhs)         self - rhs          减法

__mul__(self,rhs)         self * rhs         乘法

__truediv__(self,rhs)      self / rhs          除法

__floordiv__(self,rhs)      self //rhs         地板除

__mod__(self,rhs)         self % rhs       取模(求余)

__pow__(self,rhs)         self **rhs        幂运算

注:rhs (right hand side) 右手边,lhs (left hand side) 左手边

说明:

运算符重载的方法的参数已经有了固定的含义,不建议改变原有的运算符的含义及参数的意义

二元运算符的重载方法格式:

def __xx__(self,other):

语句块

例:实现两个自定义列表的相加和列表自连接(乘整数)

class Mylist:

def __init__(self,iterable=()):

self.data=list(iterable)

def __repr__(self):

return "Mylist({})".format(self.data)

def __add__(self,lst):

return Mylist(self.data+lst.data)

def __mul__(self,rhs):

# rhs为int类型,不能用rhs.data

return Mylist(self.data*rhs)

def main():

L1=Mylist([1,2,3])

L2=Mylist([4,5,6])

L3=L1+L2  # 这是隐式调用运算符重载方法

# 它等效为如下显式调用形式

# L3=L1.__add__(L2)

L4=L2+L1  # 等效为如下显式调用形式 L4=L2.__add__(L1)

L5=L1*3    # 等效为如下显式调用形式 L5=L1.__mul__(3)

print(L3)  # Mylist([1,2,3,4,5,6])  等效为如下显式调用形式 print(L3.__repr__())

print(L4)  # Mylist([4,5,6,1,2,3])

print(L5)  # Mylist([1,2,3,1,2,3,1,2,3])

main()

(4)反向运算符的重载

当运算符的左侧为内建类型时,右侧为自定义类型进行算术运算符运算时会出现TypeError错误,因为无法修改内建类型的代码实现运算符重载,此时需要使用反向运算符的重载

反向算术运算符的重载:

方法名            运算符和表达式       说明

__radd__(self,lhs)       lhs + self          加法

__rsub__(self,lhs)       lhs - self          减法

__rmul__(self,lhs)       lhs * self          乘法

__rtruediv__(self,lhs)    lhs / self           除法

__rfloordiv__(self,lhs)    lhs // self         地板除

__rmod__(self,lhs)       lhs % self         取模(求余)

__rpow__(self,lhs)       lhs ** self         幂运算

例:

class Mylist:

def __init__(self,iterable=()):

self.data=list(iterable)

def __repr__(self):

return "Mylist({})".format(self.data)

def __add__(self,lst):

return Mylist(self.data+lst.data)

def __mul__(self, rhs):

# rhs为int类型,不能用rhs.data

return Mylist(self.data*rhs)

def __rmul__(self,lhs):

return Mylist(self.data*lhs)

def main():

L1=Mylist([1,2,3])

L2=Mylist([4,5,6])

L3=3*L1     # 等效为 L3=L1.__rmul__(3)

print(L3)   # 等效为 print(L3.__repr__())

L1+=L2      # 等效为 L1=L1.__add__(L2)

print(L1)

L2*=3       # 等效为 L2=L2.__mul__(3)

print(L2)

main()

(5)复合赋值算术运算符的重载

以复合赋值算术运算符 x += y为例,此运算符会优先调用x.__iadd__(y)方法,如果没有__iadd__方法时,则会将复合赋值算术运算拆解为:x = x + y

然后调用x = x.__add__(y)方法,如果再不存在__add__方法则会触发TypeError类型的错误异常

复合赋值算术运算符的重载:

方法名             运算符和表达式      说明

__iadd__(self,rhs)       self += rhs        加法

__isub__(self,rhs)       self -= rhs         减法

__imul__(self,rhs)       self *= rhs         乘法

__itruediv__(self,rhs)     self /= rhs        除法

__ifloordiv__(self,rhs)    self //=rhs        地板除

__imod__(self,rhs)       self %= rhs     取模(求余)

__ipow__(self,rhs)       self **=rhs       幂运算

(6)比较算术运算符的重载

比较算术运算符的重载:

方法名           算符和表达式      说明

__lt__(self,rhs)       self < rhs        小于

__le__(self,rhs)       self <= rhs       小于等于

__gt__(self,rhs)       self > rhs        大于

__ge__(self,rhs)       self >= rhs       大于等于

__eq__(self,rhs)       self == rhs       等于

__ne__(self,rhs)       self != rhs       不等于

(7)位运算符重载

方法名            运算符和表达式        说明

__and__(self,rhs)      self & rhs            位与

__or__(self,rhs)        self | rhs             位或

__xor__(self,rhs)       self ^ rhs             位异或

__lshift__(self,rhs)      self <<rhs            左移

__rshift__(self,rhs)      self >>rhs            右移

(8)反向位运算符重载

方法名            运算符和表达式        说明

__and__(self,lhs)       lhs & rhs             位与

__or__(self,lhs)         lhs | rhs             位或

__xor__(self,lhs)        lhs ^ rhs             位异或

__lshift__(self,lhs)      lhs <<rhs             左移

__rshift__(self,lhs)      lhs >>rhs             右移

(9)复合赋值位相关运算符重载

方法名             运算符和表达式       说明

__iand__(self,rhs)       self & rhs           位与

__ior__(self,rhs)        self | rhs            位或

__ixor__(self,rhs)       self ^ rhs            位异或

__ilshift__(self,rhs)      self <<rhs           左移

__irshift__(self,rhs)      self >>rhs           右移

(10)一元运算符的重载

方法名         运算符和表达式     说明

__neg__(self)        - self           负号

__pos__(self)        + self           正号

__invert__(self)      ~ self           取反

语法:

class 类名:

def __xxx__(self):

pass

例:

class Mylist:

def __init__(self,iterable=()):

self.data=list(iterable)

def __repr__(self):

return "Mylist({})".format(self.data)

def __neg__(self):

g=(-x for x in self.data)

return Mylist(g)

def __pos__(self):

g=(abs(x) for x in self.data)

return Mylist(g)

def main():

s1=Mylist([1,-2,3,-4,5,-6])

s2=-s1   #s2=s1.__neg__()

print(s2)

s3=+s1   #s3=s1.__pos__()

print(s3)

main()

(11)in/not in 运算符重载

格式:

def __contains__(self,e):

语句

注: in / not in 返回布尔值 True / False

当重载了__contains__后,in和not in运算符都可用

not in 运算符的返回值与in相反

例:

class Mylist:

def __init__(self,iterable=()):

self.data=list(iterable)

def __repr__(self):

return "Mylist({})".format(self.data)

def __contains__(self, e):

return True if e in self.data else False

def main():

s=Mylist([1,2,3,4,-5,6])

if 2 in s:  # 等同于if s.__contains__(2)

print('2在s内')

else:

print('2不在s内')

if -4 not in s:  # 等同于if not s.__contains__(-4)

print('-4不在s内')

else:

print('-4在s内')

main()

(12)索引和切片运算符重载方法

方法名                  运算符和表达式      说明

__getitem__(self,i)          x=self(i)           索引/切片取值

__setitem__(self,i,v)         self[i]=v           索引/切片赋值

__delitem__(self,i)          del self[i]          del语句删除索引/切片

作用:

让自定义的类型的对象能够支持索引和切片操作

例:

class Mylist:

def __init__(self,iterable=()):

self.__data=list(iterable)

def __repr__(self):

return "Mylist({})".format(self.__data)

def __getitem__(self,i):

'索引取值,i绑定[]内的元素'

print('i的值',i)

return self.__data[i]  # 返回data绑定列表中的第i个元素

def __setitem__(self,i,v):

'''此方法可以让自定义的列表支持索引赋值操作'''

print('__setitem__被调用,i=',i,'v=',v)

self.__data[i]=v

def __delitem__(self,i):

del self.__data[i]  # self.__data.pop(i)

return self

if type(i) is int:

print('用户正在用索引取值')

elif type(i) is slice:

print('用户正在用切片取值')

print('切片的起点是:',i.start)

print('切片的终点是:',i.stop)

print('切片的步长是:',i.step)

elif type(i) is str:

print('用户正在用字符串进行索引操作')

# raise KeyError

return self.__data[i]  # 返回data绑定的第i个元素

def main():

s=Mylist([1,2,3,4,-5,6])

print(s[3])  # 4   等效为 print(s.__getitem__(3))

s[3]=400     #  等效为 s.__setitem__(3,400)

print(s)  # Mylist([1,2,3,400,-5,6])   等效为 print(s.__repr__())

del s[3]  #  等效为 s.__delitem__(3)

print(s)  # Mylist([1,2,3,-5,6])   等效为 print(s.__repr__())

print(s[::2])  # [1,3,6]

main()

:

class 类名:

def __xxx__(self):

pass

例:

class Mylist:

def __init__(self,iterable=()):

self.data=list(iterable)

def __repr__(self):

return "Mylist({})".format(self.data)

def __neg__(self):

g=(-x for x in self.data)

return Mylist(g)

def __pos__(self):

g=(abs(x) for x in self.data)

return Mylist(g)

def main():

s1=Mylist([1,-2,3,-4,5,-6])

s2=-s1   #s2=s1.__neg__()

print(s2)

s3=+s1   #s3=s1.__pos__()

print(s3)

main()

(11)in/not in 运算符重载

格式:

def __contains__(self,e):

语句

注: in / not in 返回布尔值 True / False

当重载了__contains__后,in和not in运算符都可用

not in 运算符的返回值与in相反

例:

class Mylist:

def __init__(self,iterable=()):

self.data=list(iterable)

def __repr__(self):

return "Mylist({})".format(self.data)

def __contains__(self, e):

return True if e in self.data else False

def main():

s=Mylist([1,2,3,4,-5,6])

if 2 in s:  # 等同于if s.__contains__(2)

print('2在s内')

else:

print('2不在s内')

if -4 not in s:  # 等同于if not s.__contains__(-4)

print('-4不在s内')

else:

print('-4在s内')

main()

(12)索引和切片运算符重载方法

方法名                  运算符和表达式      说明

__getitem__(self,i)          x=self(i)           索引/切片取值

__setitem__(self,i,v)         self[i]=v           索引/切片赋值

__delitem__(self,i)          del self[i]          del语句删除索引/切片

作用:

让自定义的类型的对象能够支持索引和切片操作

例:

class Mylist:

def __init__(self,iterable=()):

self.__data=list(iterable)

def __repr__(self):

return "Mylist({})".format(self.__data)

def __getitem__(self,i):

'索引取值,i绑定[]内的元素'

print('i的值',i)

return self.__data[i]  # 返回data绑定列表中的第i个元素

def __setitem__(self,i,v):

'''此方法可以让自定义的列表支持索引赋值操作'''

print('__setitem__被调用,i=',i,'v=',v)

self.__data[i]=v

def __delitem__(self,i):

del self.__data[i]  # self.__data.pop(i)

return self

if type(i) is int:

print('用户正在用索引取值')

elif type(i) is slice:

print('用户正在用切片取值')

print('切片的起点是:',i.start)

print('切片的终点是:',i.stop)

print('切片的步长是:',i.step)

elif type(i) is str:

print('用户正在用字符串进行索引操作')

# raise KeyError

return self.__data[i]  # 返回data绑定的第i个元素

def main():

s=Mylist([1,2,3,4,-5,6])

print(s[3])  # 4   等效为 print(s.__getitem__(3))

s[3]=400     #  等效为 s.__setitem__(3,400)

print(s)  # Mylist([1,2,3,400,-5,6])   等效为 print(s.__repr__())

del s[3]  #  等效为 s.__delitem__(3)

print(s)  # Mylist([1,2,3,-5,6])   等效为 print(s.__repr__())

print(s[::2])  # [1,3,6]

main()

四、测试代码

# 1 BDDCA
# def f():
#     pass
# print(f())# 5
# def f(x,y):
#     return x**2
#     return y**2
#     return x+y
# print(f(2,3))# 6 BBCCC
# def f():
#     print('AA',end='')
#     return
#     print('BB',end='')
#     return
# print(f())
# AANone# 7
# def f():
#     return 2,3,4
# def main():
#     print(f())
#     return
# main()
# (2, 3, 4)# 8
# def f():
#     print('AA',end='')
# def main():
#     print(f())
# main()
# AANone# print(print('AA'))
# AA
# None# 10
# f=lambda x:(2,x,x**2)
# def main():
#     print(f(3))
#     return
# main()
# (2, 3, 9)# 11 CCBBC
# def g():
#     return lambda x,y:x+y
# def main():
#     f=g()
#     print(f(2,3))
#     return
# main()
# 5# 13
# f=(lambda:2,lambda x:x*3,lambda y:y**2)
# def main():
#     print(f[0]()+f[1](2)+f[2](3))
#     return
# main()
# 17# 14
# def f(x):
#     return x(2)
# def main():
#     y=f(lambda x:x**2)
#     print(y)
#     return
# main()
# 4# 15
# def f(x):
#     x=3
# def main():
#     x=2
#     f(x)
#     print(x)
#     return
# main()
#  2# 16 AABAA
# def f(x):
#     x[1]=5
# def main():
#     x=[2,3,4]
#     f(x)
#     print(x)
#     return
# main()
# [2, 5, 4]#  17
# def f(x):
#     x['a']=4
# def main():
#     x=dict(a=2,b=3)
#     f(x)
#     print(x)
#     return
# main()
# {'a': 4, 'b': 3}# 18
# def f(x,y):
#     x,y=y,x
# def main():
#     x,y=2,3
#     f(x,y)
#     print('{},{}'.format(x,y))
#     return
# main()
# 2,3# 19
# def f(s):
#     s[0],s[1]=s[1],s[0]
# def main():
#     s=[2,3]
#     f(s)
#     print(s)
#     return
# main()
# [3, 2]# 20
# def f(x,y=4,z=5):
#     print(x,y,z,sep=',')
# def main():
#     f(2,3)
#     return
# main()
# 2,3,5
#
# 21
# def f(x=4,y,z=5):
#     print(x,y,z,sep=',')
# def main():
#     f(2,3)
#     return
# main()
# 出错
#
# 22
# def f(x=4,y,z=5):
#     print(x,y,z,sep=',')
# def main():
#     f(y=2,x=3)
#     return
# main()
# 出错
#
# 23
# def f(x,y=4,z=5):
#     print(x,y,z,sep=',')
# def main():
#     f(y=2,x=3)
#     return
# main()
# 3,2,5
#
# 24
# def f(x,y,*z):
#     print(x,y,z,sep=',')
# def main():
#     f(2,3,4,5,6)
#     return
# main()
# 2,3,(4, 5, 6)
#
# 26 AAABC
# def f(x=6,y=7,*z,**t):
#     print(x,y,z,t,sep=',')
# def main():
#     f(2,a=4,b=5)
#     return
# main()
# 2,7,(),{'a': 4, 'b': 5}
#
# 27
# def f(x=6,y=7,*z):
#     print(x,y,z,sep=',')
# def main():
#     x,*y,z=2,3,4,5
#     f(x,y,z)
#     return
# main()
# 2,[3, 4],(5,)
#
# 28
# def f(x=6,y=7,*z):
#     print(x,y,z,sep=',')
# def main():
#     x,y,*z=2,3,4,5
#     f(x,y,z)
#     return
# main()
# 2,3,([4, 5],)
#
# 29
# def f(x=6,y=7,*z):
#     print(x,y,z,sep=',')
# def main():
#     x,*y,z=2,3,4,5
#     f(x,*y,z)
#     print(x, y, z)
#     return
# main()
# 2,3,(4, 5)
# 2 [3, 4] 5
#
# 30
# def f(x,*y):
#     m=x;
#     for i in y:
#         if(i>m):
#             m=i
#     return m
# def main():
#     z=f(3,4,2,5,6,8,6,7,1)
#     print(z)
#     return
# main()
# 8# 31
# def f(x):
#     a=2;
#     x=3
#     print(a,x,sep='',end='')
# def g(x):
#     a=4;
#     x=x+5
#     print(a,x,sep='',end='')
# def main():
#     a,x=2,3
#     f(a)
#     g(x)
# main()
# 2348# 32
# def f(x):
#     a=2;
#     x=3
#     print(a,x,sep='',end='')
# def g(x):
#     global a
#     a=a+4;
#     x=x+5
#     print(a,x,sep='',end='')
# a,x=2,3
# f(a)
# g(x)
# 2368# 33
# x=2
# def f(x=4):
#     print(x,end='')
# f(x)
# x=3
# f(x)
# 23# 34
# x=2
# def f(x=4):
#     print(x,end='')
# def main():
#     global x
#     f(x)
#     x=3
#     f(x)
# main()
# 23# 35
# 递归
# s='uestc'
# def f(i):
#     if(i<-len(s)):
#        return
#     else:
#         f(i-1)
#     print(s[i],end='')
# def main():
#     f(-1)
# main()
# uestc# 36
# def f(i):
#     if(i>=len(s)):
#        return
#     else:
#         f(i+1)
#     print(s[i],end='')
# def main():
#     global s
#     s='uestc'
#     f(0)
# main()
# ctseu# 37
# def f(y=3):
#     x=y
#     print(x,end='')
#     def g():
#         nonlocal x
#         print(x,end='')
#         x=4
#     g()
#     print(x,end='')
# def main():
#     global x
#     x=2
#     f(x)
#     print(x,end='')
# main()
# 2242# 38
# def f(y=3):
#     x=y
#     print(x,end='')
#     def g():
#         global x
#         print(x,end='')
#         x=4
#     g()
#     print(x,end='')
# def main():
#     global x
#     x=2
#     f(x)
#     print(x,end='')
# main()
# 2224# 39
# def f(y=3):
#     x=y
#     print(x,end='')
#     def g():
#         global x
#         print(x,end='')
#         x=4
#         def h():
#             print(x,end='')
#             x=5
#     g()
#     print(x,end='')
# def main():
#     global x
#     x=2
#     f(x)
#     print(x,end='')
# main()
# 2224# 40
# def f(y=3):
#     x=y
#     print(x,end='')
#     def g():
#         global x
#         print(x,end='')
#         x=4
#         def h():
#             global x
#             print(x,end='')
#             x=5
#         h()
#     g()
#     print(x,end='')
# def main():
#     global x
#     x=2
#     f(x)
#     print(x,end='')
# main()
# 22425# 42
# def f():
#     global x
#     x=4
#     y=5
#     def g():
#         nonlocal y
#         global x
#         x=6
#         y=7
#         print('{}{}'.format(x,y),end='')
#     g()
#     print('{}{}'.format(x,y),end='')
# x=2
# y=3
# f()
# print('{}{}'.format(x,y),end='')
# 676763# 61
# import string, os
# # print(os.getcwd())
# os.chdir(r'E:\pythonProject  demo\练习\作业')
# f=open(r't.txt','w+')
# f.write(string.digits+string.ascii_uppercase)
# f.seek(0)
# s=f.read(10)
# print(s)
# f.close()
# 0123456789# 62
# import string, os
# os.chdir(r'E:\pythonProject  demo\练习\作业')
# f=open(r'a.txt','w+')
# f.write(string.digits+'\n'+string.ascii_uppercase+'\n'+string.ascii_lowercase)
# # f.write('\n') 一个换行符两个位置
# print(string.digits+'\n'+string.ascii_uppercase+'\n'+string.ascii_lowercase)
# print(f.tell(),end=',')
# f.seek(0)
# # print(f.read(1))
# s=f.read(1)
# # print(s)
# # print(type(s))
# print(f.tell(),end=',')
# t=f.readline()
# print(f.tell(),end=',')
# print(len(s+t))
# # print(len('\n')) 1
# f.close()# 65
# import string
# f=open(r't.dat','wb+')
# s='电子科技大学'
# sb=s.encode('gbk')
# f.write(sb)
# f.seek(-12,1)
# print(f.tell(),end=',')
# t=f.read(4)
# x=t.decode('gbk')
# print(x,end=',')
# print(f.tell())
# f.close()
# 0,电子,4# 71
import os
# path=os.getcwd()
# s=os.listdir(path)
# print(s)# path=os.getcwd()
# s=os.walk(path)
# print(s)
#
# path=os.getcwd()
# s=os.walk(path)
# for dirpath,dirnames,filenames in s:
#     print(filenames)
#
# path=os.getcwd()
# s=os.walk(path)
# for dirpath,dirnames,filenames in s:
#     print(dirpath)
#
# path=os.getcwd()
# s=os.walk(path)
# for dirpath,dirnames,filenames in s:
#     print(dirnames)# 73
# import os
# print(os.getcwd())
# s = os.path.getctime(r'E:\pythonProject  demo\练习\作业\python平时作业4.py')
# print(s)
# s = os.path.getsize(r'E:\pythonProject  demo\练习\作业\python平时作业4.py')
# print(s)
# s = os.path.exists(r'E:\pythonProject  demo\练习\作业\python平时作业4.py')
# print(s)
# s = os.stat(r'E:\pythonProject  demo\练习\作业\python平时作业4.py')
# print(s)# 85
# try:
#     x=[3,4,5]
#     y=2+x
#     print(y)
# except TypeError:
#     print('类型不匹配!')
# except SyntaxError:
#     print('语法错误!')
# except:
#     print('其他错误!')
# 类型不匹配!# 86
# try:
#     x=x+2
# except TypeError:
#     print('AA')
# except SyntaxError:
#     print('BB')
# except NameError:
#     print('CC')
# except:
#     print('DD')
# CC# 87
# try:
#     s=(2,3,4)
#     s[1]=5
# except TypeError:
#     print('AA')
# except SyntaxError:
#     print('BB')
# except NameError:
#     print('CC')
# except:
#     print('DD')# 88
# try:
#     x=1+2,2+3,3+4
#     print(x)
# except:
#     print('AA',end='')
# else:
#     print('BB',end='')
# finally:
#     print('CC',end='')
# print('DD',end='')
# BBCCDD# def f(**z):
#     print(z)
#
# f(a=1, b=3)
# {'a': 1, 'b': 3}# import sys
# sys.path.append(r':E:/pythonProject  demo/练习/作业/cc/')
# sys.path.append(r':E:\pythonProject  demo\练习作业\cc')
# sys.path.append(r':E:\\pythonProject  demo\\练习作业\\cc\\')
# sys.path.append(r":E:\\pythonProject  demo\\练习作业\\cc\\")
# sys.path.append(r':E:\\pythonProject  demo\\练习作业\\cc\\')
# sys.path.append(r':E:\\pythonProject  demo\\练习作业\\cc\\')
# sys.path += ['E:\\pythonProject  demo\\练习作业\\cc\\']
# sys.path += ["E:\\pythonProject  demo\\练习作业\\cc\\"]
#
# # 错误实例
# # sys.path.append(r':E:\pythonProject  demo\练习作业\cc\')
# # sys.path.append(r":E:\pythonProject  demo\练习作业\cc\")
# # sys.path.append(":E:\pythonProject  demo\练习作业\cc\")# 59
# f=open(r'E:/pythonProject  demo/练习/作业/f.txt')
# s=f.read()
# print(s)
# f.close()# f=open(r'E:/pythonProject  demo/练习/作业/f.txt','r')
# while True:
#     s=f.read(2)
#     if not s:
#         break
#     print(s,end='')
# f.close()# f=open(r'E:/pythonProject  demo/练习/作业/f.txt','r')
# while True:
#     s=f.readline()
#     if not s:
#         break
#     print(s)
# 这里的print自带\n,redline也会读入\n
# f.close()# f=open(r'f.txt')
# for i in f:
#     print(i,end='')
# f.close()#60
# f=open(r'f.txt')
# s=[]
# for i in f:
#     s+=[i]
# print(s)
# f.close()
#
# f=open(r'f.txt','r')
# s=[]
# while True:
#     t=f.readline()
#     if not t:
#         break
#     s+=[t]
# print(s)
# f.close()
#
# f=open(r'f.txt','r')
# s=[]
# t=''
# while True:
#     i=f.read(1)
#     if not i:
#         break
#     if (i!='\n'):
#         t+=i
#     else:
#         t+='\n'
#         s+=[t]
#         t=''
# print(s)
# f.close()
#
# f=open(r'f.txt','r')
# s=f.readlines()
# print(s)
# f.close()
# ['AA\n', 'BBB\n', 'CCCC']
# ['AA\n', 'BBB\n', 'CCCC']
# ['AA\n', 'BBB\n']
# ['AA\n', 'BBB\n', 'CCCC']# 74
# import os,shutil
# os.rename('E:/pythonProject  demo/练习/作业/ff.txt', 'E:/pythonProject  demo/练习/作业/f.txt')
# 下面这个是错误的,斜线不能这么画
# os.rename('E:\pythonProject  demo\练习\作业\f.txt', 'E:\pythonProject  demo\练习\作业\ff.txt')# shutil.copyfile('E:/pythonProject  demo/练习/作业/f.txt','E:/pythonProject  demo/练习/作业/ff.txt')
# os.remove('E:/pythonProject  demo/练习/作业/f.txt')# shutil.move('E:/pythonProject  demo/练习/作业/ff.txt', 'E:/pythonProject  demo/练习/作业/f.txt')# 填空题# 101
# 正整数转化为二进制
# def f(n):
#     if(n==0):
#         return
#     else:
#         f(n//2)
#     print(n%2,end='')
# def main():
#     x=eval(input('x='))
#     print('0b',end='')
#     f(x)
# main()# 102
# def f(n):
#     global s
#     if(n==0):
#         return
#     else:
#         f(n//16)
#     print(s[n%16],end='')
# def main():
#     global s
#     s='0123456789ABCDEF'
#     x=eval(input('x='))
#     print('0x',end='')
#     f(x)
# main()# 103
# def f():
#     global n
#     if(n>3):
#         print('你不是合法用户!')
#         return
#     else:
#         k=input('请输入密码:')
#         if(k=='123'):
#             print('欢迎光临!')
#             x=input('继续?(y/n)')
#             if (x=='y' or x=='Y'):
#                 n=1
#                 f()
#             else:
#                 return
#         else:
#             print('密码错误!')
#             n=n+1
#             f()
# def main():
#     global n
#     n=1
#     f()
# main()# 104
# import os
# s=[]
# path=os.getcwd()
# f=os.walk(path)
# for dirpath,dirnames,filenames in f:
#     for i in dirnames:
#         s.append(os.path.join(dirpath,i))
#     for i in filenames:
#         s.append(os.path.join(dirpath,i))
# for i in s:
#     print(i)# 105
# f=open(r'g.txt','w')
# n=int(input('n='))
# for i in range(n):
#     s=''
#     for j in range(n-i-1):
#         s+=' '
#     for k in range(2*i+1):
#         s+='*'
#     f.write(s+'\n')
# for i in range(n-1):
#     s=''
#     for j in range(i+1):
#         s+=' '
#     for k in range(2*(n-i-1)-1):
#         s+='*'
#     f.write(s+'\n')
# f.close()
# with open('g.txt','r') as f:
#     s=f.read()
# print(s)# 106
# import random
# with open('d.txt', 'w') as d:
#     for i in range(100):
#         d.write(str(random.randrange(0, 100))+'\n')# 107
# import random
# with open('e.txt', 'w') as e:
#     for i in range(100):
#         e.write(str(random.randrange(0, 100))+'\n')
# n = 0
# with open('e.txt') as e:
#     for i in e:
#         if int(i) % 2:
#             n += 1
# print(n)# 108
# f1=open('e.txt','r')
# f2=open('g.txt','w')
# s=f1.read()
# f2.write(s)
# f1.close()
# f2.close()# 109
# 异常处理机制
# import sys
# x=input('x=')
# try:
#     y=int(x)
# except Exception as s:
#     print(s)
#     sys.exit(0)
# else:
#     print(y)# 110
# try:
#     x=eval(input('x='))
#     y=12/x
# except (NameError,ZeroDivisionError) as s:
#     print(s)
# except:
#     print('其他异常!')
# else:
#     print(y)# 111
# 注意点:try里面raise异常类型,except可以有多个,里面输出异常说明
# try:
#     x=eval(input('x='))
#     if(x==1):raise AttributeError('对象属性异常')
#     elif(x==2):raise IOError('输入输出异常')
#     elif(x==3):raise IndexError('索引异常')
#     elif(x==4):raise KeyError('关键字异常')
#     elif(x==5):raise NameError('名字异常')
#     elif(x==6):raise TypeError('类型异常')
#     elif(x==7):raise ValueError('值异常')
#     elif(x==8):raise ZeroDivisionError('零除异常')
#     elif(x==9):raise EOFError('文件结束异常')
#     else:print('没有触发异常!')
#     print('in try')
# except (AttributeError,IOError,IndexError,KeyError,NameError,
#         TypeError,ValueError,ZeroDivisionError,EOFError) as s:
#     print(s)
# except:
#     print('其他异常!')
# else:
#     print('正常!')
# finally:
#     print('Goodbye!')# 112
# class MyException(Exception):
#     def __init__(self,data):
#         self.data=data
# def main():
#     try:
#         x=eval(input('x='))
#         if x==0:
#             raise MyException('不能为0哦!')
#         y=100/x
#         print(y)
#     except MyException as s:
#         print(s)
#     finally:
#         print('Goodbye!')
# main()# 113
# s='uestc'
# i=eval(input('i='))
# assert i<len(s),'索引下标超出字符串的长度范围啦!'
# print('s[{}]={}'.format(i,s[i]))# 输入输出
# i=6
# Traceback (most recent call last):
#   File "E:/pythonProject  demo/练习/作业/python平时作业4.py", line 844, in <module>
#     assert i<len(s),'索引下标超出字符串的长度范围啦!'
# AssertionError: 索引下标超出字符串的长度范围啦!# 114
# s='uestc'
# try:
#     i=eval(input('i='))
#     assert i<len(s),'索引下标超出字符串的长度范围啦!'
#     print('s[{}]={}'.format(i,s[i]))
# except AssertionError as e:
#     print('这是断言错误!',e)
# except:
#     print('其他错误!')# 输出
# i=10
# 这是断言错误! 索引下标超出字符串的长度范围啦!# 115
# s='uestc'
# try:
#     i=eval(input('i='))
#     print('s[{}]={}'.format(i,s[i]))
# except Exception as e:
# # except IndexError as e:
#     print(e)
# except:
#     print('其他错误!')# 116
# d=dict(a=2,b=3,c=4)
# try:
#     key=input('key=')
#     print("d['{}']={}".format(key,d[key]))
# except KeyError as e:
#     print('字典中没有这个词条:',e)
# except:
#     print('其他错误!')# 117
# d=dict(a=2,b=3,c=4)
# try:
#     fn=input('fileName=')
#     f=open(fn,'r')
#     print(f.read())
#     f.close()
# except IOError as e:
#     print('没有找到这个文件:',e)
# except:
#     print('其他错误!')# 118
# x,y,z=2,3,4
# try:
#     n=input('name=')
#     print(eval(n))
# except NameError as e:
#     print('没有找到这个变量:',e)
# except:
#     print('其他错误!')# 119
# def f(s):
#     s[2]=3
#     return s[2]
# try:
#     x=input('x=')
#     # print(x, type(x))
#     x = eval(x)
#     # print(x)
#     y=f(x)
#     print(y)
# except TypeError as e:
#     print('类型不匹配:',e)
# except:
#     print('其他错误!')# 120
# class Employee:
#     empCount=0
#     def __init__(self,name,salary):
#         self.name=name
#         self.salary=salary
#         Employee.empCount+=1
#     def displayCount(self):
#         print("empCount={}".format(Employee.empCount))
#     def displayEmployee(self):
#         print("name={},salary={}".format(self.name,self.salary))
# def main():
#     emp1=Employee("zhangyi",8000)
#     emp2=Employee("zhanger",9000)
#     emp1.displayEmployee()
#     emp2.displayEmployee()
#     print("empCount={}".format(Employee.empCount))
#     emp1.displayCount()
# main()# 121
# class Person:
#     def __init__(self,name,age):
#         self.name=name
#         self.age=age
#     def print_age(self):
#         print(self.name,".age=",self.age)
# class Man(Person):
#     work="Teacher"
#     def print_age(self):
#         print("{}'s age is {}".format(self.name,self.age))
#     def print_work(self):
#         print("{}'s work is {}".format(self.name,self.work))
# def main():
#     a=Man("Bob", 30)
#     a.print_age()
#     a.print_work()
# main()# 122
# import math
# class Circle:
#     def __init__(self,r):
#         self.r=r
#     def getArea(self):
#         return math.pi*self.r**2
# class Square:
#     # 正方形
#     def __init__(self,size):
#         self.size=size
#     def getArea(self):
#         return self.size*self.size
# class Rectangle:
#     # 矩形
#     def __init__(self,w,h):
#         self.w=w
#         self.h=h
#     def getArea(self):
#         return self.w*self.h
# def main():
#     a=Circle(2)
#     b=Square(3)
#     c=Rectangle(4, 5)
#     print("a=",a.getArea())
#     print("b=",b.getArea())
#     print("c=",c.getArea())
# main()# # 123
# class MyNumber:
#     def __init__(self,value):
#         self.data= value
#
#     def __repr__(self):  # 对应于内置函数str(),用于显示数据
#         return "MyNumber({})".format(self.data)
#
#     def __add__(self,other):
#         v=self.data+other.data
#         return MyNumber(v)
#
#     def __sub__(self,other):
#         v=self.data-other.data
#         return MyNumber(v)
#
#
# def main():
#     n1=MyNumber(30)
#     n2=MyNumber(20)
#     n3=n1+n2    # 等效为 n3=n1.__add__(n2)
#     n4=n3-n2    # 等效为 n4=n3.__sub__(n2)
#     print("n3.data=",n3.data)
#     print(n1,"+",n2,"=",n3)
#     # 等效为print(n1.__repr__(),"+",n2.__repr__(),"=",n3.__repr__())
#     # 等效为print(str(n1),"+",str(n2),"=",str(n3))
#     print(n3,"-",n2,"=",n4)
#     # 等效为print(n3.__repr__(),"-",n2.__repr__(),"=",n4.__repr__())
#     # 等效为print(str(n3),"-",str(n2),"=",str(n4))
# main()# 124. 编写一段程序实现下面的功能:定义一个Rectangle类,
# 属性为左上角和右下角的平面坐标,编写方法,实现根据坐标计算矩形面积的功能
#
# class Rectangle:
#     def __init__(self, a, b, c, d):
#         self.a = a
#         self.b = b
#         self.c = c
#         self.d = d
#
#     def S_Rec(self):
#         print('The area of the rectangle is:', end='')
#         print((self.c-self.a) * (self.b-self.d))
#
# r = Rectangle(0,1,2,0)
# r.S_Rec()# 125. 编写一段程序实现下面的功能:定义一个三维空间的点类Point,
# 其属性是三维空间的坐标,再由它派生出一个直线类Line,能求直线的长度class Point:def __init__(self, x=0, y=0, z=0):self.x = xself.y = yself.z = zdef __repr__(self):return '({},{},{})'.format(self.x, self.y, self.z)def getX(self):return self.xdef getY(self):return self.ydef getZ(self):return self.zclass Line(Point):def __init__(self, a=Point(), b=Point()):self.a = aself.b = bdef printLine(self):print('First Point:', self.getPointa())print('Second Point:', self.getPointb())print('The length of the line is ', self.LineLength())def LineLength(self):x = self.a.getX() - self.b.getX()y = self.a.getY() - self.b.getY()z = self.a.getZ() - self.b.getZ()return pow((x**2+y**2+z**2), 1/2)def getPointa(self):return self.adef getPointb(self):return self.b
a = Point(0, 0, 0)
b = Point(0, 1, 0)
l = Line(a, b)
l.printLine()# import math
# class Point:
#     def __init__(self,x=0,y=0):
#         self.x=x
#         self.y=y
#     def __repr__(self):
#         return "({},{})".format(self.x,self.y)
#     def getX(self):
#         return self.x
#     def getY(self):
#         return self.y
#     def setX(self,x):
#         self.x=x
#     def setY(self,y):
#         self.y=y
# class Line(Point):
#     def __init__(self,ps=Point(),pe=Point()):
#         self.ps=ps
#         self.pe=pe
#         mx=(self.ps.getX()+self.pe.getX())/2
#         my=(self.ps.getY()+self.pe.getY())/2
#         self.setX(mx)
#         self.setY(my)
#     def printLine(self):
#         print("1st:",self.getStartpoint())
#         print("2nd:",self.getEndpoint())
#         print("The Length of Line:",self.getLength())
#         print("The Midpoint of Line:",self.getMidpoint())
#     def getLength(self):
#         dx=self.pe.getX()-self.ps.getX()
#         dy=self.pe.getY()-self.ps.getY()
#         return math.sqrt(dx*dx+dy*dy)
#     def getStartpoint(self):
#         return self.ps
#     def getEndpoint(self):
#         return self.pe
#     def getMidpoint(self):
#         return Point(self.x,self.y)
# def main():
#     ps=Point(-2,5)
#     pe=Point(7,9)
#     x=Line(ps,pe)
#     x.printLine()  # 输出直线x的信息
# main()

Python--第4次平时作业相关推荐

  1. 《Python语言程序设计》之第三次平时作业解析

    <Python语言程序设计>之第三次平时作业解析 程序填空题 单项选择题 程序填空题 下面程序的功能是从列表中筛选出字符串元素,并将它们连接为一个字符串.程序运行后的输出情况如下图所示.请 ...

  2. 东大20春计算机应用基础在线作业1答案,东大20春学期《计算机应用基础》在线平时作业1答案...

    20春学期<计算机应用基础>在线平时作业1 试卷总分:100 得分:100 一.单选题 (共 25 道试题,共 100 分) 1.Word的查找.替换功能非常强大,下面的叙述中正确的是 A ...

  3. 西工大c语言noj100作业,西工大17秋《C语言程序设计》平时作业

    Q:576696131 微信.Q均是1219895388 西工大17秋<C语言程序设计>平时作业 共题,总分:100分 答题中 分一.单选题共35题,70分 12分 结构化算法是( ). ...

  4. 华工网络计算机电路基础作业,2021年《计算机电路基础》-华工网络教育学院平时作业.doc...

    2021年<计算机电路基础>·平时作业 华南理工大学网络教育学院 一.简答题(6小题) 1.共射极放大电路如图1-1所示,已知,,晶体管的电流放大系数β =50,欲满足,的要求,试问..的 ...

  5. 华南理工网络教育计算机概论,2020年《计算机概论》平时作业华南理工网络教育学院.pdf...

    计算机概论平时作业 1. 简 述人工智能 答:人工智能是研究.开发用于模拟.延伸和扩展人的智能的理论.方法.技术 及应用系统的一门新的技术科学. 人工智能是计算机科学的一个分支, 它企图了解智能的实质 ...

  6. 西工大java高级网络编程_奥鹏西工大16春《JAVA高级网络编程》平时作业

    西工大16春<JV高级网络编程>平时作业 一.单选题(共 25 道试题,共 100 分.) 1. 假设以tomt为w服务器,在hllopp应用中有一个hllo.jsp,它的文件路径如下: ...

  7. 计算机辅助设计基础学什么,东大计算机辅助设计基础X20秋学期《计算机辅助设计基础》在线平时作业3资料...

    计算机辅助设计基础X20秋学期<计算机辅助设计基础>在线平时作业36 e0 Y; q) j3 q3 c 1.[单选题] 根据集成水平的不同,基于PDM的应用集成可分为3个层次,下面哪一个不 ...

  8. 2018华工计算机应用基础作业,计算机应用基础平时作业2019

    计算机应用基础平时作业2019Tag内容描述: 1.1.简述启动控制面板的常用方法.(至少列出三种) 答:常用打开控制面板的方法:1)点开始,选择控制面板打开:2)打开我的电脑,选择控制面板:3)点开 ...

  9. python在线作业_南开大学20春学期《Python编程基础》在线作业参考答案

    南开大学20春学期(1709.1803.1809.1903.1909.2003)<Python编程基础>在线作业 试卷总分:100 得分:98 一.单选题(共20 道试题,共40 分) 1 ...

最新文章

  1. 用 Freemarker 生成 word 文档
  2. C# 配置文件 自定義結點
  3. 2017 省赛选拨 想打架吗?算我一个!所有人,都过来!(3) 递推 斐波拉数列的应用...
  4. Android官方开发文档Training系列课程中文版:后台加载数据之处理CursorLoader的查询结果
  5. linux 上下文切换监控,[Linux] 查看进程的上下文切换pidstat
  6. 前端chrome浏览器调试总结??
  7. easycode 表配置_idea的easyCode的 MybatisPlus模板的配置详解
  8. 使用Arduino和超声波传感器实现简单测距
  9. In addition, Microsoft is also developing
  10. WEB 开发异常:java.lang.ClassNotFoundException
  11. maxscale mysql5.7_Maxscale实现Mysql读写分离
  12. ArcMap提取不规则线的坐标
  13. FFMPEG 的学习
  14. mysql 修改表的编码_Mysql表编码查看修改
  15. 码云html页面预览,码云,正式支持 Pages 功能,可以部署静态页面
  16. WINDOWS CMAKE与NMAKE
  17. Lab 3:自行车码表
  18. 企业征信(尽职调查):采集数据网站一览表
  19. Axis1.4 远程命令执行(CVE-2019-0227)复现
  20. 定时且周期性的任务研究II--ScheduledThreadPoolExecutor

热门文章

  1. Android之基于BaseAdapter和SimpleAdapter的GridView
  2. mysql semi join_MySQL 5.6 Semi join优化之materialization strategy
  3. canoco5主成分分析步骤_R语言 PCA主成分分析
  4. java获取tomcat目录结构_tomcat目录结构简介_动力节点Java学院整理
  5. 北大保送、硕博连读!《西游记》红孩儿扮演者现成中科院博士!
  6. 抛物面天线的工作原理是什么?
  7. 20幅扎心漫画,道尽无数人的人生!30万网友:这简直是在偷窥我生活...
  8. 知乎上这个程序员火了,竟是因为给老板修了一 次U盘
  9. 清北学霸的书单居然那么有讲究?看看你比学霸少看了哪些书......
  10. python 多分类情感_python 文本情感分类