Python实验二

作业一

一.简答题(共5题,100.0分)
1

已知复数 x = 6+ 8j 请写出它的模、实部、虚部及共轭复数的命令,并写出运行结果。

正确答案:

我的答案:

x = 6 + 8j

print(abs(x))

print(x.real)

print(x.imag)

print(x.conjugate())

结果:

10.0

6.0

8.0

(6-8j)

2

已知a= [97, 98, 99,100], b = (97, 98, 99,100), c = {‘x’:97, ‘y’:98, ‘z’:99,’q’:100}, d = {97, 98, 99,100},则a[1]、b[1]、c[1]、d[1]及c[‘q’])的运行结果分别是什么?并说明理由。

正确答案:

我的答案:

a= [97, 98, 99,100]

print(a[1])

b = (97, 98, 99,100)

print(b[1])

运行结果:

98

98

原因:a,是列表,b是元组。列表,元组支持使用下标访问指定位置的元素,编号都是从0开始,a[1],b[1]输出的是第二个元素,所以输出结果是98,98。

c = {‘x’:97, ‘y’:98, ‘z’:99,‘q’:100}

print(c[1])

运行结果:

print(c[1])

KeyError: 1

原因:c是字典,字典支持的下标是键。字典的元素形式是“键:值”。在c中的键值没有1,所以输出KeyError:1,意思是使用了映射中不存在的关键字(键)时引发的关键字错误。

d = {97, 98, 99,100}

print(d[1])

运行结果:

print(d[1])

TypeError: ‘set’ object is not subscriptable

原因是:

d是集合,集合不支持下标,所以出现TypeError,类型错误。集合常用的是in,not in判断元素是否在集合里。

c = {‘x’:97, ‘y’:98, ‘z’:99,‘q’:100}

print(c[‘q’])

运行结果是:

100

c[‘q’] 可以在字典c中找到键‘q’, 其对应的值100,所以输出结果是100.

3
写出以下命令的运行结果,并说明理由。

2 or 3

2 and 3

2 and 3 and True

0 and 3 and 1

0 and 3 or 1

0 and 3 or 1 or 4

0 or False and 1

正确答案:

我的答案:

运行结果是:

2

3

True

0

1

1

False

原因是:

优先级:()>not >and >or,运算符and ,or并不一定会返回true或者false,而是得到最后一个被计算的表达式的值。

  在python中逻辑运算符or,x or y ,如果 x or y ,x为true则返回x,如果x 为false返回y值。因为一个为真则为真,所以返回x的值,如果x的值为假,那么or运算的结果取决于y,所以返回y值。逻辑运算符and,x and y ,若x为true则返回y值,若x为false则返回x值。因为x为true,and的运算不会结束,会继续看y的值,所以此时真假取决于y的值,所以x为真则返回y的值。如果x为假,那么and运算就结束运算过程,因为一个为假则为假,所以返回x的值。

2 or 3 : 2,3为真,or:一个为真运算结果则为真,所以运算结果返回为第一个数值为真的2

2 and 3: 2,3为真,and:两个数值为真则为真,运算结果为第二个数值为真的3

2 and 3 and True : 2,3,True都为真,2 and 3 运算结果为3;继续运算,3 and true,运算结果为true

0 and 3 and 1 : 0为假,3为真,0 and 3运算结果为0;0 and 1,0为假,运算结束,结果为0(0与任何数进行逻辑与运算结果为0)

0 and 3 or 1: 0 and 3 运算结果为0;0 为假,1为真,0 or 1返回值为1(1与任何数进行逻辑或运算结果为1)

0 and 3 or 1 or 4: 0为假,0 and 3返回值为0,1为真,0 or 1返回值为1,1为真,1 or 4结束运算返回值为1

0 or False and 1: and 的运算级优于or,先运算 False and 1返回值为False(and:一个为假则为假),接着运算0 or False,0为假,运算结果为False(or:两个为假则为假,运算结果为第二个为假的数)。

4
编写小程序,输入一个三角形的三边,输出它的面积,并写出运行结果。

正确答案:

我的答案:

x=int(input(“请输入三角形的一条边x:”))

y=int(input(“请输入三角形的一条边y:”))

z=int(input(“请输入三角形的一条边z:”))

c=(x+y+z)/2

s=(c*(c-x)(c-y)(c-z)) ** 0.5

print(‘三角形面积为 %0.2f’ %s)

结果:

请输入三角形的一条边x:5

请输入三角形的一条边y:6

请输入三角形的一条边z:8

三角形面积为 14.98

5
编写小程序,输入两个集合setA和setB,分别输出它们的交集、并集、对称差集和差集,并写出运行结果。

正确答案:

我的答案:

setA={1,2,3,4}

setB={3,4,6,8}

a=((setA) & (setB))

b=((setA) | (setB))

c=((setA) ^ (setB))

d=((setA) - (setB))

e=((setB) - (setA))

print(“交集 :%s” %a)

print(“并集 :%s” %b)

print(“对称差集:%s” %c)

print(“A与B差集 : %s” %d)

print(“B与A差集 : %s” %e)

结果是:

交集 :{3, 4}

并集 :{1, 2, 3, 4, 6, 8}

对称差集:{1, 2, 6, 8}

A与B差集 : {1, 2}

B与A差集 : {8, 6}

上一篇:c++98 stl-deque


下一篇:打字练习17