Python程序设计 习题Word格式.docx
《Python程序设计 习题Word格式.docx》由会员分享,可在线阅读,更多相关《Python程序设计 习题Word格式.docx(30页珍藏版)》请在冰豆网上搜索。
Python"
,'
Python'
;
(3)列表(List):
[1,2,3,4],[5,6,7,[8,9],10];
(4)字典(Dictionary):
{1:
study"
2:
};
(5)元组(Tuple):
(1,"
shuai"
2);
(6)集合(Set):
{'
P'
'
y'
t'
h'
o'
n'
}
2.Python标识符在命名时有哪些规则?
(1)标识符必须是英文字母、数字和下划线(_)的组合,并且不能以数字开头;
(2)标识符名中不能有空格以及标点符号(括号、引号、逗号、斜线、反斜线、冒号、句号、问号等等);
(3)Python语言是区分大小写的,因此abc和Abc是两个不同的标识符;
(4)标识符不能与Python关键字同名;
(5)不要使用Python内置函数名、内置数据类型或异常名作为标识符名。
3.在函数内部可以通过关键字来定义全局变量。
global
4.什么叫做闭包?
在嵌套函数中,如果嵌套函数引用了外层函数的变量,则称之为闭包。
5.简单说明nonlocal关键字的作用。
在闭包中,内嵌函数无法修改外层函数定义的变量,可使用nonlocal关键字,在内嵌函数中声明该变量,则达到修改该变量值的目的。
6.简述Python编程中缩进的作用。
Python使用缩进来表示代码块,不需要使用大括号{}。
缩进的空格数是可变的,但是同一个代码块的语句必须包含相同的缩进空格数。
7.Python模块的分类有哪些?
在Python中,模块分类分有三种:
(1)内置标准模块(又称标准库),执行help('
modules'
)可以查看所有python自带模块列表。
(2)第三方开源模块,可通过“pipinstall模块名”联网安装。
(3)自定义模块,即创建了一个.py文件,就可以称之为模块,可以在另一个程序里导入。
8.安装Python扩展numpy。
(1)在操作系统中切换工作目录到安装目录,进入Scripts文件夹,按住shift+右键打开命令行窗口
(2)输入pipinstallnumpy并执行
9.编写程序,用户输入一个四位自然数,输出其千位、佰位、十位和个位上的数字。
方法一:
x=int(input('
请输入一个四位数:
))
a=int(x/1000)
b=int(x/100%10)
c=int(x%100/10)
d=int(x%10)
print('
千位:
a)
百位:
b)
十位:
c)
个位:
d)
方法二:
x=input('
请输入一个四位自然数:
a,b,c,d=map(int,x)
print(a,b,c,d)
第三章课后习题
1.简述复合布尔表达式短路求值的特性。
python复合布尔表达式计算采用短路规则,即如果通过前面的部分已经计算出整个表达式的值,则后面的部分不再计算。
(a>
0)and(b/a>
2):
#若判断a>
0为不成立,则(b/a>
2)不再判断,若判断a>
0成立,再判断(b/a>
2)是否成立。
0)or(b/a>
#若判断(a>
0)成立,则不再判断(b/a>
2)是否成立,若判断完(a>
0)不成立,还要判断(b/a>
2)
2.编写程序,判断学生成绩等级,等级分为A~E,其中90分以上为A,80~89为B,70~79为C,60~69为D,60分一下为E。
n=int(input('
请输入学生分数:
))#使用input()函数,输入一个数字给n
ifn>
=90:
#使用if语句判断成绩等级
A'
elif80<
=n<
90:
B'
elif70<
80:
C'
elif60<
70:
D'
else:
E'
3.设计一个小游戏,让玩家输入一个数字,程序将告诉他,这个数是奇数,还是偶数,当用户输入“不玩了”则结束游戏。
输入一个数字,我将告诉你,它是奇数,还是偶数哦O(∩_∩)O~'
输入“不玩了”,将退出本程序'
exit='
不玩了'
#退出指令
content='
#输入内容
whilecontent!
=exit:
content=input('
请输入数字:
)#输入内容
ifcontent.isdigit():
number=int(content)
if(number%2==0):
该数是偶数'
else:
该数是奇数'
elifcontent!
输入的必须是数字哦'
4.编写程序,输出200以内的所有素数和素数的总个数。
num=0
foriinrange(2,200):
k=True
forjinrange(2,i):
#forjinrange(2,i/2+1)
if(i%j==0):
k=False
break
if(k==True):
print("
%d"
%i)
num=num+1
print("
素数个数%d"
%num)
5.简述生成器的作用。
生成器(Generator)是为了内存限制,列表容量有限的问题,Python中引入的一种“一边循环,一边计算”的新机制,即当用户需要使用某个对象时,Python才根据事先设计好的规则开辟内存空间创建这个对象供用户使用,而不是像列表一样事先将所有的对象都创建完毕之后再提供给用户使用。
生成器可以理解为用于生成列表、元组等可迭代对象的机器。
没启动之前,在Python中只是一个符号。
也就是说,生成器还不是实际意义上的列表,因此比列表更加节省内存空间,必要时,生成器可以按照你的需要去生成列表。
6.编写程序,获取1到50内可以被3整除的整数。
gen=(iforiinrange(1,50)ifi%3==0)
fornumingen:
print(num)
7.编写程序,用户指定要查找的文件和内容,将文件中包含要查找内容的每一行都输出到屏幕。
defcheck_file(filename,aim):
#创建一个生成器函数,并创建2个位置参数
withopen(filename,encoding='
utf-8'
)asf:
#打开指定文件
foriinf:
#循环指定的文件
ifaimini:
#如果文件中包含指定内容
yieldi#就将该文件返回
get=check_file('
2.py'
'
math'
)#函数外部可以直接指定要查找的文件和内容
foriinget:
print(i.strip())
第四章课后习题
1.列表中可以通过来得到相应的元素值。
索引值
2.编写程序,实现用户登录系统的验证功能,每个用户有3次登录机会,用户名和密码均正确,则提示“登陆成功”,用户名或密码错误提示登录有无,并提示用户剩余的登录次数。
users=['
root'
westos'
]
passwds=['
123'
456'
foriinrange(3):
name=input('
请输入用户名:
print(name)
passwd=input('
请输入用户密码:
ifnameinusers:
count=users.index(name)
ifpasswd==passwds[count]:
登陆成功'
密码错误登陆失败,还有%d次机会,请重新登陆'
%(2-i))
用户名不存在,还有%d次机会,请重新登陆'
三次登陆机会用完'
3.截取列表变量中的部分元素,并返回一个子列表变量,可以使用。
切片
4.假设列表a=[1,2,3,4,5,6,7,8,9],那么a[2:
5]的值是。
[3,4,5]
5.编写程序,实现用户输入一个列表和2个整数作为下标,然后返回列表中介于2个下标之间的元素组成的新列表。
例如用户输入[1,2,3,4,5,6,7,8,9]和3,7,程序输出[4,5,6,7,8]。
a=input('
请输入一个列表:
a=eval(a)
start,end=eval(input('
请输入下标的开始和结束位置:
print(a[start:
end+1])
defnewlist(a,b,c):
print(a[start:
a=eval(input('
newlist(a,start,end)
6.使用列表对象方法可以在列表尾部添加新的元素。
append()
7.列表alist包含自然数1-10的平方,可以使用列表推导式定义该列表。
alist=[value**2forvalueinrange(1,11)]
8.使用字典的对象方法可以返回字典的键值。
value()
9.编写程序,将列表[11,22,33,44,55,66,77,88,99,90]中将所有大于66的值保存至字典的第一个key中,将小于66的值保存至第二个key的值中。
即:
{'
k1'
:
大于66的所有值,'
k2'
小于66的所有值}
item=[11,22,33,44,55,66,77,88,99,90]
item1=[]
item2=[]
items={'
foriinitem:
ifi<
=66:
item1.append(i)
item2.append(i)
item1,'
item2}
print(items)
10.某班学生Python成绩存储在字典student中,其中学生名字为键,成绩为键值,编写程序,实现查询指定学生成绩的功能,并打印该班最高分学生信息和本班平均成绩。
成绩信息输出格式为“学生姓名:
成绩”。
student={'
Cain'
90,'
Jack'
86,'
Harry'
77}
name=input('
输入查询的名字:
ifnameinstudent:
学生姓名:
{0}成绩:
{1}'
.format(name,student[name]))
查无此人'
最高分学生信息:
forkey,valueinstudent.items():
ifvalue==max(student.values()):
.format(key,value))
average=sum(student.values())/len(student.values())
平均成绩:
average)
第五章课后习题
1.在操作字符串时,需要把两个或多个字符串连接成一个字符串,可以使用对于这种需求,连接操作符或者字符串对象方法实现。
+join()
2.编写程序,由给定字符串随机生成一个6位密码。
importrandom
s="
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!
@#$%^&
*"
pwd='
.join((random.choice(s)foriinrange(6)))
print(pwd)
3.编写程序,把AbadworkmanquarrelswithhisTools.中的T替换为t。
s='
AbadworkmanquarrelswithhisTools.'
s=s.replace('
T'
print(s)
importre
result=re.sub(r'
\bT'
s)
print(result)
4.简单说明什么是正则表达式以及其作用。
正则表达式是用来描述或者匹配一系列符合某个句法规则的字符串。
在很多文本编辑器或其他工具里,正则表达式通常被用来检索或替换那些符合某种模式的文本内容。
5.有一国外电话号码“2004-959-559#这是一个国外电话号码”,编写程序,去除其中的注释和“-”。
phone="
2004-959-559#这是一个国外电话号码"
#删除字符串中的Python注释
num=re.sub(r'
#.*$'
"
phone)
电话号码是:
"
num)
#删除非数字(-)的字符串
\D'
电话号码是:
第六章课后习题
1.在程序设计中,函数的使用有哪些作用?
请具体阐述。
(1)提升代码的复用率。
程序设计中,一些代码的功能是相同的,操作是一样的,只不过针对的数据不一样。
此种情况下,可以将这种功能写成一个函数模块,要使用此功能时只需调用这个函数模块就可以了,不需要再重复地编写同样的代码,实现了代码的复用。
代码复用可以解决大量同类型的问题,避免重复性操作,提高编程效率。
(2)提升代码的可维护性。
使用函数后,实现了代码的复用,某个功能需要核查或修改时,只需要核查或修改此功能相对应的函数就可以了。
对功能的修改可以使调用该函数的所有模块同时生效,极大提升了代码的可维护性。
通过提升代码的复用率和可维护性,实现了编码效率的极大提升。
2.在Python语言中,定义函数的具体规则有哪些?
(1)函数代码块以def关键字开头,后接函数标识符名称和形参列表;
(2)任何传入的参数和自变量必须放在圆括号内;
(3)函数的第一行语句可以选择性地使用文档字符串(即函数说明);
(4)函数内容以冒号起始,并且严格统一缩进;
(5)函数都有返回值,默认返回None。
3.在Python语言中,根据函数定义者的不同,函数有哪些分类?
各自作用是什么?
(1)在Python语言中,根据函数定义者的不同,函数分为内建函数和自定义函数。
内建函数即系统已经定义好的函数,开发者不能修改但可以直接调用。
自定义函数即开发者自己定义的函数,可以修改和调用。
内建函数和自定义函数都属于Python语言中的常见函数,其定义和调用方式也是完全相同的。
(2)Python语言中自带的函数叫做内建函数。
内建函数对大部分常用操作进行有效封装,可以直接调用,为开发提供了极大便利。
(3)当内建函数不能满足要求时,开发者可以根据实际需要自定义函数。
函数自定义完成后,开发者可以在其他代码处通过函数名调用。
4.简述函数式编程的概念和特点。
(1)概念:
函数式编程是一种编程范式,是面向数学的抽象,其将计算描述为一种表达式求值。
要注意的是,函数式编程中的“函数”不是指计算机中的函数,而是指数学中的函数,即自变量的映射。
(2)特点:
允许把函数本身作为参数传入另一个函数,还允许返回一个函数。
Python语言对函数式编程提供部分支持。
5.请定义计算矩形面积的函数area()和打印欢迎信息的函数welcome(),并尝试调用其功能。
#计算面积的函数
defarea(width,height):
returnwidth*height
#输出欢迎信息的函数
defwelcome(name):
Welcome"
name)
#调用函数
welcome("
Runoob"
area(4,5)
第七章课后习题
1.什么是面向对象语言和面向过程语言?
面向对象语言(Object-OrientedLanguage)是一类以对象作为基本程序结构单位的程序设计语言,对象是程序运行时刻的基本成分。
面向对象是把构成问题事务分解成各个对象,依靠各个对象之间的交互推动程序执行,进而实现问题的解决。
其有三大特征,封装,继承,多态。
面向过程语言(ProcedureOrientedLanguage)也称为结构化程序设计语言,是高级语言的一种。
面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候再依次调用,类似流水线的工作原理。
它的主要观点是采用自顶向下、逐步求精的程序设计方法,使用三种基本控制结构构造程序,即顺序、选择、循环。
2.请阐述类和对象之间的关系,并举例说明。
(1)类指的是对客观实体的抽象,它将相似的实体整合在一起,形成了一个类,类是泛指
(2)对象指的是一个对应的物体,它是类的实例,对象是特例(3)举例:
狗和猫都可以是我们的宠物,宠物就是一个类,猫和狗就是一个对象。
类和对象的关系就是,类是对象的抽象,对象是类的具体实例。
3.请描述Python语言中类、对象、属性的命名规范,并举例说明。
【参考答案】:
(1)类名表示实例的抽象,命名时首字母大写,例如Classa;
(2)属性使用名词作为名字,例如name;
(3)方法名一般指对属性的操作,其命名规则一般采用动词加属性名称形式,例如getName
4.请说明Python中类的方法有哪些种类。
(1)类方法也包括公有方法、私有方法、类方法和静态方法,内置方法(也叫魔术方法)
(2)公有方法:
公有方法不能被类直接调用,需要使用实例化对象调用。
(3)私有方法:
私有方法不能被外部的类和方法调用,其定义和私有属性的定义相同。
(4)类方法:
被classmethod函数调用或被@classmethod装饰器修饰的方法;
能被类所调用,也能被对象所调用。
(5)静态方法:
相当与“全局方法”,可以被类直接调用,也可以被所有实例化对象共享。
(6)内置方法:
所有以双下划线“__”包起来的方法,也称为“魔术方法”。
这些方法在实例化时会自动调用,
5.在Python中,类方法和静态方法有什么区别?
类方法和静态方法在使用方法上相同,有如下区别:
(1)静态方法不能使用self的方式调用。
(2)静态方法调用时会预先将类中用到的属性和方法进行加载,而类方法则是随调随用。
因此,类方法相比静态方法具有不占资源的优势,但是速度不及静态方法。
(3)静态方法调用类中的属性时需要使用“类名.属性”的格式。
6.在Python中,类间关系包括依赖、关联、继承三种,请分别举例实现。
(1)依赖:
#植物大战僵尸简易版
classZhiWu:
#创建植物类
def__init__(self,name,hp,attack):
#初始化属性