Python课后题答案第1章Python概述
一、填空题
1.对象
2.可移植
3.字节码
4.UTF-8
二、判断题
1.对
2.对
3.对
4.对
5.错
6.错
7.对
8.错
9.对
10.错
三、选择题
1. C
2.ABCD
3. B
4. C
5. D
四、简答题。
1.Python具有的特点如下:
●简单易学
●开源
●高级语言
●可移植性
●解释性
●面向对象
●可扩展性
●丰富的库
●规范的代码
2. Python可以应用在下列领域:
●web应用开发
●操作系统管理、服务器运维的自动化脚本
●科学计算
●桌面软件
●服务器软件(网络软件)
●游戏
●构思实现,产品早期原型和迭代
3. Python2.x和Python3.x的区别如下:
(1)在python2.x中,输出数据使用的是print语句。但是在python3.x中,print语句没有了,取而代之的是print()函数
(2)python2有ASCII Str()类型,unicode()是单独的,不是byte类型。在python3.x版本的源代码中,默认使用的是UTF-8编码,从而可以很好的支持中文字符。
(3)在python 2.x中,使用运算符/进行除法运算,整数相除的结果是一个整数,浮点数除法会保留小数点的部分得到一个浮点数的结果。在python 3.x 中使用运算符/进行除法,整数之间的相除,结果也会是浮点数。
(4)相比python2.x版本,python3.x版本在异常方面有很多改变:
?在python2.x版本,所有类型的对象都是直接被抛出的,但是,在python3.x版本中,只有继承自BaseException的对象才可以被抛出。
?在python2.x版本中,捕获异常的语法是except exc,var。在python3.x 版本中,引入了as关键字,捕获异常的语法变更为except exc as var。
?在python2.x版本中,处理异常使用raise Exception(args)。在python3.x 版本中,处理异常使用raiseException,args。
?python3.x取消了异常类的序列行为和.message属性。
(5)在Python 3.x中,表示八进制字面量的方式只有一种,并且必须写0o1000这样的方式,原来01000的方式不能使用了。
(6)Python 2.x中不等于有两种写法!= 和<>;但是,Python 3.x中去掉了<>, 只有!=一种写法
(7)python3.x去除了long类型,现在只有一种整型int,但它的行为就像是python2.x版本的long。
4. Python程序的执行原理如图所示。
python解释器将源代码转换为字节码,然后把编译好的字节码转发到Python虚拟机(PVM)中进行执行
5. IPython的特点如下:
●IPython具有卓越的Python shell,其性能远远优于标准Python的shell。
●IPython支持变量自动补全,自动缩进,支持bash shell 命令,内置了
许多很有用的功能和函数。
●IPython提供了基于控制台命令环境的定制功能,可以十分轻松地将交
互式Python shell包含在各种Python应用中,甚至可以当作系统级shell
来使用。
五、编程题。
1.代码如下:
print("+++++++++++")
print("+ +")
print("+++++++++++")
2. 代码如下:
print("学Python,来传智播客黑马程序员") print("学Python,来传智播客黑马程序员") print("学Python,来传智播客黑马程序员") print("学Python,来传智播客黑马程序员") print("学Python,来传智播客黑马程序员")
第2章Python基本语法
一、填空题
1.int
2.True False
3.8
4. 1.2e5
5.00000010
6.0b10100
7.type()
8. 1
9.20
10.4.34×103
二、判断题
1.对
2.错
3.对
4.对
5.错
6.错
7.对
8.对
9.对
10.对
三、选择题
1. D
2. D
3. A
4. A
5. C
6. A
7. B
8. B
9. C
10.D
四、简答题
1. Python中标识符的命名规则如下所示:
●标示符由字母、下划线和数字组成,且数字不能开头
●python中的标识符是区分大小写的。
●python中的标示符不能使用关键字
2. 简述Python中的数字类型有:int(整型)、long(长整型)、float(浮点数)、complex(复数)
五、编程题
1. 代码如下:
import math
a=float(input("请输入斜边 1 的长度")) #输入实数
b=float(input("请输入斜边 2 的长度")) #输入实数
c=a*a+b*b #计算,得到的是斜边的平方
c=sqrt(c) #开方,得到的是斜边长
print("斜边长为:",c) #显示,一项是字符串,一项是 c 表示的斜边长
2. 代码如下:
# 用户输入
x = input('输入 x 值: ')
y = input('输入 y 值: ')
# 不使用临时变量
x,y = y,x
print('交换后 x 的值为: {}'.format(x)) print('交换后 y 的值为: {}'.format(y))
第3章Python常用语句
一、填空题
1.break
2.elif
3.continue
4.True
5.pass
二、判断题
1.错
2.对
3.对
4.对
5.对
三、选择题
1. C
2. C
3. C
4. C
5. D
四、简答题
1.Pass语句Python中的pass是空语句,它的出现是为了保持程序结构的完整
性。pass 不做任何事情,一般用做占位语句。
2.break语句用于结束整个循环;continue的作用是用来结束本次循环,紧接
着执行下一次的循环。
五、编程题
1.代码如下:
for i in range(1,11):
print(i)
2.代码如下:
a=int(input("请输入一个数:"))
if a>0:
print("a是一个正数")
elif a<0:
print("a是一个负数")
else:
print("a等于0")
3.代码如下:
i=1
while i<10:
j=1
while j<=i:
print("%d*%d=%-2d "%(i,j,i*j),end='')
j+=1
print("\n")
i+=1
第4章字符串
一、单选题
1.A
2.D
3.B
4.C
5.C
6.B
7.A
二、判断题
1.对
2.对
3.错
4.对
5.错
6.错
7.错
三、填空题
1.文本
2.转义
3.input
4.切片
5.开
四、程序分析题
1.答:不能编译通过。因为num1和num2属于字符串类型,不能执行取余操作。
2.结果为:J
3.答:由于没有在字符串中找到子串,index方法默认会抛出ValueError异常。
4.结果为:Hello World(默认删除两头的空格)
5.结果为:HelloPython
五、编程题
1.答案:
myStr = input("请输入任意字符串:")
num = 0
for s in myStr:
if s.isdigit():
num += 1
print(num)
2.答案:
week = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
while True:
myStr = input("请输入任意一个字母:")
upMyStr = myStr.upper()
for weekS in week:
if upMyStr == weekS[0]:
if weekS.startswith("M"):
print("星期一")
elif weekS.startswith("W"):
print("星期三")
elif weekS.startswith("F"):
print("星期五")
elif weekS.startswith("T") or weekS.startswith("S"): secondStr = input("请再输入任意一个字母:")
newStr = upMyStr+secondStr
print(newStr)
for weekStr in week:
if weekStr.find(newStr,0,2) != -1:
if newStr == "Tu":
print("星期二")
elif newStr == "Th":
print("星期四")
elif newStr == "Sa":
print("星期六")
elif newStr == "Su":
print("星期日")
break
break
3.答案:
str = "Hello,welcome to itheima!!"
print(str.count("o"))
第5章列表、元组和字典
一、单选题
1. D
2. B
3. C
4. D
5. D
6. C
7. A
8. B
9. C
二、判断题
1.对
2.对
3.对
4.对
5.错
6.错
7.错
三、填空题
1.字典
2.字典,列表
3.not in
4.sort
5.小括号
四、简答题
1.答案:
(1)外形:列表是中括号括起来的数据;元组是圆括号括起来的数据;字典是花括号括起来的数据
(2)存储结构:列表可以存储多个不同类型的数据,以逗号分隔;元组同样能存储多个不同类型的数据,以逗号分隔;字典能存储多个键值对,以逗号分隔,
键是唯一的,值是任何类型的。
(3)访问方式:列表可以通过下标索引访问元素,索引从0开始;元组可以通过下标索引访问值,索引从0开始;字典通过键来访问值。
(4)是否可变类型:列表是可变类型,列表是不可变类型,字典是可变类型。
五、程序分析题
1.答案:程序运行错误,元组不能使用下标增加元素。
2.结果为:3
3.结果为:1,26
六、编程题
1.答案:
def message():
myStr = input("请输入密码,只能为字母和数字:")
if myStr.isalnum():
print("符合要求")
else:
print("不符合要求")
2.答案:
arr = []
evenStr = ""
oddStr = ""
message = input("请输入任意字符串:")
for string in message:
arr.append(string)
for eStr in (arr[::2]):
evenStr = evenStr+eStr
for oStr in (arr[1::2]):
oddStr = oddStr+oStr
print(evenStr+oddStr)
3.答案:
arr = []
def count():
myStr = input("请输入只包含字母的字符串:") if myStr.isalpha():
newStr = myStr.lower()
for string in newStr:
arr.append(string)
a = {}
for i in arr:
if arr.count(i) >= 1:
a[i] = arr.count(i)
print(a)
else:
print("输入的内容有误")
count()
4.答案:
arr = []
result = ""
myStr = input("请输入字符串:")
for string in myStr:
arr.append(string)
last = arr[-1]
arr.remove(last)
arr.insert(0,last)
for new in arr:
result = result + new
print(result)
5.答案:
arr = []
length = int(input("请要输入数字的总个数(必须为奇数):"))
i = 0
while i < length:
num = int(input("输入第%d个数字:"%(i+1)))
arr.append(num)
i+=1
arr.sort()
index = int(length/2)
print(arr[index])
6.答案:
第一种:
arr = [1,2,3,4,5]
arr.reverse()
print(arr)
第二种:
arr = [1,2,3,4,5]
arr.sort(reverse=True)
print(arr)
7.答案:
arr = []
length = int(input("请输入数字的总个数:"))
i = 0
while i < length:
num = int(input("输入第%d个数字:"%(i+1)))
arr.append(num)
i+=1
print("排序前:%s"%arr)
# 对列表排序
for i in range(length):
flag = 0
for j in range(1,length):
if arr[j-1] > arr[j]:
arr[j-1],arr[j] = arr[j],arr[j-1]
flag = 1
if not flag:
break
print("排序后:%s"%arr)
8.答案:
arr = []
length = int(input("请输入列表的总个数:"))
i = 0
while i < length:
element = input("输入第%d个元素:"%(i+1))
arr.append(element)
i+=1
# 列表转为集合
newList = set(arr)
print(newList)
9.答案:
def add(a, b):
# 下面两行保证输入的a和b是维数相同的矩阵,根据实际情况不要也可以
assert (len(a) == len(b))
assert (all([len(a[i]) == len(b[i]) == len(a[0]) for i in range(len(a))])) i, j = len(a), len(a[0])
c = [[0] * j] * i
for m in range(i):
for n in range(j):
c[m][n] = a[m][n] + b[m][n]
return c
a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
b = [[9, 8, 7], [6, 5, 4], [3, 2, 1]]
c = add(a, b)
print(c)
10.答案:
dic = {}
i=0
while i<3:
number = input("输入学生学号:")
name = input("输入学生姓名:")
dic.__setitem__(number,name)
i+=1
print("排序前:%s"%dic)
def dict2list(dic:dict):
''' 将字典转化为列表 '''
keys = dic.keys()
vals = dic.values()
lst = [(key, val) for key, val in zip(keys, vals)]
return lst
new = sorted(dict2list(dic), key=lambda x:x[0], reverse=False) print("排序后:%s"%new)
11.答案:
def delMale(dict):
keys = []
values = []
for (key,value) in dict.items():
keys.append(key)
values.append(value)
for value in values:
if value == 0:
index = values.index(value)
arrKey = keys[index]
del dict[arrKey]
values[index] = 3
keys[index] = "占位"
dic = {"小明":0, "小红":1,"小兰":1,"小白":0} print("删除前:%s"%dic)
delMale(dic)
print("删除后:%s"%dic)
12.答案:
arr = [12,3,37,7,91,67,27,45,6]
def delPrime(arr):
for element in arr:
# 质数大于 1
if element > 1:
# 查看因子
for i in range(2, element):
if (element % i) == 0:
break
else:
arr.remove(element)
delPrime(arr)
print(arr)
第6章函数
一、单选题
1. C
2. D
3. C
4. A
5. C
6. D
二、判断题
1.错
2.对
3.对
4.错
5.对
6.对
7.错
8.对
三、填空题
1.逗号
2.return
3.return
4.不定长
5.嵌套
6.局部
7.整个程序
8.global
四、简答题
1.答案:
局部变量:
(1)函数内部定义的变量;
(2)作用域是函数的内部。
全局变量:
(1)函数外部定义的变量;
(2)作用域是整个程序。
2.答案:
(1)以def关键字开头,后面接函数标识符名称和圆括号;
(2)给函数起名字的时候,规则跟变量的名字是一样的;
(3)任何传入参数和自变量必须放在圆括号中间;
(4)函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明;
(5)函数内容以冒号起始,并且缩进;
(6)return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回None。
五、程序分析题
1.结果为100
2.结果为:200
3.结果为:200,100
六、编程题
1.答案:
def getMax():
num1 = int(input("请输入第1个整数:"))
num2 = int(input("请输入第2个整数:"))
num3 = int(input("请输入第3个整数:"))
temp = 0 # 临时变量,存放中间产生的第2大数值 if num1 > num2:
temp = num1
else:
temp = num2
if temp>num3:
return "其中最大值为:"+ str(temp)
else:
return "其中最大值为:"+ str(num3)
maxValue = getMax()
print(maxValue)
2.答案:
def sum(n):
res = 0
while n >= 1:
if n%2 == 0:
res -= 1.0/(n*(n+1))
else:
res += 1.0/(n*(n+1))
n-=1
return res
num = int(input("请输入一个整数:"))
print(sum(num))
3.答案:
def is_palindrome(n):
n=str(n)
m=n[::-1]
return n==m