南通大学python期末考试试卷_python期末考试复习试卷

sg_trans.gif

Python程序设计期中考试卷

一、单选题 (20%) 每题四个选项,请在确切答案前用√标记(1)执行下列语句后的显示结果是什么?

>>> world=”world”

>>> print “hello”+ world

[A]helloworld [B] “hello”world [C] hello world [D] 语法错

(2)下列标识符中哪个是合法的? [A] i'm [B] _ [C] 3Q [D] for

(3)执行下列语句后的显示结果是什么?

>>> from math import sqrt

>>> print sqrt(3)*sqrt(3) == 3

[A]3 [B] True [C] False [D] sqrt(3)*sqrt(3) == 3

(4)设s = ”Happy New Year”,则s[3:8]的值为:

[A] ‘ppy Ne’ [B] ‘py Ne’ [C] ‘ppy N’ [D] ‘py New’

(5)算法是指:

[A] 数学的计算公式[B]程序设计语言的语句序列[C]对问题的精确描述[D]解决问题的精确步骤

(6)

type(1+2L*3.14)的结果是:

[A][B] [C] [D]

(7) 以下何者是不合法的布尔表达式:

[A] x in range(6) [B] 3=a [C] e>5 and 4==f [D] (x-6)>5

(8) 若k为整形,下述while循环执行的次数为k=1000 while k>1: print k k = k/2

[A] 9 [B] 10 [C]11 [D] 1000

(9) 选出对下列语句不符合语法要求的表达式:

for var in ____________ : print var

[A]range(0,10) [B] ”Hello” [C] (1,2,3) [D] {1,2,3,4,5}

(10) 计算思维能力和下述其他方面能力相比,何者更相近?[A]阅读、写作和算术[B]逻辑推理[C]形象思维[D]技巧体操

二、填空题 (10%, 每小题2分)

(1).Python中调用open函数打开文件,调用close函数关闭文件,调用

(

)函数可实现对文件内容的读取。

read() or readline() or readlines()

(2). 表达式1/4+2.75的值是。2.75

(3). 高级程序设计语言必须由或者翻译成低级语言。编译器解释器

(4). 给出range(1,10,3)的值:。[1,4,7]

(5). 请给出计算2的31次方−1的Python表达式:。2**31-1

三、是非题 (20%) 请在语句后的[ ]内填写标记√或X:

(1) 函数eval_r()用于数值表达式求值,例如eval_r(2*3+1)。[X]

(2) 执行了import math之后即可执行语句print sin(pi/2)。[X]

(3) Python可以不加声明就使用变量。[ √ ]

(4) Python可以不对变量如a初始化就可在表达式如b=a+1中使用该变量。[X]

(5) 选择排序算法是一个时间复杂度为nlogn算法。[X]

(6) Hanoi塔的解法体现了分而治之(divide-and-conquer)方法的典型用途。[X]

(7) 一个函数中只允许有一条return语句。[X]

(8) 可用open(“file1”,”r”)方式打开文件并进行修改。[X]

(9) Python语言是面向对象的。[ √ ]

(10) 存在一个程序判别一个Python程序的运行是否可以停止。[X]

四、理解题 (24%) 写出下列程序的运行结果:(1).

deffunc(s, i, j):

ifi < j:

func(s, i + 1, j - 1)

s[i],s[j] = s[j], s[i]

defmain():

a = [10, 6, 23, -90, 0, 3]

func(a, 0, len(a)-1)

fori inrange(6):

print( a[i])

print("\n")

main()

3 0 ‐90 23 6 10

(2). i = 1

while i + 1: if i > 4:

print "%d\n" % i i += 1 break

print "%d\n" % i i += 1 i += 1

1 3 5

(3).

def foo(s): if s == "": return s else:

return foo(s[1:]) + s[0]

print foo("Happy New Year")

(4).

def func(a, n, m): if n == 0: return 1 else:

num = func(a,n/2,m) if n%2 == 0:

return num * num % m else:

return num * num * a % m

print func(5,6,7) 1

(5).

def foo(list,num): if num == 1:

list.append(0) elif num == 2:

foo(list,1) list.append(1) elif num > 2:

foo(list,num-1)

list.append(list[-1]+list[-2])

mylist = [] foo(mylist,10) print mylist

[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]

(6).

def func(a,b): if (a < b): a, b = b, a r = a % b if r == 0: return b else:

return func(b,r)

ans = func(342,84) print ans 6

五、程序填空题 (10%)

(1).打印100~200间的全部素数,输出格式为每行10个:[----1----] n = 0

for m in range(101, 201, 2): k = int(math.sqrt(m))

for i in range([----2----], k+1): if m % i == 0: [----3----] if i == [----4----]:

if n % 10 == 0: print "\n" print "%d " % m, [-- 5 --]

import math 2

break k

n += 1

(2)选择排序算法对数组中的数据按由小到大排序

def sort([----1----]): for i in range(n-1): [----2----]

for j = range(i + 1, n): if [----3----] k = j

a[k], a[i] = a[i], a[k] def main():

list = [12,5,61,8,11,32,111,94,37,55] [----4----]

print "The sorted list:\n" for i in [----5----]: print list[i], print "\n"

main() a,n k = i

a[j] > a[k]

sort(list,len(list)) range(10)

六、程序设计题 (16% , 每小题8分)

(1) 编写函数,检测给定的两维数组中是否有重复数据(已知该数组中保存了正整数):check_data(mat),如果没有重复,则函数返回真。要求算法的时间复杂度不大于O(n)。

def expand_list(list,num):

if len(list) > num:

return

for i in range(len(list),num):

list.append(0)

def check_data(list):

count = []

expand_list(count,10)

for line in list:

for var in line:

if var > len(count):

expand_list(count,var+1)

if count[var] == 0:

count[var] += 1

else:

return False

return True

(2) 设有一个背包能承受重量s(s>0),又有n(n≥1)件物品,其重量列表为

w=[w1,w2,...,wn]. 要从物品中挑选若干件放入背包,使得放入的物品重量之和正好是s.试设计递归函数f(w,s,n):当有解时返回True,并显示所选物品是哪些;无解时返回False。[提示:递归之处在于f(w,s,n)的真假等于f(w,s−wn,n−1) or f(w,s,n−1)]

def f(w,s,n): if s==0:

return True

elif (s<0) or (s>0 and n<1):

return False

elif f(w,s-w[n-1],n-1):

print w[n-1],

return True

else:

return f(w,s,n-1)

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值