HNU工科Python期中模拟答案详解与解析

样卷在今天上午发布,可惜我一天满课没能在第一时间做完,不过现在发好像也不算太晚?

一、单选题(共20题;共40分)

1。以下语句执行后a、b、c的值是(  A  )

a = "watermelon"
b = "strawberry"
c = "cherry"
if a > b:
    c = a
    a = b
    b = c

A.strawberry watermelon watermelon

B.strawberry cherry watermelon

C.watermelon cherry strawberry

D.watermelon strawberry cherry

这题就是一个赋值问题,很简单。如果没把握考试时可以自己打开Python运行一下。

2.下列代码的运行结果是(  C  )

x = 4
if 2:
    print(5)
else:
    print(6)

A.False

B.6

C.5

D.4

这题原版答案错了,if后面加数字,非零即为逻辑真,不知道原版的B是怎么想出来的。

3.关于Python的列表,描述错误的选项是(  C  )
A.Python列表的长度可变的
B.Python列表是一个可以修改数据项的序列类型
C.Python列表用花括号{}表示
D.Python列表是包含0个或者多个对象引用的有序序列

花括号里的那叫字典。

4.对于列表ls的操作,以下选项中描述错误的是 (  A  )
A.ls.append(x):在ls最前面插入一个元素
B.ls.reverse0:列表ls的所有元素反转
C.ls.copy0:生成一个新列表,复制s的所有元素
D.ls.clearQ:删除Is的所有元素

考察append()的用法,很简单。

5.下面代码的输出结果是(  D  )

a=[[1,2,3],[4,5,6],[7,8,9]]
s=0
for c in a:
    for j in range(3):
        s += c[j]
print(s)

A.24
B.6
C.18
D.45

原版答案又错了。

6.下面代码的输出结果是(  A  )

for s in "HelloWorld":
    if s == "W":
        continue
    print(s,end="")

A.Helloorld

B.Helloworld

C.World

D.Hello

原版答案C你在逗谁?

7.下列代码的输出结果是(  B  )

for s in "abc":
    for i in range(3):
        print(s,end="")
        if s=="c":
            break

A.aaabbb

B.aaabbbc

C.abcabcabc

D.aaabbbccc

嗯,原版答案就算是AD都能理解,结果是C?

8.关于循环,以下错误的是(  C  )
A.Python通过for、while等保留字提供循环结构
B.break用来跳出当前层次的循环,脱离该循坏后程序从循环代码后继续执行
C.每个continue语句只有能力跳出当前层次的循环
D.遍历循环中的遍历结构可以是字符串、文件、组合数据类型和range()函数等

continue语句可以跳出当前循环并进行下一轮循环。

9.关于Python的分支结构,以下选项中描述错误的是(  A  )
A.可以使用if<条件><表达式1>else<表达式2>的紧凑结构,返回一个表达式的值
B.Python中if-elif-else 语句描述多分支结构
C.Python中if-else语句用来形成二分支结构
D.分支结构使用if保留字

10.下列不能作为变量名的是(  C  )
A.f_1

B.f1

C.if
D.fi

这题……有点搞笑。

11.下面代码的输出结果是(  A  )
x=10
print(x%y,x**y)
A.1 1000
B.3 30
C.1 30
D.3 1000

%是取余数而不是取整,考试忘记了可以自己跑一下,原版答案还是错的。

12.以下代码的输出结果是(  B  )
print('{:*^10.4}'.format ('Flower'))
A.**Flower**
B.****Flow****
C.Flower
D.Flow
答案日常抽风。

13.s="the sky is blue”',表达式 print(s[-4:], s[:-4])的结果是:(  A  )
A.blue the sky is
B.sky is blue the
C.blue is sky the
D.the sky is blue

这题乍一看有点难理解,s[-4:]代表从索引为-4的地方向右取值取到底,也就是从b开始取到e;s[:-4]代表从开头取到索引为-4的位置。这题答案仍然是错的。

14.下面代码的输出结果是 (  D  )
print( 0.1 + 0.2 == 0.3)
A.1
B.0
C.True
D.False

这个建议考场上自己跑一遍。

15.关于赋值语句,以下选项中描述错误的是 (  C  )
A.可以使用变量<运算符>=表达式的方式
例如x=5
y=10
y+=x
表示y=y+x
B.在Python 语言中,“=〞表示赋值,即将“=〞左侧的计算结果赋值给右侧变量,包含"="的语句称为赋值语句

C.可以将一个表达式的值赋给多个变量

x=y=5

D.设x="alice",y="kate",执行x,y=y,x,可以实现变量x与y的互换

16.设一年356天,第1天的能力值为基数记为1.0。当好好学习时能力值相比前一天会提高干分之五。以下选项中,不能获得持续努力1年后的能力值的是(  B  )

A.pow(1.005,365)

B.1.005*365

C.pow((1.0+0.005),365)

D.1.005 ** 365

以下选择题自求多福。

17.下列哪项不属于人工智能的机器学习范畴(  A  )
A.模仿学习
B.深度学习
C.强化学习
D.监督学习

18.第一台计算机ENIAC使用的元件是 (  D  )
A.超大规模集成电路
B.集成电路
C.晶体管
D.电子管

19.下列不属于应用软件的是 (  D  )
A.淘宝
B.microsoft office
C.photoshop
D.安卓

20.根据冯诺依曼体系结构,计算机由哪五部分组成(  A  )
A.输入设备、运算器、存储器、控制器、输出设备
B.输入设备、运算器、存储器、主机、输出设备
C.输入设备、控制器、存储器、中央处理器、输出设备
D.输入设备、运算器、存储器、中央处理器、输出设备

二、编程题(共6题;共60分)

1.Python语言表达式抛物运动垂直方向位移(10.0分)
抛物运动垂直方向的位移公式
y = vsinat – (gt^2) / 2
输入速度v 角度a和时间t(g取9.8)
计算y(保留两位小数)
例如输入 100 60 10 输出376.03

第一题送个分很正常,但要先记住导入math.py函数,并且在进行三角函数运算时把角度制转化成弧度制。

import math
v=eval(input())
a=eval(input())
t=eval(input())
g=9.8
y=v*(math.sin(math.radians(a)))*t-(g*t**2)/2
print("{:.2f}".format(y))

2.ISBN校验码(10.0分)
国际标准书号(ISBN)用10为数字唯一标识的一本书。(我硬是不知道这句话有多少处奇怪的语病,好像是出题的人打错了一堆字)最后一位数字为校验和,可以由其他9位数字计算出来,且d1+2d2+3d3+..…+10d10必须是11的倍数(di的下标表示从右边起第i个数)。校验和必须是介于0到10中的一个数字,用字母x表示10、例如,020131452的校验和是5,因为对于以下11的倍数的公式,5是唯一的介于0-10之间的数,10*0+9*2+8*0+7*1+6*3+5*1+4*4+3*5+2*2+1*5.
编写一个python程序,将9位整数作为输入,计算校验和并打印isbn号

例如:输入020131452,输出0201314525

利用for_in循环可解,难度也不高,但这好像是这张试卷第二难的大题。

a=input()
l=list(a)
for i in range(11):
    if (10*eval(l[0])+9*eval(l[1])+8*eval(l[2])+7*eval(l[3])+6*eval(l[4])+5*eval(l[5])+4*eval(l[6])+3*eval(l[7])+2*eval(l[8])+i)%11==0:
        n=str(i)
if n == '10':
    n = 'X'
print(a+n)

3.小时工工资计算(10分)
某公司按小时计费工资。规定每周5个工作日,每天工作8小时。工作日超时工作工资为正常工资的1.5倍。休息日工资,4小时内为正常工资的2倍,超过4小时为正常工资的3倍。
输入每小时工资,员工每周的工作日工作小时数和休息日工作小时数,计算其该月工资
例如每小时工资30元。工作日50小时,休息日8小时,其工资为2250.00元

这关是一个简单的if分支结构,类似于实训中的阶梯水价。

a=eval(input())
h1=eval(input())
h2=eval(input())
if h1/5 <= 8:
    m1 = h1 * a
else:
    m1 = 40 * a + (h1-40) * a * 1.5
if h2 <= 4:
    m2 = h2 * 2 * a
else:
    m2 = 4*2 * a + (h2-4) * 3 * a
print(m1+m2)

4.python语言期中补考循环数列5 (10.0分)
输入n,计算下列数列和
1+1+√2+1+√2+√3+1+√2+√3+…+√n.
例如,输入5,输出22.09(平方根使用sqrt函数)

本题考察循环。理论上如果你能用数列的知识直接算出前n项和也可以逃课。

import math
n=eval(input())
s=0
a=0
for i in range(1,n+1):
    s+=math.sqrt(i)
    a+=s
print("{:.2f}".format(a))

5.python期未模拟組合数据— (10.0分)
十位评委对六位歌手打分,六位歌手的得分数据如fs列表所示
fs=[['zhang',9.5,9.8,9.7,9.6,9.5,9.9,9.6,9.2,9.3,9.7], ['huang', 8.5,8.8,7.7,7.6,8.5,8.3,9.1,7.8,7.5,9.3],
Ґ'liu',9.5,8.8.7.2,9.6,8.5,6.5.6.3,7.6.9.9],['chen'9.5,9.8,8.7,8.6,7.5,8.8,8.1,9.3,9.2,9.9],
[lin,9.9,7.8,7.5,7.2,6.5,9.1,9.2,9.3,8.5,8.2],
['ye' 9.8,6.8,6.2,9.3,7.5,8.3,9.1,9.4,8.7,8.9]]
计算每位歌手的实际得分,即去掉一个最高分、一个最低分的平均分,按从高到低的顺序,输出前3名的名次、姓名和实际得分(保留两位小数)

本题考察二维列表,是全卷最难的大题,而且我们压根没学到,所以感谢lzy大神@雷神不爱编程 提供的答案。

fs=[['zhang',9.5,9.8,9.7,9.6,9.5,9.9,9.6,9.2,9.3,9.7],
    ['huang',8.5,8.8,7.7,7.6,8.5,8.3,9.1,7.8,7.5,9.3],
    ['liu',9.5,8.8,7.2,9.6,8.5,6.5,6.3,7,6.9,9],
    ['chen',9.5,9.8,8.7,8.6,7.5,8.8,8.1,9.3,9.2,9.9],
    ['lin',9.9,7.8,7.5,7.2,6.5,9.1,9.2,9.3,8.5,8.2],
    ['ye',9.8,6.8,6.2,9.3,7.5,8.3,9.1,9.4,8.7,8.9]]

for i in range(len(fs)):
    zdz=0
    zxz=10
    zf=0
    pjf=0
    for j in range(1,11):
        if fs[i][j]>=zdz:
            zdz=fs[i][j]
        if fs[i][j]<=zxz:
            zxz=fs[i][j]
        zf+=fs[i][j]
    dxh=fs[i].index(zdz)
    xxh=fs[i].index(zxz)
    fs[i].pop(dxh)
    fs[i].pop(xxh)
    zf=zf-zdz-zxz
    pjf=zf/8
    fs[i].append(pjf)
fs.sort(key=lambda x:x[9],reverse=True)

for l in range(3):
    print("第{}名姓名{}分数{:.2f}".format(l+1,fs[l][0],fs[l][9]))

6.Python循环银行利息计算(10.0分)
某人有资金100000元,他存入银行一年期的大额存款,年利率为5%,一年后又将所有资金转存。若银行利率一直不变,求想获得指定金额的资金,存款至少需要多少年。例如,输入1200000,返回4.

本题考察while循环,其实比较基础。不过由于range()函数只能将年份限定在一定范围,这关不能用for_in循环。需要用while循环才能完全解决问题。

a=120000
n=0
s=100000
i=0
while s < a:
    s=1.05*s
    n+=1
print(n)

总结:原卷选择题答案错一大堆;大题目大多比较简单(除了第五题)。

物联沃分享整理
物联沃-IOTWORD物联网 » HNU工科Python期中模拟答案详解与解析

发表评论