前言
本文只是简单的整理了一下课后习题的编程题,具体的填空、选择、判断可以见:Python快速编程入门课后习题答案
第一章
1、编写一个Python程序,输出如下图效果。
++++++++++
+ +
++++++++++
-
print(
"+++++++++++")
-
print(
"+ +")
-
print(
"+++++++++++")
2、编写一个Python程序,输出如下语句。
学Python,来传智播客黑马程序员
学Python,来传智播客黑马程序员
学Python,来传智播客黑马程序员
学Python,来传智播客黑马程序员
学Python,来传智播客黑马程序员
-
print(
"学Python,来传智播客黑马程序员")
-
print(
"学Python,来传智播客黑马程序员")
-
print(
"学Python,来传智播客黑马程序员")
-
print(
"学Python,来传智播客黑马程序员")
-
print(
"学Python,来传智播客黑马程序员")
第二章
1、输入直角三角形的两个直角边的长度a、b,求斜边c的长度。
-
import math
-
a=float(input(
"请输入斜边 1 的长度"))
#输入实数
-
b=float(input(
"请输入斜边 2 的长度"))
#输入实数
-
c=a*a+b*b
#计算,得到的是斜边的平方
-
c=math.sqrt(c)
#开方,得到的是斜边长
-
print(
"斜边长为:",c)
#显示,一项是字符串,一项是 c 表示的斜边长
2、编写一个程序,用于实现两个数的交换。
-
# 用户输入
-
x = input(
'输入 x 值: ')
-
y = input(
'输入 y 值: ')
-
# 不使用临时变量
-
x,y = y,x
-
print(
'交换后 x 的值为: {}'.format(x))
-
print(
'交换后 y 的值为: {}'.format(y))
第三章
1、编写一个程序,使用for循环输出0~10之间的整数。
-
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
第四章
1、接收输入的一行字符,统计出字符串中包含数字的个数。
-
myStr = input(
"请输入任意字符串:")
-
num =
0
-
for s
in myStr:
-
if s.isdigit():
-
num +=
1
-
print(num)
2、请输入星期几的第1个字母,用来判断是星期几,如果第1个字母一样,则继续判断第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"))
第五章
1、编写一个函数,用于判断用户输入字符串是否由小写字母和数字构成。
-
def message():
-
myStr = input(
"请输入密码,只能为小写字母和数字:")
-
if myStr.isalnum()
and myStr.lower() == myStr:
-
print(
"符合要求")
-
else:
-
print(
"不符合要求")
2、请根据下述需求,编写一个程序。
用户输入一个字符串,将下标为偶数的字符提出来合并为一个新的字符串A,再将下标为奇数的字符提出来合并成为一个新的字符串B,再将字符串A和B连接起来并且输出。
-
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、请编写一个程序,用于统计字符串中每个字母出现的次数(字母忽略大小写,a和A看做是一个字母),统计出的结果,请按照[‘a’:3,’b’:2]的格式输出。
-
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 = []
-
n = int(input(
"请输入列表元素的个数(奇数):"))
-
for i
in range(n):
-
num = int(input(
"请输入第%d个数:"%(i+
1)))
-
arr.append(num)
-
arr.sort()
-
print(
"该列表中间位置的数字为:",arr[n//
2])
6、已知info=[1,2,3,4,5],请通过两种编程方法,将列表变成info=[5,4,3,2,1]。
-
#第一种:
-
arr = [
1,
2,
3,
4,
5]
-
arr.reverse()
-
print(arr)
-
#第二种:
-
arr = [
1,
2,
3,
4,
5]
-
arr.sort(reverse=
True)
-
print(arr)
7、请编写一个函数满足下列需求:
用户输入n,然后输入n个整数到列表中,列表中的n个整数需要使用冒泡进行排序,并将排序后的结果输出。
-
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、假设有两个3×3的矩阵,请编写一个程序,计算这两个矩阵的和并输出。
-
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)
-
# 正确的版本
-
arr1 = [
12,
3,
37,
7,
91,
67,
27,
45,
6]
-
arr2 = [
12,
3,
37,
7,
91,
67,
27,
45,
6]
-
def delPrime(arr1):
-
for element
in arr2:
-
# 质数大于 1
-
if element >
1:
-
# 查看因子
-
for i
in range(
2, element):
-
if (element % i) ==
0:
-
break
-
else:
-
arr1.remove(element)
-
delPrime(arr1)
-
print(arr1)
第六章
1、定义一个getMax()函数,返回三个数(从键盘输入的整数)中的最大值。
例如:
请输入第1个整数:10
请输入第2个整数:15
请输入第3个整数:20
其中最大值为:20
-
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、编写函数,求出“1/(1×2)-1/(2×3)+1/(3×4)-1/(4×5)+···”前n项的和,函数以n为参数,它是用户输入的。
-
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、回文数是一个正向和逆向都相同的整数,如 123454321、9889。编写函数判断一个整数是否是回文数。
-
def is_palindrome(n):
-
n = str(n)
-
m = n[::
-1]
-
return n == m
-
result = is_palindrome(
1247321)
-
print(result)
4、编写函数,判断输入的三个数字是否能构成三角形的三个边。
-
def sjx(a, b, c):
-
if (a + b > c
and a + c > b
and b + c > a):
-
return
"能构成三角形"
-
else:
-
return
"不能构成三角形"
-
result1 = sjx(
3,
4,
5)
-
print(result1)
-
result2 = sjx(
1,
1,
2)
-
print(result2)
5、编写函数,求两个正整数的最小公倍数。
-
# 定义函数
-
def lcm(x, y):
-
# 获取最大的数
-
if x > y:
-
greater = x
-
else:
-
greater = y
-
while(
True):
-
if((greater % x ==
0)
and (greater % y ==
0)):
-
lcm = greater
-
break
-
greater +=
1
-
return lcm
-
# 获取用户输入
-
num1 = int(input(
"输入第一个数字: "))
-
num2 = int(input(
"输入第二个数字: "))
-
print( num1,
"和", num2,
"的最小公倍数为", lcm(num1, num2))
第七章
1、已知有个列表[1,2,3,4,5],让列表的每个元素加1,把结果不能被2整除的元素筛选出来。
-
result = filter(
lambda x:(x+
1)%
2, [
1,
2,
3,
4,
5])
-
print(result)
第八章
1、读取一个文件,显示除了以#开头的行以外的所有行。
-
new = []
-
f = open(
'itheima.txt',
'r')
#首先要有这个函数
-
contents = f.readlines()
-
for ele
in contents:
-
if ele.startswith(
'#') ==
False:
-
print(ele)
-
f.close()
2、制作一个“密码簿”,其可以存储一个网址(如www.itcast.cn)和一个密码(如123456),请编写程序完成这个“密码簿”的增删查改功能,并且实现文件存储功能。
-
# 密码薄
-
passwordBook = {}
-
def add(password, value):
-
if password
not
in passwordBook.keys():
-
passwordBook[password] = value
-
save()
-
else:
-
print(
"该密码已存在")
-
def delete(password):
-
if password
in passwordBook.keys():
-
del passwordBook[password]
-
print(passwordBook)
-
save()
-
else:
-
print(
"该密码不存在")
-
def modify(password, newValue):
-
if password
in passwordBook.keys():
-
passwordBook[password] = newValue
-
print(passwordBook)
-
save()
-
else:
-
print(
"该密码不存在")
-
def find(value):
-
if value
in passwordBook.values():
-
print(
"该网址存在")
-
else:
-
print(
"该网址不存在")
-
def save():
-
f = open(
"password.txt",
"w")
-
f.write(str(passwordBook))
-
f.close()
-
def printInfo():
-
print(
"密码簿的功能如下:")
-
print(
"1.添加")
-
print(
"2.删除")
-
print(
"3.修改")
-
print(
"4.查找")
-
i =
0
-
while i<
5:
-
printInfo()
-
num = int(input(
"请输入要选择的功能:"))
-
if num==
1:
-
web = input(
"请输入存入的网址:")
-
password1 = input(
"请输入密码:")
-
add(password1, web)
-
print(passwordBook)
-
elif num==
2:
-
password2 = input(
"请输入密码:")
-
delete(password2)
-
elif num==
3:
-
password3 = input(
"请输入密码:")
-
value3 = input(
"请输入新的网址:")
-
modify(password3,value3)
-
elif num==
4:
-
value4 = input(
"请输入要查找的网址:")
-
find(value4)
-
i+=
1
3、已知文本文件中存放了若干数字,请编写程序读取所有的数字,排序以后进行输出。
-
f = open(
"itheima.txt",
"r")
#首先要有这个文件
-
content = list(eval(f.read()))
-
content.sort()
-
print(content)
4、打开一个英文的文本文件,将该文件中的每一个英文字母加密后写入到一个新的文件。加密的方法是:将A变成B,B变成C,······,Y变成Z,将Z变成A;a变成b,b变成c,······,y变成z,z变成a,其他字符不变化。
-
f = open(
"itheima.txt",
"r")
-
content = f.read()
-
newStr =
""
-
for string
in content:
-
temp = ord(string)
-
if temp
in range(
65,
91):
-
if temp ==
90:
-
char1 = chr(temp
-25)
-
newStr += char1
-
else:
-
char2 = chr(temp+
1)
-
newStr += char2
-
elif temp
in range(
97,
123):
-
if temp ==
122:
-
char3 = chr(temp
-25)
-
newStr += char3
-
else:
-
char4 = chr(temp +
1)
-
newStr += char4
-
else:
-
newStr = newStr+string
-
f.close()
-
f2 = open(
"itheima-加密后.txt",
"w")
-
f2.write(newStr)
-
f2.close()
5、打开一个英文文本文件,编写程序读取其内容,并把其中的大写字母变成小写字母,小写字母变成大写字母。
-
f = open(
r'd:\1.txt',
'r')
-
s = f.readlines()
-
f.close()
-
r = [i.swapcase()
for i
in s]
-
f = open(
r'd:\2.txt',
'w')
-
f.writelines(r)
-
f.close()
6、编写程序,把包含学生成绩的字典保存为二进制文件,然后再读取内容并显示。
-
import pickle
-
d = {
'张三':
98,
'李四':
90,
'王五':
100}
-
print(d)
-
f = open(
'score.dat',
'wb')
-
pickle.dump(
1,f)
-
pickle.dump(d,f)
-
f.close
-
f = open(
'score.dat',
'rb')
-
pickle.load(f)
-
d = pickle.load(f)
-
f.close()
-
print(d)
第九章
1、假设成年人的体重和身高存在此种关系:
身高(厘米)-100=标准体重(千克)
如果一个人的体重与其标准体重的差值在正负5%之间,显示“体重正常”,其他显示“体重超标”或者“体重不超标”。编写程序,能处理用户输入的异常,并且使用自定义异常类来处理身高小于30cm,大于250cm的异常情况。
-
class HeightException(Exception):
-
pass
-
try:
-
height = int(input(
"请输入您的身高:"))
-
if height<
30
or height>
250:
-
raise HeightException
-
weight = int(input(
"请输入您的体重:"))
-
weightS = height
-100
-
if weight > weightS
and weight-weightS <
0.05*weightS:
-
print(
"体重达标")
-
elif weight < weightS
and weightS-weight <
0.05*weightS:
-
print(
"体重达标")
-
else:
-
print(
"体重不达标")
-
except HeightException:
-
print(
"您输入的身高有误")
2、录入一个学生的成绩,把该学生的成绩转换为A优秀、B良好、C合格、D不合格的形式,最后将该学生的成绩打印出来。要求使用assert断言处理分数不合理的情况。
-
try:
-
score = int(input(
"请输入学生的成绩:"))
-
if score>=
90
and score<=
100:
-
print(
"A:优秀")
-
elif score>=
80
and score<
90:
-
print(
"B:良好")
-
elif score>=
60
and score<
80:
-
print(
"C:合格")
-
else:
-
assert score>
60,
"D:不及格"
-
except Exception
as result:
-
print(
"低于60分:\n",result)
第十章
1、建一个模块文件。在该文件中,定义一个函数,用于交换两个数的值。
-
def changeNum1AndNum2(num1, num2):
-
temp = num1
-
num1 = num2
-
num2 = temp
-
return (num1, num2)
第十一章
1、设计一个Circle(圆)类,包括圆心位置、半径、颜色等属性。编写构造方法和其他方法,计算周长和面积。请编写程序验证类的功能。
-
class Circle:
-
def __init__(self,tup, radius, color):
-
self.center = tup
-
self.radius = radius
-
self.color = color
-
def perimeter(self):
-
return
3.14 *
2 * self.radius
-
def area(self):
-
return
3.14 * self.radius * self.radius
-
circle = Circle((
0,
0),
5,
"蓝色")
-
print(circle.perimeter())
-
print(circle.area())
2、设计一个课程类,包括课程编号、课程名称、任课教师、上课地点等属性,把上课地点变量设为私有的,增加构造方法和显示课程信息的方法。
-
class Curriculum:
-
def __init__(self):
-
self.number =
1001
-
self.name =
"语文"
-
self.teacher =
"小明"
-
self.__address =
"2号教学楼3层305室"
-
def __str__(self):
-
return
"""
-
课程编号:%d
-
课程名称:%s
-
任课教师:%s
-
上课地点:%s
-
"""%(self.number,self.name,self.teacher,self.__address)
-
curri = Curriculum()
-
print(curri)
第十二章
1、设计一个表示学生的类:Student,该类的属性有)name(姓名,age(年龄),scores(成绩,包含语文、数学和英语三科成绩,每科成绩的类型为整数),另外此类还有3个方法。
(1)获取学生的方法:get_name(),返回类型为str。
(2)获取年龄的方法:get_age(),返回类型为int。
(3)返回3门科目中最高的分数:get_course(),返回类型为int。
-
class Student(object):
-
# 构造方法
-
def __init__(self, name, age, scores):
-
self.__name = name
# 姓名
-
self.__age = age
# 年龄
-
self.__scores = scores
# 分数
-
def get_name(self):
-
return self.__name
-
def get_age(self):
-
return self.__age
-
def get_course(self):
-
return max(self.__scores)
-
stu = Student(
'小丸子',
18, [
89,
90,
91])
-
print(
"姓名:%s"%(stu.get_name()))
-
print(
"年龄:%s"%(stu.get_age()))
-
print(
"最高分:%s"%(stu.get_course()))
2、设计一个表示动物的类:Animal,其内部有一个color(颜色)属性和call(叫)的方法。再设计一个表示Fish(鱼)类,该类中有tail(尾巴)和color属性,以及一个call(叫)方法。
提示: 让Fish类继承自Animal类,重写init和call方法。
-
class Animal(object):
-
def __init__(self, color):
-
self.color = color
#颜色
-
def call(self):
-
print(
"动物叫")
-
class Fish(Animal):
-
def __init__(self, color):
-
super().__init__(color)
-
self.tail =
True
-
def call(self):
-
print(
"-%s的鱼在吐泡泡-"%self.color)
-
fish = Fish(
"蓝色")
-
fish.call()
转载:https://blog.csdn.net/lzyws739307453/article/details/92851871