上海交通大学python期末考试样题加解析
一、选择题: 将唯一正确的选项写在题前括号中.每题2 分. 【 】(1) 本课程的目标定位是什么? [A] 学习Python 语言 [B] 学习计算机的工作原理 [C] 学习各种算法 [D] 学习用计算机解决问题 【 】(2) 下列哪个标识符是合法的? [A] var-name [B] !@#$% [C] _100 [D] elif 【 】(3) 执行下列语句后的显示结果是什么? >>> s = ”hi” >>> print “hi”, 2*s [A] hihihi [B] ”hi”hihi [C] hi hihi [D] hi hi hi 【 】(4) 如何解释下面的执行结果? >>> print 1.2 - 1.0 == 0.2 False [A] Python 的实现有错误 [B] 浮点数无法精确表示 [C] 布尔运算不能用于浮点数比较 [D] Python 将非0 数视为False 【 】(5) 想用一个变量来表示出生年份, 下列命名中哪个最可取? [A] b_y [B] birth_year [C] __birthYear__ [D] birthyear 【 】(6) 执行下列语句后的显示结果是什么? >>> a = 1 >>> b = 2 * a / 4 >>> a = “one” >>> print a,b [A] one 0 [B] 1 0 [C] one 0.5 [D] one,0.5上 海 交 通 大 学 试 卷(A卷)( 2010 至 2011 学年 第 2 学期 ) 班级号____________________ 学号__________ ____ 姓名 课程名称 程序设计思想和方法 成绩 【 】(7) 执行下列语句后的显示结果是什么? >>> s = ”GOOD MORNING” >>> print s[3:-4] [A] D MOR [B] D MORN [C] OD MOR [D] OD MORN 【 】(8) 表达式1+2L*3.14>0 的结果类型是: [A] int [B] long [C] float [D] bool 【 】(9) 程序设计的原型(Prototyping)方法是指: [A] 先设计程序框架结构, 再逐步精化细节 [B] 先设计类, 再实例化为对象 [C] 先设计简单版本, 再逐步增加功能 [D] 以上都不是 【 】(10) 对n 个数做归并排序(merge sort),这个算法是: [A] logn 时间的 [B] 线性时间的 [C] nlogn 时间的 [D] n 2 时间的 二、判断题: 在题目前面的括号中打勾或叉.每题2 分. 【 】(1) 高级语言程序要被机器执行, 只有用解释器来解释执行. 【 】(2) 不同类型的数据不能相互运算. 【 】(3) 由于引号表示字符串的开始和结束, 所以字符串本身不能包含引号. 【 】(4) 计算机科学并非研究计算机的科学, 正如天文学并非研究望远镜. 【 】(5) 算法和程序是不同的概念. 题号 得分 批阅人(流水阅 卷教师签名处)我承诺,我将严 格遵守考试纪律。 承诺人: A 卷 总 5 页 第 1 页【 】(6) 下面的程序段是错的: temp = 42 print “The temperature is“ + temp 【 】(7) 同一Python 变量可以先后赋予不同类型的值. 【 】(8) 计算机的计算是确定的, 因此并不能真正产生随机数. 【 】(9) 对象就是类的实例. 【 】(10) Hanoi 塔问题属于不可解问题. 三、填空题: 每题2 分. (1) 表达式2**3*4%5 的值为: . (2) 函数range(1,1,1) 的值是: . (3) 格式化输出浮点数: 宽度10,2 位小数,左对齐,则格式串为: . (4) 表达式chr(ord(‘a’))的值为: . (5) 表达式((2>=2) or (2<2)) and 2 的值为: . (6) 无穷循环while True:的循环体中可用 语句退出循环. (7) 不用math 模块中的sqrt(), 如何计算4 的平方根: . (8) 给出一个计算机本质上不可解问题的例子: . (9) 表达式‘%d%%%d’%(1%2,3%4) 的值为: . (10) Python 的标准随机数生成器模块是: . 四、读程序并回答问题:每题5 分. (1) 下面的程序根据用户输入的三个边长a,b,c 来计算三角形面积. 请找出程序中的错误并改正之. (设用户输入合法, 面积公式无误) import mathA 卷 总 5 页 第 2 页a, b, c = raw_(“Enter a,b,c: ”) s = a + b + c s = s / 2.0 area = sqrt(s*(s-a)*(s-b)*(s-c)) print “The area is:”, area 将raw_ 改成 将sqrt 改成 math.sqrt (2) 下面的程序要求用户输入二进制数字0/1 并显示之.找出程序中的错误并改正之. bit = (“Enter a binary digit: “) if bit = 0 or 1: print “Your is:”, bit else print “Your is invalid.” 将 bit = 0 or 1 改成bit == 0 or bit== 1 将else 改成else: (3) 下面程序的输出是什么? def f(a, b, c): x = y = 0 for i in range(c):x = x + a + y y = y + b return x print f(-5, 2, 10) 注意return x 在for 的缩进里面,所以最后只有一个数据输