python快速编程入门-期末版一版课后习题

不喜勿喷~

python书中课后习题:

黑马程序员:
第一章:python概述
1、编程实现打印
这里写图片描述

print("+++++++++++")
print("+         +")
print("+++++++++++")

第二章 python基础语法
2、由三角形两直角边求斜边长度

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

3、编写一个程序实现两个数进行交换

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

第三章 python基础语法
4、编写程序使用for循环实现输出0-10之间的整数

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

5、编写程序判断用户输入的是正数还是负数

a=int(input("请输入一个数:"))
    if a>0:
            print("a是一个正数")
    elif a<0:
        print("a是一个负数")
    else:
        print("a等于0")

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

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

第四章 python基础语法
7、接收输入的一行字符,统计出字符串中包含数字的个数。

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

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

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

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

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

第五章 python基础语法
10、编写一个函数,用于判断输入字符串是否由小写字母和字符串构成

def message():
    myStr = input("请输入密码,只能为字母和数字:")
    if myStr.isalnum():
        print("符合要求")
    else:
        print("不符合要求")

11、用户输入一个字符串,将下标为偶数的字符串提出来合并为一个新的字符串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)

12、请编写一个程序,用于统计字符串中每个字母出现的次数(字母忽略大小写,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()

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

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)

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

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)

15、已知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)

15、用户输入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)

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

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

17、假设有两个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)

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

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)

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

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)

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

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)

第六章 python基础语法
21、定义一个getMax()函数,返回三个数(从键盘输入的整数)中的最大值。

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)

22、编写一个函数,求出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))

23、写一个函数确定一个数是否为回文数。

def is_palindrome(n):
    n=str(n)
    m=n[::-1]
    return n==m
result = is_palindrome(1247321)
print(result)

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

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)

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

# 定义函数
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))

第七章 python基础语法
26、已知有个列表[1,2,3,4,5],让列表中的每个元素加1,把结果不能被2整除的元素筛选出来。

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

第八章 python基础语法
27、读取一个文件,显示以#开头的行以外的所有行。

new = []
f = open('itheima.txt', 'r')
contents = f.readlines()
for ele in contents:
    if ele.startswith('#') == False:
        new.append(ele)
print(new)
f.close()

28、制作一个密码簿,其可以存储一个网址和一个密码,请编写程序完成这个密码簿的增删查改功能,并且实现文件存储功能。

# 密码薄
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

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

f = open("itheima.txt","r")
content = list(eval(f.read()))
content.sort()
print(content)

30、打开一个英文的文本文件,将该文件中的每一个英文字母加密后写入到一个新的文件。加密的方法是:将A变成B,将B变成C,将C变成D等,将a变成b等。
其他字符不变。

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()

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

 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()

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

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) 

33、假设成年人的体重和身高存在此种关系:
身高-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("您输入的身高有误")

34、录入一个学生的成绩,把该学生的成绩转换为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)

第十章 python模块
创建一个模块文件,它用于互换两个数的值。

def changeNum1AndNum2(num1, num2):
    temp = num1
    num1 = num2
    num2 = temp
    return (num1, num2)

第十一章pyhton面向对象编程上
设计一个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())

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

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)

第十二章面向对象编程下
设计一个表示学生的类(student)类,该类的属性有姓名(name),年龄(age),成绩(score)(成绩包含语文、数学、英语三科成绩,每科成绩的类型为整数),另外有三个方法。
(1)获取学生的方法:get_name(),返回类型为string,
(2)获取年龄的方法:get_age(),返回类型为int
(3)返回3门科目中最高的分数:get_course(),返回类型为int
设计一个表示动物(animals)的类,该类包含颜色(color)属性和叫(call)的方法,再设计一个表示鱼(fish)的类,包括尾巴(tail)和颜色(color)两个属性,及叫(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()
  • 53
    点赞
  • 220
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值