10月12日学习总结

10月12日学习总结

一、读取csv文件

1. csv.reader(文件名, delimiter=’’, quotechar=’’)

  1. delimiter参数默认是逗号,但是如果值不是用逗号分隔的就要重新设定
  2. quotechar参数默认值是引号,但是如果值不是用引号包围的就需要重新指定
import csv

# utf-8-sig ---> 带签名的UTF-8 ---> 有字节序标记
with open('resources/2018年北京积分落户数据.csv', 'r', encoding='utf-8-sig') as file:
    reader = csv.reader(file)     # csv.reader(file, delimiter='#', quotechar='|')
    for line in reader:
        print(line)

二、将数据写入csv文件

1.csv.writer(文件名)
import csv

with open('resources/2018年北京积分落户数据.csv','a',encoding='utf-8-sig',newline='') as file:
    writer = csv.writer(file)
    # writer.writerow(['6020','王博杨','1997-11','北京千峰互联科技有限公司','121.13'])
    writer.writerows([
        ['6021', '王博杨', '1997-11', '北京千峰互联科技有限公司', '121.13'],
        ['6022', '王博杨', '1997-11', '北京千峰互联科技有限公司', '121.13'],
        ['6023', '王博杨', '1997-11', '北京千峰互联科技有限公司', '121.13']
    ])

三、读取csv文件转换成Excel格式

import csv

import openpyxl
from openpyxl.styles import Font, Alignment

workbook = openpyxl.Workbook()
sheet = workbook.active
sheet.title = '2018年'
with open('resources/2018年北京积分落户数据.csv', 'r', encoding='utf-8-sig') as file:
    reader = csv.reader(file)
    for line in reader:
        sheet.append(line)
workbook.save('resources/2018年北京积分落户数据.xlsx')
# 修改指定行的高度
sheet.row_dimensions[1].height = 40
cols_width = {
    'A': 30,
    'B': 50,
    'C': 60,
    'D': 180,
    'E': 50
}
# 修改指定列的宽度
for key in cols_width:
    sheet.column_dimensions[key].width = cols_width[key]
# 修改单元格的样式
for col in range(1, 6):
    sheet.cell(1, col).font = Font(name='中文 GB2312', size=22, bold=True, color='000000')
    sheet.cell(1, col).alignment = Alignment(horizontal='center', vertical='center')
workbook.save('resources/2018年北京积分落户数据.xlsx')

四. 读取Excel文件

1.workbook = openpyxl.load_workbook(文件路径):获取文件

2.workbook.sheetnames:获取工作表名

3.sheet = workbook.worksheets[下标]:获得第N个工作表

4.sheet.cell(行, 列).value/sheet[‘D3’].value:获取单元格的数据

5.sheet.dimensions:单元格的范围

6.sheet.max_row, sheet.max_column:获取表格最大的行数和列数

"""
example04 - 读取Excel文件
"""
import openpyxl

# 加载Excel文件 ---> Workbook
workbook = openpyxl.load_workbook('resources/口罩销售数据.xlsx')

# 获取所有工作表的名字
print(workbook.sheetnames)

# 获取第一个工作表 --->Worksheet
sheet = workbook.worksheets[0]
print(sheet)

# 获取单元格的数据
print(sheet.cell(3,4).value)
print(sheet['D3'].value)

# 单元格的范围
print(sheet.dimensions)

# 获取表格的行数和列数
print(sheet.max_row,sheet.max_column)

# 循环遍历所有的数据
# for row in range(1,sheet.max_row+1):
#     for col in range(1,sheet.max_column+1):
#         print(sheet.cell(row,col).value,end='\t')
#     print()
for row in range(2,sheet.max_row + 1):
    for col in 'ABCDEF':
        print(sheet[f'{col}{row}'].value,end='\t')
    print()

五、面向对象变成(OOP)

"""
example05 - 面向对象编程(OOP)

用对象的概念将数据和操作数据的函数从逻辑上组织成一个整体
在面向对象的世界里,我们要解决任何问题都是通过先创建对象,然后给对象发出消息。

对象 - 接收消息的实体 ---> 具体概念
类 - 对象的蓝图和模板 ---> 抽象概念
1.一切皆为对象
2.每个对象都是独一无二的
3.对象都有静态特征(属性)和动态特征(行为)
4.对象都属于某个类

面向对象编程的实施步骤:
1.定义类
    - 数据抽象:给出对象的静态特征 ---> 属性
    - 行为对象:给出对象的动态特征 ---> 行为
2.创建对象
3.给对象发消息

"""


# 第1步:定义类
class Rectangle:
    """矩形"""

    def __init__(self, width, height):
        """初始化方法
        :param width: 矩形的宽度
        :param height: 矩形的高度
        """
        self.width = width
        self.height = height

    def perimeter(self):
        """计算周长"""
        return (self.width + self.height) * 2

    def area(self):
        """计算面积"""
        return self.width * self.height


# 第2步:创建对象 ---> 构造器语法
rect = Rectangle(width=5, height=3)

# 第3步:给对象发消息
print(f'矩形的周长是{rect.perimeter()}')
rect.area()


# 第1步:定义类
class Student:
    """学生"""

    def __init__(self, name, age):
        """初始化方法
        :param name: 学生名字
        :param age: 学生年龄
        """
        self.name = name
        self.age = age

    def study(self, course_name):
        """学习"""
        return f'{self.name}正在学习{course_name}'

    def play(self):
        """玩耍"""
        return f'{self.name}正在玩耍'

    def eat(self):
        """吃饭"""
        return f'{self.name}正在吃饭'


# 第2步:创建对象 ---> 构造器语法
stu1 = Student('王博杨', 23)
stu2 = Student('王大锤', 45)

# 第3步:给对象发消息
print(stu1.study('python'))
print(stu2.play())

# import math
#
# # 第一步:定义类
# class Circle:
#     """圆"""
#
#     def __init__(self, radius):
#         self.radius = radius
#
#     def perimeter(self):
#         return 2 * math.pi * self.radius
#
#     def area(self):
#         return math.pi * self.radius ** 2
#
# # 第二步:创建对象
# r = float(input('请输入游泳池的半径:'))
# c1, c2 = Circle(r),Circle(r + 3)
#
# # 第三步:给对象发消息
# fence_price = c2.perimeter() * 38.2
# aisle_price = (c2.area() - c1.area()) * 28.5
#
# print(f'过道的造价为:{fence_price:.2f}元')
# print(f'围墙的造价为:{aisle_price:.2f}元')

import math
class Circle:


    def __init__(self,r):
        self.r = r

    def zhouchang(self):
        return math.pi*2*self.r

    def area(self):
        return math.pi * self.r**2

r = float(input('请输入游泳池的半径:'))
c1 = Circle(r)
c2 = Circle(r+3)



guodao_price=(c2.area() - c1.area()) * 28.5
weiqiang_price=c2.zhouchang() * 38.2
print(guodao_price)
print(weiqiang_price)
# 练习2:定义类描述数字时钟
import time


class ClockInfoSystem:
    """时钟"""

    def __init__(self, hour=0, minute=0, second=0):
        """初始化方法
        :param hour: 时针
        :param minute: 分针
        :param second: 秒针
        """
        self.hour = hour
        self.minute = minute
        self.second = second

    def show(self, mode_12=False):
        """显示时间
        :param mode_12: 是否使用12小时制式
        :return:
        """
        if mode_12:
            if self.hour < 12:
                return f'{self.hour:0>2d}:{self.minute:0>2d}:{self.second:0>2d} AM'
            else:
                hour = self.hour - 12 if self.hour > 12 else self.hour
                return f'{hour:0>2d}:{self.minute:0>2d}:{self.second:0>2d} PM'
        return f'{self.hour:0>2d}:{self.minute:0>2d}:{self.second:0>2d}'

    def run(self):
        """走字"""
        self.second += 1
        if self.second == 60:
            self.second = 0
            self.minute += 1
            if self.minute == 60:
                self.minute = 0
                self.hour += 1
                if self.hour == 24:
                    self.hour = 0


clock = ClockInfoSystem(23, 59, 58)

while True:
    # 通过os模块的system函数调用系统命令
    # 清屏:Windows ---> cls
    # import os
    # os.system('cls')
    print(clock.show(True))
    time.sleep(1)
    clock.run()
练习:倒计时
import time

class CountDown_Clock:

    def __init__(self,hour,minute,second):
        self.hour = hour
        self.minute = minute
        self.second = second

    def show(self):
        return f'{self.hour:0>2d}:{self.minute:0>2d}:{self.second:0>2d}'


    # def is_over(self):
    #     return self.hour == 0 and self.minute == 0 and self.second == 0

    def run(self):
        self.second -= 1
        if self.second == -1:
            self.second = 59
            self.minute -= 1
            if self.minute == -1:
                self.minute = 59
                self.hour -= 1

countdown_clock = CountDown_Clock(0,0,13)
while True:
    if countdown_clock.show() == '00:00:00':
        print(countdown_clock.show())
        print('你被骗了,炸弹是假的,不会爆炸')
        break
    else:
        print(countdown_clock.show())
        time.sleep(1)
        countdown_clock.run()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值