黑马程序员课后编程题——Python快速编程入门(第二版)

第二章  python基础

1、课本33页练习:求圆的半径和面积;
用户输入圆的半径,输出圆的直径和面积。面积公式:s=π*r*r

print("------------求圆的直径和面积计算-------------")
r=float(input("请输入圆的半径:"))
d=2*r
s=3.14*r*r
print("圆的直径为:",d)
print("圆的面积为:",s)

2、#课本33页练习:计算运输次数;

#煤场有29.5t,4t运了3次,其余用2.5t车运,还需几次才能运完

print("------------求煤的运输次数-------------")
sum_coal=round((29.5-3*4)/2.5)
print("还需的次数为:",sum_coal)

第三章  流程控制

1、#课本44页练习:用while循环输出100以内偶数的功能;

print("------------输出100以内偶数的功能-------------")
i,sign=1,0
while i<100:
    if i%2==0:
        sign+=1
        print(i,end="\t")
        if sign%10==0:
            print()
    i+=1

2、#课本44页练习:判断用户输入的是正数还是负数;

print("------------判断用户输入的是正数还是负数-------------")
num=float(input("请输入一个数判断正负:"))
if num>=0:
    print("正数")
else:
    print("负数")

3、#课本44页练习:输出100以内的质数;
#质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。

print("------------输出100以内的质数-------------")
sign=0
for i in range(3,100):
    for j in range(2,i):
        if i%j==0:
            break
    if j==i-1:
        print(i,end="\t")
        sign+=1
        if sign%10==0:
            print()

第四章  字符串

1、#课本55页练习:编程计算字符串中小写字母的数量;
      #字符串s=‘AbcDeFGhIJ’。

print("------------编程计算字符串中小写字母的数量-------------")
s="AbcDeFGhIJ"
n=0
for i in s:
    if 97<=ord(i)<=122:
        n+=1
print(f"小写字母的个数为:{n}")

2、#课本55页练习:检测字符串;
      #检测字符串“Life is short. I use python ”中是否包含“python”,若有则替换为“Python”

print("------------编程计算字符串中小写字母的数量-------------")
s="Life is short. I use python "
flag="python"
s=s.replace(flag,"Python")
print(s)

第五章  组合数据类型

1、#课本71页练习:合并列表;
      #已知num1=[4,5,2,7],num2=[3,6],将两个列表合并为一个列表,并按降序排列

ls=[]
num1=[4,5,2,7]
num2=[3,6]
ls=num1+num2
ls.sort(reverse=True)
print(ls)

2、#课本71页练习:向元组中添加新元素;
     #已知元组num1=('p','y','t',['o','n']),在元组最后添加元素‘h’

num1=('p','y','t',['o','n'])
num1=list(num1)
num1.append('h')
num1=tuple(num1)
print(num1)

3、#课本71页练习:统计字符串个字母出现的次数;
#已知字符串s="skdaskerkjsalkj"

s="skdaskerkjsalkj"
d={}
for i in s:
    d[i]=d.get(i,0)+1
print(d)

4、#课本71页练习:删除列表中重复的数据;
#已知ls=[1,2,1,2,3,5,4,3,5,7,4,7,4]

ls=[1,2,1,2,3,5,4,3,5,7,4,7,4]
ls=list(set(ls))
print(ls)

第六章  函数

1、#课本87页练习:编写函数,计算出1-100中的偶数和;

sum=0
def oushu(n):
    if n%2==0:
        s(n)
def s(n):
    global sum
    sum+=n
for i in range(101):
    oushu(i)
print(f"1-100以内的偶数之和为:{sum}")

2、#课本87页练习:编写函数计算20*19*18……*3的结果;

def jisuan(n):
    if n ==3:
        return 3
    else:
        return n*jisuan(n-1)

num=eval(input("请输入一个数字:"))
all=jisuan(num)
print(f"乘积{all}")

3、#课本87页练习:判断用户输入是否为回文数;

def fun(n):
    huiwen=n[::-1]
    if n==huiwen:
        print("是回文数!")
    else:
        print("不是回文数!")

str=input("请输入一个字符串")
fun(str)

4、#课本87页练习:编写函数,判断用户输入的3个数字是否能构成三角形的三条边;

# 构成三角形:任意两边之和大于第三边

def fun(a,b,c):
    if a+b>c and a+c>b and b+c>a:
        print(f"{a},{b},{c}可以构成三角形")
    else:
        print(f"{a},{b},{c}不可以构成一个三角形")

ls=[]
ls=input("请输入三条边长(中间用逗号隔开)").strip('\'').split(',')
# print(ls)
fun(eval(ls[0]),eval(ls[1]),eval(ls[2]))

5、#课本87页练习:编写函数,求2个数的最小公倍数;

# 最小公倍数

def fun(n,m):
    num=n if n>m else m
    for i in range(n,n*m+1):
        if i%n==0 and i%m==0:
            return i
print("求两个数的最小公约数。")
num1=int(input("请输入第一个数:"))
num2=int(input("请输入第二个数:"))
num=fun(num1,num2)
print(f"{num1}和{num2}的最小公倍数为:{num}")

第七章  文件与数据格式化

1、#课本101页练习:读取文件,打印除了字符#以外的所有行

fi=open('text.txt',encoding='utf-8')
lines=fi.readlines()
for line in lines:
    if line[0]=='#':
        continue
    else:
        print(line,end='')

2、#课本101页练习:编写程序,实现文件备份功能


import os
#
# 备份文件夹
def wjj(name):
    # 判断文件夹路径是否存在
    if os.path.exists(name):
        for path,dirs,files in os.walk(name):
            for file in files:
                path1 = path+'\\'+file
                with open(path1,'r',encoding='utf-8') as f:
                    s=f.read()
                mz=path+'\\beifeng''bf'+file
                with open(mz,'w') as fi:
                    fi.write(s)
                    print("备份成功")
    else:
        print("文件路径错误,备份失败!!")

# 备份文件
def wj(name):
    # 判断文件是否存在
    if os.path.exists(name):
        # 获取当前路径下文件的名字
        file=os.path.basename(name)
        s=os.path.dirname(name)+'bf'+file
        # 备份文件夹
        with open (name,'r',encoding='utf-8') as f:
            read=f.read()
        with open (s,'w',encoding='utf-8')as fi:
            fi.write(read)
            print("文件备份成功!")
    else:
        print("备份失败,文件不存在!")

path1 = input("请输入需要备份路径:")
if os.path.isdir(path1):
    wjj(path1)
elif os.path.isfile(path1):
    wj(path1)
else:
    print("输入错误!")

3、#课本101页练习:编写程序,读取一个存储若干数字的文件,对其中的数字排序后输出

fi=open('data101.txt',encoding='utf-8')
numbers=fi.read()
ls=[]
ls=numbers.strip().split()
nums=[]
for num in ls:
    nums.append(eval(num))
nums.sort(reverse=False)
print(nums)
fi.close()

第八章  面向对象

1、#课本练习121: # 课本练习121设计一个圆类,其中包括半径radius属性,还包括__init__,get_perimeter()(求周长)和求get_atea()方法 # 创建对象求圆的周长和面积

class Circle():
    def __init__(self,radius):
        self.radius=radius

    #     求周长
    def get_perimeter(self):
        return self.radius*2*3.14

    # 求面积
    def get_atea(self):
        return self.radius*self.radius*3.14


circle=Circle(5)
c=circle.get_perimeter()
s=circle.get_atea()
print(f"面积为{s},周长为{c}")

2、#课本练习121: # 课本练习121设计一个课程Course类,该类中包含number(编号)、name(名称)、teahcer(老师)、location(上课地点),其中location为私有属性 # 包括__init__(),show_info()(显示课程信息)共两个方法。完成设计后,创建Course类的对象显示课程的信息

class Course():
    def __init__(self,number,name,teacher,location):
        self.number=number
        self.name=name
        self.teacher=teacher
        self.__location=location

    def show_info(self):
        print(f"课程编号为{self.number},课程名为{self.name},任课老师为{self.teacher},上课地点为{self.__location}")

info=Course(101,"python程序设计","张老师","三机房")
info.show_info()

第九章  异常

1、#课本练习132页:计算圆的面积 # 编写程序,按用户输入的半径计算圆的面积,若半径为负则抛出异常 # 圆的公式为:S=πR²

class NumError(Exception):
    def __init__(self,number):
        self.number=number

try:
    r=eval(input("请输入圆的半径:"))
    if r<0:
        raise NumError(r)
except NumError as rrsult:
    print("您输入的半径为{},圆的半径不能为负!".format(rrsult.number))

else:
    S=3.14*r*r
    print(f"圆的面积为:{S}")

2、#课本练习132页:计算三角形的面积和周长 # 编写程序按用户输入的三条边判断能否构成直角三角形, # 若能构成直角三角形,则计算其周长和面积,否则引发异常

class NumError(Exception):
    def __init__(self,number1,number2,number3):
        self.number1=number1
        self.number2=number2
        self.number3=number3

try:
    line=input("请输入三角形的第三条边长(中间用英文逗号隔开):")
    lis=line.strip().split(',')
    a,b,c=eval(lis[0]),eval(lis[1]),eval(lis[2])
    if (a*a+b*b !=c*c) and (a*a+c*c!=b*b) and (b*b+c*c!=a*a):
        raise NumError(a,b,c)
except NumError as result:
    print("您输入的{},{},{}不能构成直角三角形!".format(result.number1,result.number2,result.number3))
else:
    C=a+b+c
    if a*a+b*b==c*c:
        S=a*b/2
    elif a*a+c*c==b*b:
        S = a * c / 2
    else:
        S = c * b / 2
    print("此直角三角形的面积为{},周长为{}".format(S,C))

物联沃分享整理
物联沃-IOTWORD物联网 » 黑马程序员课后编程题——Python快速编程入门(第二版)

发表评论