Python经典题库及答案
一、简答题
1 、写出 python导入模块的关键字((1)import,(2)from * import *)
2 、写出 Python运算符 & 的两种功能?(1 )数字位运算;2)集合交集运算。)
3 、简单解释 Python基于值的自动内存管理方式?(Python 采用的是基于值得内存管理方式,在Python中可以为不同变量赋值为相同值,这个值在内存中只有一份,多个变量指向同一个内存地址;Python 具有自动内存管理功能,会自动跟踪内存中所有的值,对于没有任何变量指向的值,Python自动将其删除。)
4 、在Python中导入模块中的对象有哪几种方式?
1)import模块名[as别名 ] ;
2)from模块名import对象名 [ as别名 ];3)from math import *
5 、 解释 Python脚本程序的“name”变量及其作用?(每个Python 脚本在运行时都有一个“name”属性。如果脚本作为模块被导入,则其“name ”属性的值被自动设置为模块名;如果脚本独立运行,则其“name”属性值被自动设置为“main ”。利用 “name ”属性即可控制Python 程序的运行方式。)
6 、为什么应尽量从列表的尾部进行元素的增加与删除操作?(当列表增加或删除元素时,列表对象自动进行内存扩展或收缩,从而保证元素之间没有缝隙,但这涉及到列表元素的移动,效率较低,应尽量从列表尾部进行元素的增加与删除操作以提高处理速度。)
7 、 分析逻辑运算符“or ”的短路求值特性?(假设有表达式“表达式1 or表达式 2 ”,如果表达式1的值等价于True ,那么无论表达式2 的值是什么,整个表达式的值总是等价于 True 。因此,不需要再计算表达式2 的值。)
8 、简单解释 Python中短字符串驻留机制? (对于短字符串, 将其赋值给多个不同的对象时,内存中只有一个副本,多个对象共享改副本。)
9 、异常和错误有什么区别?(异常是指因为程序执行过程中出错而在正常控制流以外采取
的行为。 严格来说, 语法错误和逻辑错误不属于异常,但有些语法错误往往会导致异常,例如由于大小写拼写错误而访问不存在的对象,或者试图访问不存在的文件,等等。)
10 、使用 pdb 模块进行 Python 程序调试主要有哪几种用法?( 1)在交互模式下使用 pdb模块提供的功能可以直接调试语句块、表达式、函数等多种脚本。2)在程序中嵌入断点来实现调试功能。 在程序中首先导入 pdb 模块, 然后使用 pdb.set_trace() 在需要的位置设置断点。如果程序中存在通过该方法调用显式插入的断点,那么在命令提示符环境
下执行该程序或双击执行程序时将自动打开pdb 调试环境,即使该程序当前不处于调试状态。
3 )使用命令行调试程序。在命令行提示符下执行“python–m pdb 脚本文件名”,则直接进入调试环境;当调试结束或程序正常结束以后,pdb 将重启该程序。)
11、阅读下面的代码,并分析假设文件“D:\ ”不存在的情况下两段代码可能发生的问题。
代码 1:
>>> try:
fp = open(r'd:\') print('Hello world!', file=fp)
finally:
fp.close()
代码 2:
>>> try:
fp = open(r'd:\', 'a+') print('Hello world!', file=fp)
finally:
fp.close()
答:
假设文件“ D:\”不存在,那么第一段代码会抛出异常,提示fp 没有定义;第二段代码执行正常。原因是第二段代码使用内置函数open() 打开指定文件时如果不存在则会创建该文件,从而不会抛出异常。
12、下面的代码本意是把当前文件夹中所有html文件都改为htm 文件,仔细阅读代码,简要说明可能存在的问题。
import os
file_list=os.listdir(".") for filename in file_list:
pos = filename.rindex(".")
if filename[pos+1:] == "html": newname = filename[:pos+1]+"htm"
os.rename(filename,newname)
print(filename+"更名为: "+newname)
答:
对于字符串对象,如果要查的子字符串不存在,则rindex()方法会抛出异常。所以,如果当前文件夹中有不包含圆点的文件名或者子文件夹名,上面的代码会抛出异常而崩溃。
四、编程题
1 、编写程序,在 D 盘根目录下创建一个文本文件 ,并向其中写入字符串 hello
world 。答:
fp =
open(r ’ ’ , ‘ a+ ’ ) print( ‘ hello world ’ , file=fp)
fp.close()
2 、写出下面代码的优化版本,提高运行效率。 x =
list(range(500)) for item in x:
t = 5**5 print(item
+t)答: x =
list(range(500)) t
= 5**5
for item in x:
python新手函数print(item+t)
3 、编写程序, 生成一个包含 20 个随机整数的列表, 然后对其中偶数下标的元素进行降序排列,奇数下标的元素不变。(提示:使用切片。)
答:
import random
x = [random.randint(0,100) for i in range(20)] print(x)
y = x[::2]
y.sort(reverse=True) x[::2] = y
print(x)
4、写出下面代码的执行结果。 def Join(List, sep=None):
return (sep or
',').join(List) print(Join(['a', 'b', 'c']))
print(Join(['a', 'b', 'c'],':'))
答:
a,b,c
a:b:c
5、写出下面代码的运行结果。 def Sum(a, b=3, c=5):
return sum([a, b, c]) print(Sum(a=8, c=2)) print(Sum(8))
print(Sum(8,2))
答:
13
16
15
6、写出下面代码的运行结果。 def Sum(*p):
return sum(p) print(Sum(3, 5,
8)) print(Sum(8))
print(Sum(8, 2,
10))
答:
16
8
20
7 、编写函数,判断一个数字是否为素数,是则返回字符串YES,否则返回字符串NO 。答:
import math def IsPrime(v):
n = int(math.sqrt(v)+1) for i in range(2,n):
if v%i==0:
return 'No'
else:
return 'Yes'
8 、编写函数,模拟Python内置函数
sorted()。答:
def Sorted(v):
t = v[::] r = []
while t:
tt=min(t) r.append( tt) t.remove(
tt)
return r
9 、编写程序,生成包含20 个随机数的列表,然后将前10 个元素升序排列,后10 个元素降序排列,并输出结果。
答:
import random
x = [random.randint(0,100) for i in range(20)] print(x)
y = x[0:10]
y.sort()
x[0:10] = y y =x[10:20]
y.sort(reverse=True)
x[10:20] = y
print(x)
10、编写程序,运行后用户输入4 位整数作为年份,判断其是否为闰年。如果年份能被400
整除,则为闰年;如果年份能被4 整除但不能被100 整除也为闰年。答:
x = input('Please input an integer of 4 digits meaning the year:') x = eval(x)
if x%400==0 or (x%4==0 and not x%100==0): print('Yes')
else:
print('No')
11、编写程序,实现分段函数计算,如下表所示。
xy
x<00
0<=x<5x
5<=x<103x-5
10<=x<200.5x-2
20<=x0
答:
x = input('Please input x:') x = eval(x)
if x<0 or
x>=20:
print(0) elif 0<=x<5:
print(x)
elif 5<=x<10:
print(3*x-5) elif 10<=x<20:
print(0.5*x-2)
12、阅读下面的程序,判断其是否可以正常运行,如果可以运行则写出执行结果, 如果不能运行则写出理由。
class Test:
def init (self, value): self.value = value
def value(self):
return self.value
t=Test(3) t.value=5 print(t.valu
e) 答:
不能运行。程序中定义的是只读属性,不能修改属性的值。
13、下面代码的功能是, 随机生成 50 个介于 [1,20] 之间的整数, 然后统计每个整数出现频率。请把缺少的代码补全。
import random
x=[random.(1,20) for iin range()] r =dict()
for i in x:
r[i]=r.get(i,
)+
1 for k, v inr.items():
print(k, v)
答:
分别填写 randint、50 、0
14、假设有 Python程序文件 demo.py,代码如下:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论