学校老师布置的python作业,可能有你想要的答案

目录:

Day1 python基础和列表操作
Day2 循环及列表高级操作(步长)
Day3 函数、元素翻转、判断字符串、计算键值乘积
Day4 计算集合差并交、字典升序排列、定义圆类算周长面积
Day5 python面向对象
Day6 python爬虫网络基础知识
Day7 爬虫基础

Day1 python基础和列表操作

0.如何在Python中一次性输入多个参数
a,b,c=map(int,input().split(','))
1.import module与from module import* 的区别

import module将整个模块(module)导入;from module import*将某个模块中的全部函数导入

2.字符串不能改变是那种含义?试用程序验证说明

在这里插入图片描述

3.编程实现有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?

在这里插入图片描述

5.定义List=[‘a’,‘b’,0,1,‘c’]输出前三个元素,输出第2个和第5个元素,输出除第一个外所有元素。

在这里插入图片描述在这里插入图片描述
返回顶部


Day2 循环及列表高级操作(步长)

0.List1=[2,4,6] list2=[1,3,5]将List1和List2合并,并升序排列

在这里插入图片描述

1.一个小于100的正整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

在这里插入图片描述

2.从键盘任意获取一串数字,实现让他们错落相加并将结果输出。如:12345 错落相加 1+3+5 2+4 最终结果96,123456 错落相加 1+3+5 2+4+6 最终结果912

在这里插入图片描述

3.从键盘上获取任意一串英文,实现: (1)将重复字符去掉 (2)将大写转换成小写,小写转换成大写。如:abC 处理后 Abc

在这里插入图片描述
在这里插入图片描述
返回顶部


Day3 函数、元素翻转、判断字符串、计算键值乘积

0.请编写用例并加以说明,解释Python中赋值拷贝、深拷贝与浅拷贝的区别

b = a: 赋值引用,a 和 b 都指向同一个对象。
b = a.copy(): 浅拷贝, a 和 b 是一个独立的对象,但他们的子对象还是指向统一对象(是引用)。
b = copy.deepcopy(a): 深度拷贝, a 和 b 完全拷贝了父对象及其子对象,两者是完全独立的。
代码:

import copy
a = [1, 2, 3, 4, ['a', 'b']]  # 原始对象
b = a  # 赋值,传对象的引用
c = copy.copy(a)  # 对象拷贝,浅拷贝
d = copy.deepcopy(a)  # 对象拷贝,深拷贝
a.append(5)  # 修改对象a
a[4].append('c')  # 修改对象a中的['a', 'b']数组对象
print('a = ', a) 
print('b = ', b)  #a 和 b 都指向同一个对象,a 变 b 也变
print('c = ', c)  #浅拷贝引用类型才修改,基本数据类型不修改
print('d = ', d)  #深拷贝都修改

结果:

a =  [1, 2, 3, 4, ['a', 'b', 'c'], 5]
b =  [1, 2, 3, 4, ['a', 'b', 'c'], 5]
c =  [1, 2, 3, 4, ['a', 'b', 'c']]
d =  [1, 2, 3, 4, ['a', 'b']]
1.编写函数实现指定个数的元素翻转到数组的尾部。

#例如:arr = [1,2,3,4,5,6] 将长度为 6 的 数组 arr 的前面 2 个元素翻转到数组尾部。
#得到: arr = [3,4,5,6,1,2]
代码:

#将所有元素右移二次
def leftRotate(arr, d, n):
    for i in range(d):
        leftRotatebyOne(arr, n)
def leftRotatebyOne(arr, n):
    temp = arr[0]
    for i in range(n - 1):
        arr[i] = arr[i + 1]
    arr[n - 1] = temp
def printArray(arr, size):
    for i in range(size):
        print("%d" % arr[i], end=" ")
arr = [1, 2, 3, 4, 5, 6]
leftRotate(arr, 2, 6)
printArray(arr, 6)

结果:

3 4 5 6 1 2 
2.编写程序实现给定一个字符串,然后判断指定的子字符串是否存在于该字符串中。

代码:

str = "I am a programmer"
if "pro" in str:
    print("pro存在")
else:
    print("pro不存在")
if str.find("python") >=0:
    print("python存在")
else:
    print("python不存在")

结果:

pro存在
python不存在
3.编写程序实现给定一个字典,计算所有键值为数字值的乘积。

代码:

dict = {"zhangsan" : 1, "lisi" : 2, "wangwu" : 3, "zhaoliu" : 4}
mult = 1
for i in dict:
    if(type(dict[i]) == int):
        mult *= dict[i]
    else:
        continue
print(mult)

结果:

24

返回顶部


Day4 计算集合差并交、字典升序排列、定义圆类算周长面积

0.编写函数实现输入任意两个集合及对应运算符,能够返回两个集合的计算的结果,如集合A = {1,2,3} B = {2,3} 运算符 - 得到计算结果为A与B的差集,Result = {1}

代码:

set1 = set(input("第一个集合:").split(","))
set2 = set(input("第二个集合:").split(","))
str = input("请输入运算符:")
if str == "+":
    print("交集:", set1 & set2)
elif str == "*":
    print("并集:", set1 | set2)
elif str == "-":
    print("差集:", set1 - set2)
else:
    print("输入错误")

结果:

第一个集合:1,2,3
第二个集合:2,3
请输入运算符:-
差集: {'1'}
1.编写函数实现输入任意键值均为数字的字典,可以返回按字典的键值升序排列的新字典。如字典dict = {‘a’:1,‘b’:3,‘c’:2},输出为[(‘a’, 1), (‘c’, 2), (‘b’, 3)]

代码:

dict = dict(eval(input()))
sorted_dict=sorted(dict.items(),key=lambda x:x[1])
print(sorted_dict)

结果:

{'a':1,'b':3,'c':2}
[('a', 1), ('c', 2), ('b', 3)]
2.定义Circle(圆)类,成员包括圆心位置、半径、颜色等属性。编写构造方法和其他方法,计算周长和面积

代码:

class Circle:
    # 定义私有属性
    _local = 0
    _radius = 0
    _color = ""
    # 定义构造方法
    def __init__(self, local, radius, color):
        self._local = local
        self._radius = radius
        self._color = color
    def show(self):
        print("该圆属性为:%f,%d,%s" % (self._local, self._radius, self._color))
    def zhouchang(self):
        return 3.14 * 2 * self._radius
    def area(self):
        return 3.14 * self._radius * self._radius
l=float(input("位置:"))
r=int(input("半径:"))
c=str(input("颜色:"))
circle = Circle(l,r,c)
circle.show();
print("周长:"+str(circle.zhouchang()))
print("面积:"+str(circle.area()))

结果:

位置:10.8
半径:4
颜色:红
该圆属性为:10.800000,4,红
周长:25.12
面积:50.24

返回顶部


Day5 python面向对象

0.定义people类包含公有属性:姓名。私有属性:基本工资。
通过构造函数对其初始化、输出函数(输出所有成员)、私有成员的存取函数。
定义people的派生类—销售员类—包含销售量和销售区域属性。
通过构造函数对其初始化,输出函数(输出所有成员).
计算工资函数(销售量10002%即为提成工资+父类people中的基本工资)
定义people的派生类—储备干部类—包括私有成员储备等级(等级值范围1-5,5级别最高,可以依照储备类别升职)和储备类别属性.
通过构造函数对其初始化(默认初始化基本工资3000,储备等级1等,其他属性由输入参数决定).
输出函数(输出所有成员),薪资函数(依照等级提升薪资)(储备等级每升1挡,工资增加1000)
提升等级函数(可以调用该方法修改等级,调用一次提升一档,注意工资要跟随产生变化,最高等级5级)
定义多继承类—销售经理类—包含公有属性管理区域,经理的工资包含基本工资1W+销售区域提成(区域总数量*0.5%),构造函数和输出函数
class people:
    # 定义私有属性
    name = ""
    # 定义公有属性
    _salary = 0
    # 定义构造方法
    def __init__(self, name, salary):
        self.name = name
        self._salary = salary
    def setSalary(self,salary):
        self._salary = salary
    def getSalary(self):
        return self._salary
    def show(self):
        print("姓名 :%s   基本工资:%d" %(self.name,self._salary))

class Seller(people):
    number = 0
    region = ''
    def __init__(self, name, salary, number, region):
        people.__init__(self, name, salary)
        self.number = number
        self.region = region
    def allSalary(self):
        all = self.number * 1000 * 0.02 + people.getSalary(self)
        return all
    def show(self):
        print("姓名 :%s   销售量:%d   销售区域: %s   工资 %d: " %
                  (self.name, self.number, self.region,self.allSalary()))

class Position(people):
    level = 1  # 等级
    type = 0
    def __init__(self, name, type):
        self.name = name
        self.type = type
        self._salary = 3000
        self.level = 1
    def addLevel(self):
        self.level += 1;
    def showSalary(self):
        if self.level == 1:
            return self._salary
        elif self.level == 2:
            return self._salary + 1000
        elif self.level == 3:
            return self._salary + 2000
        elif self.level == 4:
            return self._salary + 3000
        elif self.level == 5:
            return self._salary + 4000
    def show(self):
        print("姓名 :%s   薪资:%d   等级:%d   类别:%d " %
              (self.name, self.showSalary(), self.level, self.type))

class Manager(Seller, Position):
    area = 0
    def __init__(self, name, salary, number, region, level, type, area):
        Position.__init__(self, name, type)
        Seller.__init__(self, name, salary, number, region)
        self.area = area
    def AllSalary(self):
        allSalary = self.area * 0.005 + 10000
        return allSalary
    def show(self):
        print("姓名 :%s   管理地区: %s   管理区域个数:%d   工资:%d" %
                  (self.name, self.region, self.area,self.allSalary()))
s = Seller("张三", 5000, 100, "上海")
s.show()
p = Position("李四", 3)
p.show()
p.addLevel()
p.show()
m = Manager("王五", 30000, 66, "北京", 4, 1, 998)
m.show()
姓名 :张三   销售量:100   销售区域: 上海   工资 7000: 
姓名 :李四   薪资:3000   等级:1   类别:3 
姓名 :李四   薪资:4000   等级:2   类别:3 
姓名 :王五   管理地区: 北京   管理区域个数:998   工资:31320
1. 通过查找内置函数解决,输入指定的年份,月份和日期(如13号),能判断当天是星期几。
import datetime
year=int(input("年:"))
month=int(input("月:"))
day=int(input("日:"))
week=int(datetime.datetime(year,month,day).strftime("%w"))
def getNumber(week):
    if week==1:
        return "一"
    elif week==2:
        return "二"
    elif week == 3:
        return "三"
    elif week==4:
        return "四"
    elif week==5:
        return "五"
    elif week==6:
        return "六"
    elif week==7:
        return "日"
print("%d年%d月%d日是星期%s"%(year,month,day,getNumber(week)))
年:2020
月:3
日:11
2020311日是星期三

返回顶部


Day6 python爬虫网络基础知识

0.用自己的理解描述URL和URI的联系

URI用来唯一的标识一个资源。Web上可用的每种资源如HTML文档、图像、视频片段、程序等都是一个URI来定位的,URL是统一资源定位器,它是一种具体的URI,即URL可以用来标识一个资源,而且还指明了如何locate这个资源。

1.用自己的理解描述HTTP请求过程

客户端发送一个携带请求行、请求头、空行和请求数据的HTTP请求到服务器,服务器接收并处理客户端发过来的请求后会返回一个包含状态行、消息报头、空行和响应正文的HTTP响应消息。

2.用自己的理解描述DOM对网页爬取的影响

通过DOM可以访问一个元素的父元素或者子元素,可以利用DOM指定需要爬取的元素。

3.用自己的理解描述爬虫的基本原理

提取静态网页、ajax携带的json数据、cookie、session等内容并保存到数据库中。
返回顶部


Day7 python爬虫基础

0.通过urllib库爬取www.taobao.com的源码,并设置如果响应时间超过0.1秒则抛出异常提示。
from urllib import request, error
try:
    response = request.urlopen(url='https://www.taobao.com/',timeout=0.1)
    print(response.read().decode('utf-8'))
except Exception as e:
    print(str(e))
1.通过urllib爬取http://www.13333.cn/,若无法访问则利用异常处理返回无法访问的原因及状态码。
from urllib import request, error
try:
    response = request.urlopen('http://www.13333.cn/')
    print(response.read().decode('utf-8'))
except error. URLError as e:
    print(e.reason, e.code)

返回顶部


  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值