作业一
一.简答题(共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}