飞道的博客

Python快速编程入门课后程序题答案

987人阅读  评论(0)

前言

本文只是简单的整理了一下课后习题的编程题,具体的填空、选择、判断可以见:Python快速编程入门课后习题答案

第一章

1、编写一个Python程序,输出如下图效果。

++++++++++
+        +
++++++++++


  
  1. print( "+++++++++++")
  2. print( "+         +")
  3. print( "+++++++++++")

2、编写一个Python程序,输出如下语句。

学Python,来传智播客黑马程序员
学Python,来传智播客黑马程序员
学Python,来传智播客黑马程序员
学Python,来传智播客黑马程序员
学Python,来传智播客黑马程序员


  
  1. print( "学Python,来传智播客黑马程序员")
  2. print( "学Python,来传智播客黑马程序员")
  3. print( "学Python,来传智播客黑马程序员")
  4. print( "学Python,来传智播客黑马程序员")
  5. print( "学Python,来传智播客黑马程序员")

第二章

1、输入直角三角形的两个直角边的长度a、b,求斜边c的长度。


  
  1. import math
  2. a=float(input( "请输入斜边 1 的长度")) #输入实数
  3. b=float(input( "请输入斜边 2 的长度")) #输入实数
  4. c=a*a+b*b #计算,得到的是斜边的平方
  5. c=math.sqrt(c) #开方,得到的是斜边长
  6. print( "斜边长为:",c) #显示,一项是字符串,一项是 c 表示的斜边长

2、编写一个程序,用于实现两个数的交换。


  
  1. # 用户输入
  2. x = input( '输入 x 值: ')
  3. y = input( '输入 y 值: ')
  4. # 不使用临时变量
  5. x,y = y,x
  6. print( '交换后 x 的值为: {}'.format(x))
  7. print( '交换后 y 的值为: {}'.format(y))

第三章

1、编写一个程序,使用for循环输出0~10之间的整数。


  
  1. for i in range( 1, 11):
  2. print(i)

2、编写一个程序,判断用户输入的数是正数还是负数。


  
  1. a=int(input( "请输入一个数:"))
  2. if a> 0:
  3. print( "a是一个正数")
  4. elif a< 0:
  5. print( "a是一个负数")
  6. else:
  7. print( "a等于0")

3、编写一个程序,输出九九乘法表。


  
  1. i= 1
  2. while i< 10:
  3. j= 1
  4. while j<=i:
  5. print( "%d*%d=%-2d "%(i,j,i*j),end= '')
  6. j+= 1
  7. print( "\n")
  8. i+= 1

第四章

1、接收输入的一行字符,统计出字符串中包含数字的个数。


  
  1. myStr = input( "请输入任意字符串:")
  2. num = 0
  3. for s in myStr:
  4. if s.isdigit():
  5. num += 1
  6. print(num)

2、请输入星期几的第1个字母,用来判断是星期几,如果第1个字母一样,则继续判断第2个字母,以此类推。


  
  1. week = [ 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
  2. while True:
  3. myStr = input( "请输入任意一个字母:")
  4. upMyStr = myStr.upper()
  5. for weekS in week:
  6. if upMyStr == weekS[ 0]:
  7. if weekS.startswith( "M"):
  8. print( "星期一")
  9. elif weekS.startswith( "W"):
  10. print( "星期三")
  11. elif weekS.startswith( "F"):
  12. print( "星期五")
  13. elif weekS.startswith( "T") or weekS.startswith( "S"):
  14. secondStr = input( "请再输入任意一个字母:")
  15. newStr = upMyStr+secondStr
  16. print(newStr)
  17. for weekStr in week:
  18. if weekStr.find(newStr, 0, 2) != -1:
  19. if newStr == "Tu":
  20. print( "星期二")
  21. elif newStr == "Th":
  22. print( "星期四")
  23. elif newStr == "Sa":
  24. print( "星期六")
  25. elif newStr == "Su":
  26. print( "星期日")
  27. break
  28. break

3、编写一个程序,计算字符串中子串出现的次数。


  
  1. str = "Hello,welcome to itheima!!"
  2. print(str.count( "o"))

第五章

1、编写一个函数,用于判断用户输入字符串是否由小写字母和数字构成。


  
  1. def message():
  2. myStr = input( "请输入密码,只能为小写字母和数字:")
  3. if myStr.isalnum() and myStr.lower() == myStr:
  4. print( "符合要求")
  5. else:
  6. print( "不符合要求")

2、请根据下述需求,编写一个程序。

用户输入一个字符串,将下标为偶数的字符提出来合并为一个新的字符串A,再将下标为奇数的字符提出来合并成为一个新的字符串B,再将字符串A和B连接起来并且输出。


  
  1. arr = []
  2. evenStr = ""
  3. oddStr = ""
  4. message = input( "请输入任意字符串:")
  5. for string in message:
  6. arr.append(string)
  7. for eStr in (arr[:: 2]):
  8. evenStr = evenStr+eStr
  9. for oStr in (arr[ 1:: 2]):
  10. oddStr = oddStr+oStr
  11. print(evenStr+oddStr)

3、请编写一个程序,用于统计字符串中每个字母出现的次数(字母忽略大小写,a和A看做是一个字母),统计出的结果,请按照[‘a’:3,’b’:2]的格式输出。


  
  1. arr = []
  2. def count():
  3. myStr = input( "请输入只包含字母的字符串:")
  4. if myStr.isalpha():
  5. newStr = myStr.lower()
  6. for string in newStr:
  7. arr.append(string)
  8. a = {}
  9. for i in arr:
  10. if arr.count(i) >= 1:
  11. a[i] = arr.count(i)
  12. print(a)
  13. else:
  14. print( "输入的内容有误")
  15. count()

4、请根据下列需求,编写一个程序。

用户输入一个字符串,请将字符串中所有字母全部后移动一位,最后一个字母放到字符串的开头,最后将新的字符串输出。


  
  1. arr = []
  2. result = ""
  3. myStr = input( "请输入字符串:")
  4. for string in myStr:
  5. arr.append(string)
  6. last = arr[ -1]
  7. arr.remove(last)
  8. arr.insert( 0,last)
  9. for new in arr:
  10. result = result + new
  11. print(result)

5、假设有个列表存储奇数个数字,请编写程序,输出中间位置的数字。


  
  1. arr = []
  2. n = int(input( "请输入列表元素的个数(奇数):"))
  3. for i in range(n):
  4. num = int(input( "请输入第%d个数:"%(i+ 1)))
  5. arr.append(num)
  6. arr.sort()
  7. print( "该列表中间位置的数字为:",arr[n// 2])

6、已知info=[1,2,3,4,5],请通过两种编程方法,将列表变成info=[5,4,3,2,1]。


  
  1. #第一种:
  2. arr = [ 1, 2, 3, 4, 5]
  3. arr.reverse()
  4. print(arr)

  
  1. #第二种:
  2. arr = [ 1, 2, 3, 4, 5]
  3. arr.sort(reverse= True)
  4. print(arr)

7、请编写一个函数满足下列需求:

用户输入n,然后输入n个整数到列表中,列表中的n个整数需要使用冒泡进行排序,并将排序后的结果输出。


  
  1. arr = []
  2. length = int(input( "请输入数字的总个数:"))
  3. i = 0
  4. while i < length:
  5. num = int(input( "输入第%d个数字:"%(i+ 1)))
  6. arr.append(num)
  7. i+= 1
  8. print( "排序前:%s"%arr)
  9. # 对列表排序
  10. for i in range(length):
  11. flag = 0
  12. for j in range( 1,length):
  13. if arr[j -1] > arr[j]:
  14. arr[j -1],arr[j] = arr[j],arr[j -1]
  15. flag = 1
  16. if not flag:
  17. break
  18. print( "排序后:%s"%arr)

8、请编写一个程序,实现删除列表中重复元素的功能。


  
  1. arr = []
  2. length = int(input( "请输入列表的总个数:"))
  3. i = 0
  4. while i < length:
  5. element = input( "输入第%d个元素:"%(i+ 1))
  6. arr.append(element)
  7. i+= 1
  8. # 列表转为集合
  9. newList = set(arr)
  10. print(newList)

9、假设有两个3×3的矩阵,请编写一个程序,计算这两个矩阵的和并输出。


  
  1. def add(a, b):
  2. # 下面两行保证输入的a和b是维数相同的矩阵,根据实际情况不要也可以
  3. assert (len(a) == len(b))
  4. assert (all([len(a[i]) == len(b[i]) == len(a[ 0]) for i in range(len(a))]))
  5. i, j = len(a), len(a[ 0])
  6. c = [[ 0] * j] * i
  7. for m in range(i):
  8. for n in range(j):
  9. c[m][n] = a[m][n] + b[m][n]
  10. return c
  11. a = [[ 1, 2, 3], [ 4, 5, 6], [ 7, 8, 9]]
  12. b = [[ 9, 8, 7], [ 6, 5, 4], [ 3, 2, 1]]
  13. c = add(a, b)
  14. print(c)

10、请编写一个程序,使用字典存储学生信息,学生信息包括学号和姓名,请根据学生学号从小到大输出学生的信息。


  
  1. dic = {}
  2. i= 0
  3. while i< 3:
  4. number = input( "输入学生学号:")
  5. name = input( "输入学生姓名:")
  6. dic.__setitem__(number,name)
  7. i+= 1
  8. print( "排序前:%s"%dic)
  9. def dict2list(dic:dict):
  10. ''' 将字典转化为列表 '''
  11. keys = dic.keys()
  12. vals = dic.values()
  13. lst = [(key, val) for key, val in zip(keys, vals)]
  14. return lst
  15. new = sorted(dict2list(dic), key= lambda x:x[ 0], reverse= False)
  16. print( "排序后:%s"%new)

11、已知一个字典包含若干员工信息(姓名和性别),请编写一个函数,删除性别为男的员工信息。


  
  1. def delMale(dict):
  2. keys = []
  3. values = []
  4. for (key,value) in dict.items():
  5. keys.append(key)
  6. values.append(value)
  7. for value in values:
  8. if value == 0:
  9. index = values.index(value)
  10. arrKey = keys[index]
  11. del dict[arrKey]
  12. values[index] = 3
  13. keys[index] = "占位"
  14. dic = { "小明": 0, "小红": 1, "小兰": 1, "小白": 0}
  15. print( "删除前:%s"%dic)
  16. delMale(dic)
  17. print( "删除后:%s"%dic)

12、已知一个列表存储了多个整数,请编写函数,删除列表中的素数。


  
  1. # 错误的版本
  2. arr = [ 12, 3, 37, 7, 91, 67, 27, 45, 6]
  3. def delPrime(arr):
  4. for element in arr:
  5. # 质数大于 1
  6. if element > 1:
  7. # 查看因子
  8. for i in range( 2, element):
  9. if (element % i) == 0:
  10. break
  11. else:
  12. arr.remove(element)
  13. delPrime(arr)
  14. print(arr)

  
  1. # 正确的版本
  2. arr1 = [ 12, 3, 37, 7, 91, 67, 27, 45, 6]
  3. arr2 = [ 12, 3, 37, 7, 91, 67, 27, 45, 6]
  4. def delPrime(arr1):
  5. for element in arr2:
  6. # 质数大于 1
  7. if element > 1:
  8. # 查看因子
  9. for i in range( 2, element):
  10. if (element % i) == 0:
  11. break
  12. else:
  13. arr1.remove(element)
  14. delPrime(arr1)
  15. print(arr1)

第六章

1、定义一个getMax()函数,返回三个数(从键盘输入的整数)中的最大值。
例如:

请输入第1个整数:10
请输入第2个整数:15
请输入第3个整数:20
其中最大值为:20


  
  1. def getMax():
  2. num1 = int(input( "请输入第1个整数:"))
  3. num2 = int(input( "请输入第2个整数:"))
  4. num3 = int(input( "请输入第3个整数:"))
  5. temp = 0 # 临时变量,存放中间产生的第2大数值
  6. if num1 > num2:
  7. temp = num1
  8. else:
  9. temp = num2
  10. if temp>num3:
  11. return "其中最大值为:"+ str(temp)
  12. else:
  13. return "其中最大值为:"+ str(num3)
  14. maxValue = getMax()
  15. print(maxValue)

2、编写函数,求出“1/(1×2)-1/(2×3)+1/(3×4)-1/(4×5)+···”前n项的和,函数以n为参数,它是用户输入的。


  
  1. def sum(n):
  2. res = 0
  3. while n >= 1:
  4. if n% 2 == 0:
  5. res -= 1.0/(n*(n+ 1))
  6. else:
  7. res += 1.0/(n*(n+ 1))
  8. n-= 1
  9. return res
  10. num = int(input( "请输入一个整数:"))
  11. print(sum(num))

3、回文数是一个正向和逆向都相同的整数,如 123454321、9889。编写函数判断一个整数是否是回文数。


  
  1. def is_palindrome(n):
  2. n = str(n)
  3. m = n[:: -1]
  4. return n == m
  5. result = is_palindrome( 1247321)
  6. print(result)

4、编写函数,判断输入的三个数字是否能构成三角形的三个边。


  
  1. def sjx(a, b, c):
  2. if (a + b > c and a + c > b and b + c > a):
  3. return "能构成三角形"
  4. else:
  5. return "不能构成三角形"
  6. result1 = sjx( 3, 4, 5)
  7. print(result1)
  8. result2 = sjx( 1, 1, 2)
  9. print(result2)

5、编写函数,求两个正整数的最小公倍数。


  
  1. # 定义函数
  2. def lcm(x, y):
  3. # 获取最大的数
  4. if x > y:
  5. greater = x
  6. else:
  7. greater = y
  8. while( True):
  9. if((greater % x == 0) and (greater % y == 0)):
  10. lcm = greater
  11. break
  12. greater += 1
  13. return lcm
  14. # 获取用户输入
  15. num1 = int(input( "输入第一个数字: "))
  16. num2 = int(input( "输入第二个数字: "))
  17. print( num1, "和", num2, "的最小公倍数为", lcm(num1, num2))

第七章

1、已知有个列表[1,2,3,4,5],让列表的每个元素加1,把结果不能被2整除的元素筛选出来。


  
  1. result = filter( lambda x:(x+ 1)% 2, [ 1, 2, 3, 4, 5])
  2. print(result)

第八章

1、读取一个文件,显示除了以#开头的行以外的所有行。


  
  1. new = []
  2. f = open( 'itheima.txt', 'r') #首先要有这个函数
  3. contents = f.readlines()
  4. for ele in contents:
  5. if ele.startswith( '#') == False:
  6. print(ele)
  7. f.close()

2、制作一个“密码簿”,其可以存储一个网址(如www.itcast.cn)和一个密码(如123456),请编写程序完成这个“密码簿”的增删查改功能,并且实现文件存储功能。


  
  1. # 密码薄
  2. passwordBook = {}
  3. def add(password, value):
  4. if password not in passwordBook.keys():
  5. passwordBook[password] = value
  6. save()
  7. else:
  8. print( "该密码已存在")
  9. def delete(password):
  10. if password in passwordBook.keys():
  11. del passwordBook[password]
  12. print(passwordBook)
  13. save()
  14. else:
  15. print( "该密码不存在")
  16. def modify(password, newValue):
  17. if password in passwordBook.keys():
  18. passwordBook[password] = newValue
  19. print(passwordBook)
  20. save()
  21. else:
  22. print( "该密码不存在")
  23. def find(value):
  24. if value in passwordBook.values():
  25. print( "该网址存在")
  26. else:
  27. print( "该网址不存在")
  28. def save():
  29. f = open( "password.txt", "w")
  30. f.write(str(passwordBook))
  31. f.close()
  32. def printInfo():
  33. print( "密码簿的功能如下:")
  34. print( "1.添加")
  35. print( "2.删除")
  36. print( "3.修改")
  37. print( "4.查找")
  38. i = 0
  39. while i< 5:
  40. printInfo()
  41. num = int(input( "请输入要选择的功能:"))
  42. if num== 1:
  43. web = input( "请输入存入的网址:")
  44. password1 = input( "请输入密码:")
  45. add(password1, web)
  46. print(passwordBook)
  47. elif num== 2:
  48. password2 = input( "请输入密码:")
  49. delete(password2)
  50. elif num== 3:
  51. password3 = input( "请输入密码:")
  52. value3 = input( "请输入新的网址:")
  53. modify(password3,value3)
  54. elif num== 4:
  55. value4 = input( "请输入要查找的网址:")
  56. find(value4)
  57. i+= 1

3、已知文本文件中存放了若干数字,请编写程序读取所有的数字,排序以后进行输出。


  
  1. f = open( "itheima.txt", "r") #首先要有这个文件
  2. content = list(eval(f.read()))
  3. content.sort()
  4. print(content)

4、打开一个英文的文本文件,将该文件中的每一个英文字母加密后写入到一个新的文件。加密的方法是:将A变成B,B变成C,······,Y变成Z,将Z变成A;a变成b,b变成c,······,y变成z,z变成a,其他字符不变化。 


  
  1. f = open( "itheima.txt", "r")
  2. content = f.read()
  3. newStr = ""
  4. for string in content:
  5. temp = ord(string)
  6. if temp in range( 65, 91):
  7. if temp == 90:
  8. char1 = chr(temp -25)
  9. newStr += char1
  10. else:
  11. char2 = chr(temp+ 1)
  12. newStr += char2
  13. elif temp in range( 97, 123):
  14. if temp == 122:
  15. char3 = chr(temp -25)
  16. newStr += char3
  17. else:
  18. char4 = chr(temp + 1)
  19. newStr += char4
  20. else:
  21. newStr = newStr+string
  22. f.close()
  23. f2 = open( "itheima-加密后.txt", "w")
  24. f2.write(newStr)
  25. f2.close()

5、打开一个英文文本文件,编写程序读取其内容,并把其中的大写字母变成小写字母,小写字母变成大写字母。


  
  1. f = open( r'd:\1.txt', 'r')
  2. s = f.readlines()
  3. f.close()
  4. r = [i.swapcase() for i in s]
  5. f = open( r'd:\2.txt', 'w')
  6. f.writelines(r)
  7. f.close()

6、编写程序,把包含学生成绩的字典保存为二进制文件,然后再读取内容并显示。


  
  1. import pickle
  2. d = { '张三': 98, '李四': 90, '王五': 100}
  3. print(d)
  4. f = open( 'score.dat', 'wb')
  5. pickle.dump( 1,f)
  6. pickle.dump(d,f)
  7. f.close
  8. f = open( 'score.dat', 'rb')
  9. pickle.load(f)
  10. d = pickle.load(f)
  11. f.close()
  12. print(d)

第九章

1、假设成年人的体重和身高存在此种关系: 
                 身高(厘米)-100=标准体重(千克)

如果一个人的体重与其标准体重的差值在正负5%之间,显示“体重正常”,其他显示“体重超标”或者“体重不超标”。编写程序,能处理用户输入的异常,并且使用自定义异常类来处理身高小于30cm,大于250cm的异常情况。


  
  1. class HeightException(Exception):
  2. pass
  3. try:
  4. height = int(input( "请输入您的身高:"))
  5. if height< 30 or height> 250:
  6. raise HeightException
  7. weight = int(input( "请输入您的体重:"))
  8. weightS = height -100
  9. if weight > weightS and weight-weightS < 0.05*weightS:
  10. print( "体重达标")
  11. elif weight < weightS and weightS-weight < 0.05*weightS:
  12. print( "体重达标")
  13. else:
  14. print( "体重不达标")
  15. except HeightException:
  16. print( "您输入的身高有误")

2、录入一个学生的成绩,把该学生的成绩转换为A优秀、B良好、C合格、D不合格的形式,最后将该学生的成绩打印出来。要求使用assert断言处理分数不合理的情况。


  
  1. try:
  2. score = int(input( "请输入学生的成绩:"))
  3. if score>= 90 and score<= 100:
  4. print( "A:优秀")
  5. elif score>= 80 and score< 90:
  6. print( "B:良好")
  7. elif score>= 60 and score< 80:
  8. print( "C:合格")
  9. else:
  10. assert score> 60, "D:不及格"
  11. except Exception as result:
  12. print( "低于60分:\n",result)

第十章 

1、建一个模块文件。在该文件中,定义一个函数,用于交换两个数的值。


  
  1. def changeNum1AndNum2(num1, num2):
  2. temp = num1
  3. num1 = num2
  4. num2 = temp
  5. return (num1, num2)

第十一章

1、设计一个Circle(圆)类,包括圆心位置、半径、颜色等属性。编写构造方法和其他方法,计算周长和面积。请编写程序验证类的功能。


  
  1. class Circle:
  2. def __init__(self,tup, radius, color):
  3. self.center = tup
  4. self.radius = radius
  5. self.color = color
  6. def perimeter(self):
  7. return 3.14 * 2 * self.radius
  8. def area(self):
  9. return 3.14 * self.radius * self.radius
  10. circle = Circle(( 0, 0), 5, "蓝色")
  11. print(circle.perimeter())
  12. print(circle.area())

2、设计一个课程类,包括课程编号、课程名称、任课教师、上课地点等属性,把上课地点变量设为私有的,增加构造方法和显示课程信息的方法。


  
  1. class Curriculum:
  2. def __init__(self):
  3. self.number = 1001
  4. self.name = "语文"
  5. self.teacher = "小明"
  6. self.__address = "2号教学楼3层305室"
  7. def __str__(self):
  8. return """
  9. 课程编号:%d
  10. 课程名称:%s
  11. 任课教师:%s
  12. 上课地点:%s
  13. """%(self.number,self.name,self.teacher,self.__address)
  14. curri = Curriculum()
  15. print(curri)

第十二章

1、设计一个表示学生的类:Student,该类的属性有)name(姓名,age(年龄),scores(成绩,包含语文、数学和英语三科成绩,每科成绩的类型为整数),另外此类还有3个方法。

(1)获取学生的方法:get_name(),返回类型为str。
(2)获取年龄的方法:get_age(),返回类型为int。
(3)返回3门科目中最高的分数:get_course(),返回类型为int。


  
  1. class Student(object):
  2. # 构造方法
  3. def __init__(self, name, age, scores):
  4. self.__name = name # 姓名
  5. self.__age = age # 年龄
  6. self.__scores = scores # 分数
  7. def get_name(self):
  8. return self.__name
  9. def get_age(self):
  10. return self.__age
  11. def get_course(self):
  12. return max(self.__scores)
  13. stu = Student( '小丸子', 18, [ 89, 90, 91])
  14. print( "姓名:%s"%(stu.get_name()))
  15. print( "年龄:%s"%(stu.get_age()))
  16. print( "最高分:%s"%(stu.get_course()))

2、设计一个表示动物的类:Animal,其内部有一个color(颜色)属性和call(叫)的方法。再设计一个表示Fish(鱼)类,该类中有tail(尾巴)和color属性,以及一个call(叫)方法。
提示: 让Fish类继承自Animal类,重写init和call方法。


  
  1. class Animal(object):
  2. def __init__(self, color):
  3. self.color = color #颜色
  4. def call(self):
  5. print( "动物叫")
  6. class Fish(Animal):
  7. def __init__(self, color):
  8. super().__init__(color)
  9. self.tail = True
  10. def call(self):
  11. print( "-%s的鱼在吐泡泡-"%self.color)
  12. fish = Fish( "蓝色")
  13. fish.call()

转载:https://blog.csdn.net/lzyws739307453/article/details/92851871
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场