python程序设计期末大作业,python爬虫期末大作业

大家好,小编来为大家解答以下问题,python期末大作业代码200行带批注,python程序设计期末大作业,今天让我们一起来看看吧!


import random

# 等腰梯形求面积。
a1 = 2   #eval(input("up long:"))
b1 = 3 #eval(input("down long:"))
c1 = 4 #eval(input("height:"))
if a1 > 0 and b1 > 0 and c1 >0:
    s = (a1+b1)*c1/2
    print('1.等腰梯形求面积:',s)
else:
    print("input positive number")

#输入10个人的成绩,求平均成绩,并将优秀的成绩输出python建议自学吗。设成绩>80分为优秀.
scorelist = []
sumscore = 0
excellscore = []
for i in range (10):
    score = random.randint(50,100)
    scorelist.append(score)
for j in scorelist:
    if j > 80:
        excellscore.append(j)
    sumscore += j
avgescore = sumscore/10
print('2.求平均成绩:',avgescore)
print(excellscore)

# 给出一个字符串,将其中的字符“e"用"^"替换后输出。
str1 ='3.Sometime I want to study in nice day'
for i in str1:
    if i == "e":
        print("^",end="")
    else:
        print(i,end='')
print()

# 一个人的18位的身份证号,以类似于“2001年09月12日”的形式输出该人的出生日期
ID1 = '330402200105219999'
nian = ID1[6:10]
yue = ID1[10:12]
ri = ID1[12:14]
print("4.her birthday is %s.%s.%s"%(nian,yue,ri))
# print("4.her birthday is {}.{}.{}".format(nian,yue,ri))

# 判断自然数 0,1,2,3,4,5......
num1 = 3.14#0  3.14 -6
if num1 >= 0 and num1- int(num1)==0:
    print("5.是自然数")
else:
    print("5.不是自然数")

# 大小写的相互转换
bigsmall = "6.i wANT tO yOU! HaHZHz"
for i in bigsmall:
    if ord(i) >= 97 and ord(i) <= 122:
        print(chr(ord(i)-32),end='')
    elif ord(i) >= 65 and ord(i) <= 90:
        print(chr(ord(i)+32),end='')
    else:
        print(i,end='')
print()

# 求相反数
d = -99
print("7.-99的相反数:",d*(-1))

# 从小到大排列三个数
num2 = random.randint(0,30)
num3 = random.randint(0,30)
num4 = random.randint(0,30)
if num2 > num3:
    num2,num3 = num3,num2
if num2 > num4:
    num2,num4 = num4,num2
if num3 > num4:
        num3,num4 = num4,num3

print("8.从大到小输出三个数:",num2,num3,num4)

# 判断三角形类型:
a = 1
b = 1
c = 2**0.5
if (a+b)>c and a+c>b and b+c>a:
    if (a**2+b**2)-c**2<1e-5 or (a**2+c**2)-b**2<1e-5 or (b**2+c**2)-a**2<1e-5:
        if a==b or a==c or b==c:
            print("9.等腰直角三角形(2,3,4的情况下程序不成立) ")
        else:
            print("9.直角三角形")
    elif a==b or a==c or b==c:
        print("9.等腰三角形")
    else:
        print("9.其它三角形")
else:
    print("9.不是三角形")

# 1000以内含7不含0且不能被5整除的数。
count1 = 0
for i in range(1000):
    if i//100 ==7 or i//10%10 ==7 or i%10==7:
        if i > 10:
            if i//10%10!=0 and i%5!=0:
                count1 +=1
                print(i,end=' ')
        else:
            if i%5 != 0:
                count1 +=1
                print(i,end=" ")
print("\n一共有{}个数".format(count1))

# 斐波那契数列前20个数。
print("11.斐波那契数列的前20项:")
def feibo(n):
    a2, b2 = 1, 1
    for i in range(n):
        print("{:>6}".format(a2),end="")
        a2,b2=b2,a2+b2
        if (i+1)%5==0:
            print()
feibo(20)

# 求1+到n的和。
def numadd(n):
    addsum = 0
    for i in range(1,n+1):
        addsum += i
    return addsum
print("12.1+到99的和:",numadd(99))

# 求6个人三门课成绩总和,并输出最高分。
# print("13.求6个人三门课成绩总和,并输出最高分:")
# array_new=[]
# sum=0
# array=[]
# sum_array=[]
# k=0
# for j in range(1,7):
#     array=list((input("请输入第 "+"%d"%j+" 个学生三门课程的分数:").split(',')))
#     for i in array:
#         array_new.append(float(i))
#         sum=sum+array_new[k]
#         k=k+1
#     sum_array.append(sum) #得到总成绩的一个列表。
#     sum=0
# sum_array=sorted(sum_array,reverse=True)
# print("总分最高的是 :",sum_array[0])

# 求1-3+5-7+9……-99+101=?
sum2=0
for i in range(1,102):
    if i%2==0:
        sum2-=i
    if i%2==1:
        sum2+=i
print("14.1-3+5-7+9……-99+101=",sum2)

# 求 n!
sum3 = 1
sum4 = 0
for i in range(1,21):
    sum3 *= i
    sum4 =sum4+sum3
print("15.20!=",sum3,"\n前20个阶乘总和=",sum4)

def fact(n):
    if n==0:
        return 1
    elif n==1:
        return 1
    else:
        return n*fact(n-1)
print("15.用递归的方法求 20!=",fact(20))

# 猴子每天吃一半多一个🍑,第十天只剩一个,问原来共有几个。
peach = 1
for i in range(1,10):
    peach=(peach +1)*2
print("16.猴子吃桃,它原来有几个:",peach)

# 1000以内的水仙花数。
print("17.1000以内的水仙花数:",end="")
for i in range(100,1000):
    if (i//100)**3+(i//10%10)**3+(i%10)**3==i:
        print(i,end=",")

# 1000以内完全数。完全数:除了自身以外的约数的和,恰好等于它本身。
print("\n18.1000以内完全数:",end="")
for i in range (1,1000):
    num5 = 0
    for j in range(1,i):
        if i%j==0:
            num5+=j
    if num5==i:
        print(i,end=" ")

# 解百买鸡问题。
print("\n19.解百买鸡的买法:")
for x in range(0, 20):
    for y in range(0, 33):
        z = 100 - x - y
        if 5 * x + 3 * y + z / 3 == 100:
            print('大鸡: {}只, 中鸡: {}只, 小鸡: {}只'.format(x, y, z))

print("20.输出图形(代码200行处)")
for i in range(5):
    for j in range(1,i+1):
        print("*",end="")
    print()

print('21.输出图形2')
for i in range(5):
    print(5-i,end="")
    for j in range(5-i):
        print("*",end="")
    print()

print('22.输出图形3')
a=8
for i in range(1,a+1):
    print((a-i)*" ",end="")
    print("*"*(2*i-1))
for j in range(a//2):
    print((a-1)*" "+"*")

print('23.输出图形4')
a= 5 #eval(input('请输入一个数:'))
for i in range (a):
    print((a-i)*' ',end="")
    print("*",end="")
    print((2*i-1)*' ',end="")
    if i!=0:
        print("*",end="")
    print()
print((a+1)*'* ',end="")

print('\n24.输出图形5')
a=5#eval(input('请输入一个数:'))
for i in range (a):
    print((a-i)*' ',end="")
    print("*",end="")
    print((2*i-1)*' ',end="")
    if i!=0:
        print("*",end="")
    print()
for i in range (a-2,0,-1):
    print((a-i)*' ',end="")
    print("*",end="")
    print((2*i-1)*' ',end="")
    print("*",end="")
    print()
print(a*' ',end="")
print("*",end="")

# 反转字符串
a='sjsh123fkbc'
b=a[::-1]
print("\n25.反转字符串",b)

# 1**2 -2**2 +3**2 - …… +99**2
sum5=0
for i in range(1,100):
    if i%2==0:
        sum5-=i*i
    if i%2==1:
        sum5+=i*i
print("26.1**2 -2**2 +3**2 - …… +99**2=",sum5)

# 求两数的最大公约数和最小公倍数。
m = 12
n = 20
a = min(m,n)
for i in range(a,0,-1):
    if m%i==0 and n%i==0:
        print("27.最大公约数:",i,"\t最小公倍数:",m*n//i)
        break

# 编写函数isodd(x), 若x不是整数,给出提示后退出程序;如果x为奇数,返回True,如果x为偶数,返回False。
def isodd(x):
    if x-int(x) != 0:
        return "下一次请输入整数"
    if x % 2 == 1:
        return True
    if x % 2 == 0:
        return False
print("28.测试isodd函数:\n输入小数2.2时,输出结果:",isodd(2.2),end="  ")
print("输入偶数2时,输出结果(False):",isodd(2),end="    ")
print("输入奇数3时,输出结果(True):",isodd(3))

# 编写函数change(str1),其功能是对参数strl进行大小写转换,
# 其中的大写字母转换成小写字母;小写字母转换成大写字母;非英文字符不转换。
def change(strtset):
    output = []
    for i in strtset:
        if ord(i) <= 122 and ord(i) >= 97:
            output.append(chr(ord(i)-32))
        elif ord(i) <= 90 and ord(i) >= 65:
            output.append(chr(ord(i)+32))
        else:
            output.append(i)
    return "".join(output)
print("29.测试change函数:\n输入:'AaWeZz.$!',输出结果:",change('AaWeZz.$!'))

# 编写并测试函数gcd(m,n)和 lcm(m,n),功能是求两个整数的最大公约数和最小公倍数。
def gcd(m,n):
    if m < n:
        m,n = n,m
    while n != 0:
        r = m % n
        m = n
        n = r
    return m
def lcm(m,n):
    return (m*n)//gcd(m,n)
print("30.测试gcd和 lcm函数:\n测试数据(28,6)的最大公约数:",gcd(28,6),"\t最小公倍数:",lcm(28,6))

# 编写并测试函数reverse(x),输入一个整数,将各位数字反转后输出。
def reverse(x):
    x = str(x)
    x1 = x[::-1]
    return int(x1)
print("31.测试reverse函数:将一个整数的各位数字反转\n测试数据123456789,输出结果:",reverse(123456789))

# 编写程序sqrt(n),求1^2 - 2^2 + 3^2 - 4^2 +⋯+〖97〗^2 -〖98〗^2 +〖99〗^2 =?
def sqrt(n):
    sum1 = 0
    for i in range(1,n+1):
        if i % 2 == 0:
            sum1 -= i * i
        elif i % 2 == 1:
            sum1 += i * i
    return sum1
print("32.测试sqrt函数:求带正负的平方和:\n输入n=99,输出结果:",sqrt(99))

# 用递归方法反转一个字符串,例如“abcde”,反转为“edcba”。
def fanzhuan(s) :
    if len(s)<1:
        return s
    else:
        return fanzhuan(s[1:])+s[0]
print("33.测试fanzhuan的递归函数:\n输入≡63hg3hc6g2f,输出结果:",fanzhuan("≡63hg3hc6g2f"))

# 函数实现判断一个字符串是否为回文。
def huiwen(t):
    for i in range(1,len(t)//2+1):
        if t[i-1]==t[-i]:
            pass
        else:
            return "{:<10}不是回文".format(t)
    return "{:<10}是回文".format(t)
print("34.测试huiwen函数:\n测试数据1: ",huiwen("1233321"))
print("测试数据2: ",huiwen("16651"))

# 用递归实现二分查找
l=[1,2,10,30,33,99,101,200,301,402] #从小到大排列的数字列表
def search(low,height,l,item):
    # l.sort() 是一个升序列表
    middle = (low + height)//2
    if l[middle] > item:
        height = middle + 1
        # search(l[0:middle],item)
    elif l[middle] < item:
        # search(l[middle:],item)
        low =middle -1
    else:
        return '35.测试seatch函数:递归实现2分查找:\n' \
               '已知l=[1,2,10,30,33,99,101,200,301,402]' \
               ',查找得{}是列表中的第{}个数。'.format(item,middle)
    return search(low,height,l,item)
print(search(0,len(l)-1,l,101))

# 汉诺塔
def hanoi(n,a,b,c):
    if n==1:
        print(a,"-->",c)
    else:
        hanoi(n-1,a,c,b)
        print(a,"-->",c)
        hanoi(n-1,b,a,c)
# n=int(input("38.请输入汉诺塔的层数:"))
print("36.测试hanoi函数:求n层汉诺塔的移动过程:\n测试n=3时:")
hanoi(3,"A","B","C")

# 打印杨辉三角形。
#   定义法
n = 6#eval(input("输入要打印的行数:"))
triangle = [[1], [1, 1]]
for i in range(2, n):  # 已经给出前两行,求剩余行
    pre = triangle[i-1]  # 上一行
    cul = [1]  # 定义每行第一个元素
    for j in range(i-1):  # 算几次
        cul.append(pre[j]+pre[j+1])  # 每个数字等于上一行的左右两个数字之和。
    cul.append(1)  # 添加每行最后一个元素
    triangle.append(cul)
print("37.打印杨辉三角形:普通输出:\n{}".format(triangle))
print("按等边三角形格式输出:")
for i in range(n):  # 按等边三角形格式输出
    s = " "*(n-i-1)
    for j in triangle[i]:
        s = s + str(j)+" "
    print(s)

# 用函数实现求100-200里面所有的素数(即质数):指只能除尽1和它本身的数。
# 如果两个素数之差为2,这样的两个素数就叫作"孪生数"找出100-200以内的所有"孪生数"。【注释掉的部分】
# n1,n2 = 2,2
print("38.用sushu函数输出100-200以内所有的素数:")
def sushu(n,m):
    sushulist = []
    for i in range(n,m+1):
        for j in range(2,i):
            if i % j == 0:
                break
        else:
            sushulist.append(i)
    return sushulist
        # else:   #这一步非常关键:如果没有这个else,break之后还会执行下面的语句。
        #     n1 = n2
        #     n2 = i
        #     if n2 - n1 == 2:
        #         print("100以内所有的孪生数:")
        #         print(n1,n2)
print(sushu(100,200))

# 分解质因数。例:90 = 2*3*3*5
positiveInt = 90 #int(input('请输入一个正整数:'))
print('39.分解质因数:%d = ' %positiveInt,end='')
while positiveInt > 1:
    for i in range(2,positiveInt+1):
        if positiveInt % i == 0:
            positiveInt = int(positiveInt/i)
            if positiveInt == 1:
                print('{}'.format(i))
            else:
                print('{} * '.format(i),end='')
            break


# 生成验证码。
def singleSecurityCode():  #Step1
    singleCode=''                        #注意:目标输出的是字符串,而random函数会输出的是int,所以下面要进行数据的类型的转换
    randomNumber = random.randint(0,2)
    if randomNumber == 0:
        singleCode = str(random.randint(0,9))
    elif randomNumber == 1:
        singleCode = chr(random.randint(65, 90))
    elif randomNumber == 2:
        singleCode = chr(random.randint(97,122))
    return singleCode
def nSecurityCode(n):   #Step2
    authCode = ''
    output =''
    for i in range(n):
        authCode = singleSecurityCode()
        output = output + authCode
    return output
print("40.随机生成的验证码为:",nSecurityCode(4))

# 假设你正在爬楼梯。每次你可以爬 1 或 2 或 3 个台阶。你有多少种不同的方法可以爬到楼顶呢?
def step(n):    #n:台阶数
    if n==1:
        return 1
    elif n==2:
        return 2
    elif n==3:
        return 4
    else:
        return step(n-1)+step(n-2)+step(n-3)
print('41.递归实现爬楼梯的问题:\n假设需要爬到5楼,共有办法:',step(5))

# 1.有下面的类属性:姓名、年龄、成绩列表[语文,数学,英语],其中每门课成绩的类型为整数,类的方法如下所述:
# (1)列表项列表项获取学生的姓名。get_name(),返回类型:str。
# (2)获取学生的年龄。get_age(),返回类型:int。
# (3)返回3门科目中最高的分数。get_course(), 返回类型:int。
class Student:
    def __init__(self,name,age,score):
        self.name = name
        self.age = age
        self.score = score[:]
    def get_name(self):
        return "学生姓名:{:s}".format(self.name)
    def get_age(self):
        return "学生年龄:{:d}".format(self.age)
    def get_course(self):
        return "学生的三门最好成绩:{}".format(max(self.score))
pupil = Student("xc",18,[66,88,90])
print("42.",pupil.get_name(),pupil.get_age(),pupil.get_course())


# 2.设计一个Circle(圆)类,包括圆心位置、半径、颜色等属性。
# 编写构造方法和其他方法,计算周长和面积。请编写程序验证Circle(圆)类的功能。
import math
class Circle:
    def __init__(self,x,y,r,color):
        self.x = x
        self.y = y
        self.r = r
        self.color = color
    def infomation(self):
        return "⚪的基础信息:圆心({},{}),颜色{}".format(self.x,self.y,self.color)
    def rounds(self):
        return "⚪的周长是{:f}".format(2*math.pi*self.r)
    def area(self):
        return "⚪的面积是{:f}".format(math.pi*(self.r)**2)
circle = Circle(1,2,3.0,"红")
print("43.",circle.infomation(),circle.area(),circle.rounds())

# 封装一个学生类,有姓名,有年龄,有性别,有英语成绩,数学成绩,语文成绩;求总分,平均分,以及打印输出学生的相关信息。
class Student:
    def __init__(self, name, age, score):
        self.name = name
        self.age = age
        self.score = score[:]
    def get_name(self):
        return "姓名:%s" % (self.name)
    def get_age(self):
        return "{}岁了。".format(self.age)
    def get_average(self):
        return "平均分(保留两位小数):{}".format(round((self.score[0] + self.score[1] + self.score[2]) / 3,2)) #2是保留两位小数
    def get_sum(self):
        return '三门课程总分:{}'.format(self.score[0] + self.score[1] + self.score[2])
    # 另一种方法
    def get_sum1(self):
        return sum(self.score)
zm = Student('暖暖', 2, [69, 88, 100])
print("44.",zm.get_name(),zm.get_age(),zm.get_sum(),zm.get_average())

# 设计一个Person类,属性有姓名、年龄、性别,
# 创建方法personInfo,打印输出这个人的信息;
# 创建Student类,继承Person类,属性有学院college,班级Group,
# 重写父类PersonInfo方法,调用父类方法打印输出个人信息,将学生的学院、班级信息也打印输出出来。
class Person:
    def __init__(self,name,age,sex):
        self.name = name
        self.age = age
        self.sex = sex
    def personInfo(self):
        return "某人的姓名:{},年龄:{},性别:{}".format(self.name,self.age,self.sex)
class Student(Person): #有父类
    def __init__(self,name,age,sex,college,Group):
        Person.__init__(self,name,age,sex)  #继承
        self.college=college
        self.Group=Group
    def personInfo(self):   #重写
        print(super().personInfo()) #重写具体体现,先调用它父类的这个同名方法
        return "继承父类+学生的学院:{},年级:{}".format(self.college,self.Group)
    # def personInfo1(self):
    #     print(super().personInfo())
    #     return"学院:{}班级:{}".format(self.college,self.Group)
student=Student("寥寥",18,"女","大数据","2")
person = Person("旦旦",2,"未知")
print("45.1",person.personInfo())
print("45.2",student.personInfo()) #输出两行:某人的姓名:寥寥,年龄:18,性别:女 \n 继承父类+学生的学院:大数据,年级:2
print("45.3",student.name,student.age,student.sex,student.college)

# 定义一个交通工具(Vehicle)的类,属性:速度(speed)、体积(size)等等————时间(time)、加速度(acceleration)。
# 方法:移动move()、设置速度setSpeed(int speed)、加速speedUp()、减速speedDown()等等。
# 要求:实例化一个交通工具对象,通过方法初始化speed、size的值并且在相关方法中可以打印输出出来;
#       另外调用加速减速的方法对速度进行改变。
class Vehicle:
    def __init__(self,speed,size,time,acceleration):
        self.speed = speed
        self.size = size
        self.time = time
        self.acceleration = acceleration
    def move(self):
        return "已知小车初速度:{},加速度:{},体积:{}。".format(self.speed,self.acceleration,self.size)
    def setspeed(self):
        return "设置小车的初速度:{}。".format(self.speed)
    def speedUp(self):
        speed_end_up = self.speed + self.acceleration * self.time
        return "小车加速完后的速度是:{}。".format(speed_end_up)
    def speedDown(self):
        speed_end_down = self.speed - self.acceleration * self.time
        if speed_end_down < 0:
            return "小车减速完后速度是:0。"
        else:
            return "小车减速完后速度是:{}。".format(speed_end_down)
car = Vehicle(20,200,5,3)
print("46.",car.move(),car.setspeed(),car.speedUp(),car.speedDown())
  • 10
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值