【Python】实战100例

前言

        欢迎来到《100道Python实例练习》!Python作为一种简洁而强大的编程语言,具有广泛的应用领域,从数据分析到网页开发再到人工智能。通过练习,您将有机会巩固Python的基础知识,并提高您的编程技能。

        这份练习旨在帮助初学者和有经验的开发人员深入了解Python编程语言的核心概念和实践技巧。每个练习都设计得非常简洁,并包含了详细的指导说明,以便帮助您解决问题和提高您的编程能力。无论您是想要提升编程技能,还是准备应对面试或解决实际问题,这些练习都将对您有所帮助。

        在这100个实例中:

             实例(1-13)                             -------聚焦于字符界面程序

             实例(14-22)                           -------聚焦于文件系统程序

             实例(23-32)                           -------聚焦于Office编程

        在开始之前,请确保您已经安装了Python解释器并熟悉基本的编程概念。如果您遇到任何困难,可以随时查阅Python官方文档或在互联网上寻找相关资源。祝您在这个Python编程之旅中取得成功!

        无论您是要加强自己的Python编程技能,还是要为未来的项目做准备,这些练习都将成为您宝贵的学习资料。祝您编程愉快!

祝好,

Maiberrr

笔者手敲时间线(督促自己所用,可跳过)

        目前手敲到了实例七。                                                                           2023.11.03

        目前手敲到了实例十四。                                                                        2023.11.05

        目前手敲到了实例二十二。                                                                    2023.11.08

        

实例一 打印九九乘法口诀表

        这段代码使用了两个嵌套的 for 循环。第一个循环控制了乘法表的行数,而第二个循环控制了每一行中的元素。代码的主要部分如下:



# 打印99乘法口诀表

for i in range(1,10):
    for j in range(1,i+1):
        print('{0}+{1}={2}'.format(j,i,i+j),end=' ')
    print('')

   

实例二 打印斐波那契数列

        斐波那契数列是一个经典的数学问题,它是一个以递归的方式定义的整数数列,其中每个数字是前两个数字的和。通常,斐波那契数列的前两个数字是 0 和 1。数列开始如下:0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ...

        代码如下(手懒了,注释下次一定):

#实现斐波那契数列



def fab(n):
    if n <=0:
        return '必须比0大'
    elif n == 1:
        return 0
    else:
        a,b=0,1
        fab_list = [0,1]
        for i in range(n-2):
            a,b=b,a+b
            fab_list.append(b)
        return fab_list
print(fab(11))

实例三 txt格式的文本分词,并计算次数

        对txt格式的文本进行分词,并查询出现次数。(原文在实例三最下面,可供复制)

        代码如下:


# 对文本进行分词

import re

def get_char (txt):

    # 将txt里的单词分割放入vlist列表中(split会自动生成列表)
    vlist = re.split(r'[:;,."\s]\s*',txt)

    # 生成字典变量,key—value,key保存单词,value保存出现次数
    # 目前是空字典
    vdic_frequency = dict()

    # 遍历vlist,填满字典
    for vchar in vlist:
        if vchar in vdic_frequency:
            vdic_frequency[vchar]+=1
        else:
            vdic_frequency[vchar] = 1

    # reverse是倒序排序
    # !!!!true必须用True才能表达是真,
    vdic_sort = sorted(vdic_frequency.items(),key=lambda item:item[1],reverse=True)

    return vdic_sort

if __name__ == '__main__':
    with open('exer3_document.txt') as f:
        vtext= f.read()
        vstr = get_char(vtext)
        print('列表的单词有:')
        print(vstr)




运行结果如下:

列表的单词有:
[('in', 4), ('the', 3), ('of', 3), ('more', 3), ('rooms', 3), ('homes', 2), ('average', 2), ('single-family', 2), ('home', 2), ('built', 2), ('was', 2), ('than', 2), ('square', 2), ('feet', 2), ('size', 2), ('This', 1), ('is', 1), ('reflected', 1), ('our', 1), ('The', 1), ('United', 1), ('States', 1), ('before', 1), ('1970', 1), ('less', 1), ('1', 1), ('500', 1), ('By', 1), ('2016', 1), ('a', 1), ('new', 1), ('2', 1), ('422', 1), ('What鈥檚', 1), ('2000s', 1), ('were', 1), ('likely', 1), ('earlier', 1), ('models', 1), ('to', 1), ('have', 1), ('all', 1), ('types', 1), ('spaces', 1), ('bedrooms', 1), ('bathrooms', 1), ('living', 1), ('dining', 1), ('recreation', 1), ('and', 1), ('garages', 1), ('', 1)]

原文如下,你可以复制下来保存到文件,以确保可以练习python读取文件的语句。

This is reflected in our homes. The average single-family home built in the United States before 1970 was less than 1,500 square feet in size. By 2016, the average size of a new, single-family home was 2,422 square feet. What’s more, homes built in the 2000s were more likely than earlier models to have more of all types of spaces: bedrooms, bathrooms, living rooms, dining rooms, recreation rooms and garages.

实例四 简单密码校验

一个简单密码校验,要求如下:

# 密码要求如下:
# 1.长度不少于八位
# 2.必须有大写,小写,数字,其他字符组成
# 3.密码中不能出现重复包含长度超过4的子串
# 简单密码校验
# 密码要求如下:
# 1.长度不少于八位
# 2.必须有大写,小写,数字,其他字符组成
# 3.密码中不能出现重复包含长度超过4的子串

# 先定义函数确保密码在八位以上
def check_len(pwd):
    if len(pwd) >=8:
        return True
    else:
        return False


# 定义函数检查密码由大写,小写,数字,其他字符组成
def check(pwd):
    # 初始化一个列表遍历,四位的,用来确认密码复杂度,
    check = [0,0,0,0]

    for char in pwd:
        # 如果有小写,则check[0]变为1
        if char.islower():
            check[0] = 1
        # 如果有大写,则check[1]变为1
        if char.isupper():
            check[1] = 1
        # 如果有数字,则check[2]变为1
        if char.isdigit():
            check[2] = 1
        # 如果是其他字符(即除了字母,数字,空格),则check[3]变为1
        if not (char.isdigit() | char.isalpha() | char.isspace()):
            check[3] = 1


    # 根据check总和,判断密码复杂度,若小于4,则不符合返回Flase
    if sum(check) < 4:
        return False
    else:
        return True

# 检查是否有四位字串重复
def check_rep(pwd):
    n = len(pwd)
    for i in range(n-4):
        # 定义两个四位子串
        str1 = pwd[i:i+4]
        str2 = pwd[i+4::]

        # 如果str2中存在一个str1,说明重复
        if str1 in str2:
            return False
        else:
            return True


# 定义主函数
if __name__ == '__main__':
    msg = '''
    请设置密码,并符合以下要求
    1.密码长度不超过8位
    2.必须有大写,小写,数字,其他字符组成
    3.密码中不能出现重复包含长度超过4的子串
    '''

    print(msg)
    # 提示输入密码
    while True:
        pwd = input('请输入密码:')
        # 如果输入‘q’,则退出程序
        if pwd == 'q':
            print('退出程序...')
            break
        # 检查密码长度
        vcheck1 = check_len(pwd)
        if not vcheck1:
            print('密码长度错误,请重新输入。')
            continue
        # 检查密码复杂度
        vcheck2 = check(pwd)
        if not vcheck2:
            print('密码必须有大写,小写,数字,其他字符组成,请重新输入。')
            continue
        # 检查是否有子串重复
        vcheck3 = check_rep(pwd)
        if not vcheck3:
            print('存在重复,请重新输入。')
            continue
        print('密码格式正确!')
        break

实例五 简单的密码加密

一个简单的密码加密

原理:通过密码内容的替换达到加密,远不及MD5,Base64,SHA1。但练习足以。

代码如下:

# #简单加密程序
# 1.形成密码前缀
# 2.密码字符转换
# 3.加密程序

#形成前缀的自定义函数
def passwd_pre(pwd):
    vret = []

    # 遍历密码的每一位,替换为另一个字符
    for char in pwd:
        if char in 'abc':
            char = '!'
        elif char in 'def':
            char = '@'
        elif char in 'ghi':
            char = '#'
        elif char in 'jkl':
            char = '%'
        elif char in 'mno':
            char = '^'
        elif char in 'pqr':
            char = '&'
        elif char in 'stu':
            char = '*'
        elif char in 'vwx':
            char = '>'
        elif char in 'yz':
            char = '?'
        elif char in 'Z':
            char = 'a'
            # 检查为大写的(除了Z)的char会被变为转为16位数然后+1,就会变成下一个字母的小写形式
        elif char.isupper():
            char = chr(ord(char.lower()) + 1 )
        # 添加道vret列表中
        vret.append(char)
        # join函数的使用形式举例如下:
        # my_tuple = ('This', 'is', 'a', 'tuple')
        # joined_string = '_'.join(my_tuple)
        # print(joined_string)  # 输出: This_is_a_tuple
        return ''.join(vret)


# 2.密码字符转换
def change_txt(pwd,str1,str2):
    # 初始化返回值
    vret = ''
    # 将密码转为小写
    pwd = pwd.lower()
    for char in pwd:
        j = str1.find(char)
        # 如果没有找到,find函数会返回-1
        if j == -1:
            # 没有找到就保持字符原值
            vret = vret +char
        else:
            # 找到后,就根据这个索引值在str2中取一个字符替换
            vret = vret + str2[j]
    return vret


# 3.加密程序
def change_password(pwd):
    if pwd == None:
        return -1
    vret = ''
    vpre = passwd_pre(pwd)
    vlen = len(pwd)

    vstr = change_txt(pwd,"1234567890abcdefghijklmnopqrstuvwxyz","abcdefghijklmnopqrstuvwxyz1234567890")

    if vlen <=4:
        vret = vpre + vstr[0:vlen]
    else:
        vret = vpre + vstr[0:4]

    vstr = change_txt(pwd, "1234567890abcdefghijklmnopqrstuvwxyz", "qwertyuiopasdfghjklmnbvcxz0987654321")

    if vlen <= 4:
        vret = vpre + vstr[0:vlen]
    else:
        vret = vpre + vstr[0:4]

    vstr = change_txt(pwd, "1234567890abcdefghijklmnopqrstuvwxyz", "lqaz2wsx3edc4rfv5tgb6yhn7ujm8ik9ol0p")

    if vlen <= 4:
        vret = vpre + vstr[0:vlen]
    else:
        vret = vpre + vstr[0:4]

    vstr = change_txt(pwd, "1234567890abcdefghijklmnopqrstuvwxyz", "pl0okm9ijn8uhb7ygv6tfc5rdx4esz3wa2q1")

    if vlen <= 4:
        vret = vpre + vstr[0:vlen]
    else:
        vret = vpre + vstr[0:4]

    return vret


# 主函数
if __name__ == '__main__':
    while True:
        pwd = input('请输入密码')
        if pwd == 'q':
            print('退出程序...')
            break
        else:
            pwdnew =change_password(pwd)
            print('您输入的密码是:',pwd,'加密后的密码是:',pwdnew)




实例六 获取汉字的首字母

获取汉字的首字母,代码如下:

# 获取汉字的首字母
# gbk规则:第一个字节小于176就不是汉字

# 读入文件
def read_txt(file):
    with open(file,'r') as f:
        txt = f.read()
    return txt

def get_first_letter(str_hz):
    # 初始化返回值
    vret =''
    for char in str_hz:
        # 第一个字节小于176就不是汉字
        vchar = char.encode('gbk')
        if vchar[0] <176:
            vret +=char
        elif (vchar[0]>=176 and vchar[0] <=215):
            if (vchar >= "匝".encode('gbk')):
                vret += 'z'
            elif (vchar >= "压".encode('gbk')):
                vret += 'y'
            elif (vchar >= "昔".encode('gbk')):
                vret += 'x'
            elif (vchar >= "挖".encode('gbk')):
                vret += 'w'
            elif (vchar >= "榻".encode('gbk')):
                vret += 't'
            elif (vchar >= "撒".encode('gbk')):
                vret += 's'
            elif (vchar >= "然".encode('gbk')):
                vret += 'r'
            elif (vchar >= "期".encode('gbk')):
                vret += 'q'
            elif (vchar >= "啪".encode('gbk')):
                vret += 'p'
            elif (vchar >= "哦".encode('gbk')):
                vret += 'o'
            elif (vchar >= "拿".encode('gbk')):
                vret += 'n'
            elif (vchar >= "妈".encode('gbk')):
                vret += 'm'
            elif (vchar >= "垃".encode('gbk')):
                vret += 'l'
            elif (vchar >= "喀".encode('gbk')):
                vret += 'k'
            elif (vchar >= "击".encode('gbk')):
                vret += 'j'
            elif (vchar >= "哈".encode('gbk')):
                vret += 'h'
            elif (vchar >= "噶".encode('gbk')):
                vret += 'g'
            elif (vchar >= "发".encode('gbk')):
                vret += 'f'
            elif (vchar >= "蛾".encode('gbk')):
                vret += 'e'
            elif (vchar >= "搭".encode('gbk')):
                vret += 'd'
            elif (vchar >= "擦".encode('gbk')):
                vret += 'c'
            elif (vchar >= "芭".encode('gbk')):
                vret += 'b'
            elif (vchar >= "啊".encode('gbk')):
                vret += 'a'
        elif (vchar[0] > 215):
            second_hz = read_txt('second_ch.txt')
            second_en = read_txt('second_first_py.txt')
            index_ch = second_ch.find(char)
            vret += second_en[index_ch].lower()
    return vret


if __name__ == '__main__':
    print('字符串:人生苦短,获取首字母',get_first_letter('人生苦短'))

实例七 打印彩色字符

        命令行不仅可以显示黑白文字,也可以是彩色的,代码如下:

        偷懒只写了俩前景色,至于其它,在具体应用时,直接复制不是更快(?)

# 打印彩色字符
def color_set(str,sel_color):
    # 只设置了两个颜色的前景色,背景色未设置
    color_dic = {'RED':'\033[31m','GREEN':'\033[32m','NORMAL':'\33[0m'}
    # 颜色参数统一为大写
    set_color = sel_color.upper()

    if sel_color in color_dic.keys():
        return '%s%s%s' % (color_dic[sel_color],str,color_dic['NORMAL'])
    else:
        return '%s%s%s' % (color_dic['NOLMAL'],str,color_dic['NORMAL'])


if __name__ == '__main__':
    print(color_set('这是红色','RED'))

实例八 分段读取大文本文件

        以下yeild语句解释由chatGPT生成:

        当你需要编写一个生成器函数时,yield 语句是一个非常有用的工具。生成器函数是一种特殊的函数,它可以暂停并在稍后继续执行。这使得生成器非常适合处理大量的数据或者无限序列,因为它们允许你逐步产生结果而不是一次性产生所有结果。

        当你在函数中使用 yield 语句时,该函数将会成为一个生成器。每次调用生成器时,它都会执行函数直到遇到 yield 语句,然后暂停并返回 yield 后面的值。下一次调用生成器时,它将从暂停的位置继续执行,直到再次遇到另一个 yield 语句或者函数结束。

        yield 语句的强大之处在于它允许你编写可迭代的代码,同时避免一次性产生大量的数据,从而节省内存空间。生成器函数在处理大型数据集、无限序列或者需要逐步生成结果的情况下非常有用。

        so,这个很适合读取大文本文件以减轻处理器压力,减轻卡顿。

        那现在来看看实例八,代码如下:

          ps:作者所用大文本文件由GPT随机生成,并无实意,我已经粘贴在实例八最下面,以供使用。

        

# 用field读取大文本文件

# 先定义一个读大文件的函数
def read_block(fname):
    # 定义每次读取的字节数
    vsize = 512
    # 以二进制格式打开文件
    with open(fname,'rb') as f:
        while True:
            # 规定以512字节读取
            content = f.read(vsize)
            if content:
                yield content
            else:
                return

if __name__ == '__main__':
    # 写入本地文件路径
    fname_path = r'D:\py\EXER\venv\exer8_document.txt'
    read_test = read_block(fname_path)
    i = 0
    for vcontent in read_test:
        i +=1
        print('第' + str(i) + '读取的内容是:')
        print(vcontent)

附录(大文本文件)如下:

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc id ex sed leo tristique imperdiet. Fusce sollicitudin volutpat justo, a efficitur odio lacinia vitae. Quisque varius dolor non imperdiet efficitur. Aliquam tincidunt auctor lectus, at aliquet ligula ullamcorper ac. Duis tempus magna id odio commodo fermentum. Phasellus rutrum metus ut diam aliquam, vel vestibulum ligula ultrices. Proin id velit nec tortor scelerisque tempus. Suspendisse potenti. Integer luctus dolor ut lacus pharetra, id tristique augue vestibulum. Morbi tempus finibus tellus, vitae aliquet nunc posuere a. Donec sed nunc ut massa mattis cursus.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc id ex sed leo tristique imperdiet. Fusce sollicitudin volutpat justo, a efficitur odio lacinia vitae. Quisque varius dolor non imperdiet efficitur. Aliquam tincidunt auctor lectus, at aliquet ligula ullamcorper ac. Duis tempus magna id odio commodo fermentum. Phasellus rutrum metus ut diam aliquam, vel vestibulum ligula ultrices. Proin id velit nec tortor scelerisque tempus. Suspendisse potenti. Integer luctus dolor ut lacus pharetra, id tristique augue vestibulum. Morbi tempus finibus tellus, vitae aliquet nunc posuere a. Donec sed nunc ut massa mattis cursus.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc id ex sed leo tristique imperdiet. Fusce sollicitudin volutpat justo, a efficitur odio lacinia vitae. Quisque varius dolor non imperdiet efficitur. Aliquam tincidunt auctor lectus, at aliquet ligula ullamcorper ac. Duis tempus magna id odio commodo fermentum. Phasellus rutrum metus ut diam aliquam, vel vestibulum ligula ultrices. Proin id velit nec tortor scelerisque tempus. Suspendisse potenti. Integer luctus dolor ut lacus pharetra, id tristique augue vestibulum. Morbi tempus finibus tellus, vitae aliquet nunc posuere a. Donec sed nunc ut massa mattis cursus.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc id ex sed leo tristique imperdiet. Fusce sollicitudin volutpat justo, a efficitur odio lacinia vitae. Quisque varius dolor non imperdiet efficitur. Aliquam tincidunt auctor lectus, at aliquet ligula ullamcorper ac. Duis tempus magna id odio commodo fermentum. Phasellus rutrum metus ut diam aliquam, vel vestibulum ligula ultrices. Proin id velit nec tortor scelerisque tempus. Suspendisse potenti. Integer luctus dolor ut lacus pharetra, id tristique augue vestibulum. Morbi tempus finibus tellus, vitae aliquet nunc posuere a. Donec sed nunc ut massa mattis cursus.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc id ex sed leo tristique imperdiet. Fusce sollicitudin volutpat justo, a efficitur odio lacinia vitae. Quisque varius dolor non imperdiet efficitur. Aliquam tincidunt auctor lectus, at aliquet ligula ullamcorper ac. Duis tempus magna id odio commodo fermentum. Phasellus rutrum metus ut diam aliquam, vel vestibulum ligula ultrices. Proin id velit nec tortor scelerisque tempus. Suspendisse potenti. Integer luctus dolor ut lacus pharetra, id tristique augue vestibulum. Morbi tempus finibus tellus, vitae aliquet nunc posuere a. Donec sed nunc ut massa mattis cursus.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc id ex sed leo tristique imperdiet. Fusce sollicitudin volutpat justo, a efficitur odio lacinia vitae. Quisque varius dolor non imperdiet efficitur. Aliquam tincidunt auctor lectus, at aliquet ligula ullamcorper ac. Duis tempus magna id odio commodo fermentum. Phasellus rutrum metus ut diam aliquam, vel vestibulum ligula ultrices. Proin id velit nec tortor scelerisque tempus. Suspendisse potenti. Integer luctus dolor ut lacus pharetra, id tristique augue vestibulum. Morbi tempus finibus tellus, vitae aliquet nunc posuere a. Donec sed nunc ut massa mattis cursus.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc id ex sed leo tristique imperdiet. Fusce sollicitudin volutpat justo, a efficitur odio lacinia vitae. Quisque varius dolor non imperdiet efficitur. Aliquam tincidunt auctor lectus, at aliquet ligula ullamcorper ac. Duis tempus magna id odio commodo fermentum. Phasellus rutrum metus ut diam aliquam, vel vestibulum ligula ultrices. Proin id velit nec tortor scelerisque tempus. Suspendisse potenti. Integer luctus dolor ut lacus pharetra, id tristique augue vestibulum. Morbi tempus finibus tellus, vitae aliquet nunc posuere a. Donec sed nunc ut massa mattis cursus.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc id ex sed leo tristique imperdiet. Fusce sollicitudin volutpat justo, a efficitur odio lacinia vitae. Quisque varius dolor non imperdiet efficitur. Aliquam tincidunt auctor lectus, at aliquet ligula ullamcorper ac. Duis tempus magna id odio commodo fermentum. Phasellus rutrum metus ut diam aliquam, vel vestibulum ligula ultrices. Proin id velit nec tortor scelerisque tempus. Suspendisse potenti. Integer luctus dolor ut lacus pharetra, id tristique augue vestibulum. Morbi tempus finibus tellus, vitae aliquet nunc posuere a. Donec sed nunc ut massa mattis cursus.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc id ex sed leo tristique imperdiet. Fusce sollicitudin volutpat justo, a efficitur odio lacinia vitae. Quisque varius dolor non imperdiet efficitur. Aliquam tincidunt auctor lectus, at aliquet ligula ullamcorper ac. Duis tempus magna id odio commodo fermentum. Phasellus rutrum metus ut diam aliquam, vel vestibulum ligula ultrices. Proin id velit nec tortor scelerisque tempus. Suspendisse potenti. Integer luctus dolor ut lacus pharetra, id tristique augue vestibulum. Morbi tempus finibus tellus, vitae aliquet nunc posuere a. Donec sed nunc ut massa mattis cursus.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc id ex sed leo tristique imperdiet. Fusce sollicitudin volutpat justo, a efficitur odio lacinia vitae. Quisque varius dolor non imperdiet efficitur. Aliquam tincidunt auctor lectus, at aliquet ligula ullamcorper ac. Duis tempus magna id odio commodo fermentum. Phasellus rutrum metus ut diam aliquam, vel vestibulum ligula ultrices. Proin id velit nec tortor scelerisque tempus. Suspendisse potenti. Integer luctus dolor ut lacus pharetra, id tristique augue vestibulum. Morbi tempus finibus tellus, vitae aliquet nunc posuere a. Donec sed nunc ut massa mattis cursus.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc id ex sed leo tristique imperdiet. Fusce sollicitudin volutpat justo, a efficitur odio lacinia vitae. Quisque varius dolor non imperdiet efficitur. Aliquam tincidunt auctor lectus, at aliquet ligula ullamcorper ac. Duis tempus magna id odio commodo fermentum. Phasellus rutrum metus ut diam aliquam, vel vestibulum ligula ultrices. Proin id velit nec tortor scelerisque tempus. Suspendisse potenti. Integer luctus dolor ut lacus pharetra, id tristique augue vestibulum. Morbi tempus finibus tellus, vitae aliquet nunc posuere a. Donec sed nunc ut massa mattis cursus.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc id ex sed leo tristique imperdiet. Fusce sollicitudin volutpat justo, a efficitur odio lacinia vitae. Quisque varius dolor non imperdiet efficitur. Aliquam tincidunt auctor lectus, at aliquet ligula ullamcorper ac. Duis tempus magna id odio commodo fermentum. Phasellus rutrum metus ut diam aliquam, vel vestibulum ligula ultrices. Proin id velit nec tortor scelerisque tempus. Suspendisse potenti. Integer luctus dolor ut lacus pharetra, id tristique augue vestibulum. Morbi tempus finibus tellus, vitae aliquet nunc posuere a. Donec sed nunc ut massa mattis cursus.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc id ex sed leo tristique imperdiet. Fusce sollicitudin volutpat justo, a efficitur odio lacinia vitae. Quisque varius dolor non imperdiet efficitur. Aliquam tincidunt auctor lectus, at aliquet ligula ullamcorper ac. Duis tempus magna id odio commodo fermentum. Phasellus rutrum metus ut diam aliquam, vel vestibulum ligula ultrices. Proin id velit nec tortor scelerisque tempus. Suspendisse potenti. Integer luctus dolor ut lacus pharetra, id tristique augue vestibulum. Morbi tempus finibus tellus, vitae aliquet nunc posuere a. Donec sed nunc ut massa mattis cursus.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc id ex sed leo tristique imperdiet. Fusce sollicitudin volutpat justo, a efficitur odio lacinia vitae. Quisque varius dolor non imperdiet efficitur. Aliquam tincidunt auctor lectus, at aliquet ligula ullamcorper ac. Duis tempus magna id odio commodo fermentum. Phasellus rutrum metus ut diam aliquam, vel vestibulum ligula ultrices. Proin id velit nec tortor scelerisque tempus. Suspendisse potenti. Integer luctus dolor ut lacus pharetra, id tristique augue vestibulum. Morbi tempus finibus tellus, vitae aliquet nunc posuere a. Donec sed nunc ut massa mattis cursus.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc id ex sed leo tristique imperdiet. Fusce sollicitudin volutpat justo, a efficitur odio lacinia vitae. Quisque varius dolor non imperdiet efficitur. Aliquam tincidunt auctor lectus, at aliquet ligula ullamcorper ac. Duis tempus magna id odio commodo fermentum. Phasellus rutrum metus ut diam aliquam, vel vestibulum ligula ultrices. Proin id velit nec tortor scelerisque tempus. Suspendisse potenti. Integer luctus dolor ut lacus pharetra, id tristique augue vestibulum. Morbi tempus finibus tellus, vitae aliquet nunc posuere a. Donec sed nunc ut massa mattis cursus.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc id ex sed leo tristique imperdiet. Fusce sollicitudin volutpat justo, a efficitur odio lacinia vitae. Quisque varius dolor non imperdiet efficitur. Aliquam tincidunt auctor lectus, at aliquet ligula ullamcorper ac. Duis tempus magna id odio commodo fermentum. Phasellus rutrum metus ut diam aliquam, vel vestibulum ligula ultrices. Proin id velit nec tortor scelerisque tempus. Suspendisse potenti. Integer luctus dolor ut lacus pharetra, id tristique augue vestibulum. Morbi tempus finibus tellus, vitae aliquet nunc posuere a. Donec sed nunc ut massa mattis cursus.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc id ex sed leo tristique imperdiet. Fusce sollicitudin volutpat justo, a efficitur odio lacinia vitae. Quisque varius dolor non imperdiet efficitur. Aliquam tincidunt auctor lectus, at aliquet ligula ullamcorper ac. Duis tempus magna id odio commodo fermentum. Phasellus rutrum metus ut diam aliquam, vel vestibulum ligula ultrices. Proin id velit nec tortor scelerisque tempus. Suspendisse potenti. Integer luctus dolor ut lacus pharetra, id tristique augue vestibulum. Morbi tempus finibus tellus, vitae aliquet nunc posuere a. Donec sed nunc ut massa mattis cursus.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc id ex sed leo tristique imperdiet. Fusce sollicitudin volutpat justo, a efficitur odio lacinia vitae. Quisque varius dolor non imperdiet efficitur. Aliquam tincidunt auctor lectus, at aliquet ligula ullamcorper ac. Duis tempus magna id odio commodo fermentum. Phasellus rutrum metus ut diam aliquam, vel vestibulum ligula ultrices. Proin id velit nec tortor scelerisque tempus. Suspendisse potenti. Integer luctus dolor ut lacus pharetra, id tristique augue vestibulum. Morbi tempus finibus tellus, vitae aliquet nunc posuere a. Donec sed nunc ut massa mattis cursus.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc id ex sed leo tristique imperdiet. Fusce sollicitudin volutpat justo, a efficitur odio lacinia vitae. Quisque varius dolor non imperdiet efficitur. Aliquam tincidunt auctor lectus, at aliquet ligula ullamcorper ac. Duis tempus magna id odio commodo fermentum. Phasellus rutrum metus ut diam aliquam, vel vestibulum ligula ultrices. Proin id velit nec tortor scelerisque tempus. Suspendisse potenti. Integer luctus dolor ut lacus pharetra, id tristique augue vestibulum. Morbi tempus finibus tellus, vitae aliquet nunc posuere a. Donec sed nunc ut massa mattis cursus.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc id ex sed leo tristique imperdiet. Fusce sollicitudin volutpat justo, a efficitur odio lacinia vitae. Quisque varius dolor non imperdiet efficitur. Aliquam tincidunt auctor lectus, at aliquet ligula ullamcorper ac. Duis tempus magna id odio commodo fermentum. Phasellus rutrum metus ut diam aliquam, vel vestibulum ligula ultrices. Proin id velit nec tortor scelerisque tempus. Suspendisse potenti. Integer luctus dolor ut lacus pharetra, id tristique augue vestibulum. Morbi tempus finibus tellus, vitae aliquet nunc posuere a. Donec sed nunc ut massa mattis cursus.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc id ex sed leo tristique imperdiet. Fusce sollicitudin volutpat justo, a efficitur odio lacinia vitae. Quisque varius dolor non imperdiet efficitur. Aliquam tincidunt auctor lectus, at aliquet ligula ullamcorper ac. Duis tempus magna id odio commodo fermentum. Phasellus rutrum metus ut diam aliquam, vel vestibulum ligula ultrices. Proin id velit nec tortor scelerisque tempus. Suspendisse potenti. Integer luctus dolor ut lacus pharetra, id tristique augue vestibulum. Morbi tempus finibus tellus, vitae aliquet nunc posuere a. Donec sed nunc ut massa mattis cursus.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc id ex sed leo tristique imperdiet. Fusce sollicitudin volutpat justo, a efficitur odio lacinia vitae. Quisque varius dolor non imperdiet efficitur. Aliquam tincidunt auctor lectus, at aliquet ligula ullamcorper ac. Duis tempus magna id odio commodo fermentum. Phasellus rutrum metus ut diam aliquam, vel vestibulum ligula ultrices. Proin id velit nec tortor scelerisque tempus. Suspendisse potenti. Integer luctus dolor ut lacus pharetra, id tristique augue vestibulum. Morbi tempus finibus tellus, vitae aliquet nunc posuere a. Donec sed nunc ut massa mattis cursus.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc id ex sed leo tristique imperdiet. Fusce sollicitudin volutpat justo, a efficitur odio lacinia vitae. Quisque varius dolor non imperdiet efficitur. Aliquam tincidunt auctor lectus, at aliquet ligula ullamcorper ac. Duis tempus magna id odio commodo fermentum. Phasellus rutrum metus ut diam aliquam, vel vestibulum ligula ultrices. Proin id velit nec tortor scelerisque tempus. Suspendisse potenti. Integer luctus dolor ut lacus pharetra, id tristique augue vestibulum. Morbi tempus finibus tellus, vitae aliquet nunc posuere a. Donec sed nunc ut massa mattis cursus.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc id ex sed leo tristique imperdiet. Fusce sollicitudin volutpat justo, a efficitur odio lacinia vitae. Quisque varius dolor non imperdiet efficitur. Aliquam tincidunt auctor lectus, at aliquet ligula ullamcorper ac. Duis tempus magna id odio commodo fermentum. Phasellus rutrum metus ut diam aliquam, vel vestibulum ligula ultrices. Proin id velit nec tortor scelerisque tempus. Suspendisse potenti. Integer luctus dolor ut lacus pharetra, id tristique augue vestibulum. Morbi tempus finibus tellus, vitae aliquet nunc posuere a. Donec sed nunc ut massa mattis cursus.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc id ex sed leo tristique imperdiet. Fusce sollicitudin volutpat justo, a efficitur odio lacinia vitae. Quisque varius dolor non imperdiet efficitur. Aliquam tincidunt auctor lectus, at aliquet ligula ullamcorper ac. Duis tempus magna id odio commodo fermentum. Phasellus rutrum metus ut diam aliquam, vel vestibulum ligula ultrices. Proin id velit nec tortor scelerisque tempus. Suspendisse potenti. Integer luctus dolor ut lacus pharetra, id tristique augue vestibulum. Morbi tempus finibus tellus, vitae aliquet nunc posuere a. Donec sed nunc ut massa mattis cursus.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc id ex sed leo tristique imperdiet. Fusce sollicitudin volutpat justo, a efficitur odio lacinia vitae. Quisque varius dolor non imperdiet efficitur. Aliquam tincidunt auctor lectus, at aliquet ligula ullamcorper ac. Duis tempus magna id odio commodo fermentum. Phasellus rutrum metus ut diam aliquam, vel vestibulum ligula ultrices. Proin id velit nec tortor scelerisque tempus. Suspendisse potenti. Integer luctus dolor ut lacus pharetra, id tristique augue vestibulum. Morbi tempus finibus tellus, vitae aliquet nunc posuere a. Donec sed nunc ut massa mattis cursus.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc id ex sed leo tristique imperdiet. Fusce sollicitudin volutpat justo, a efficitur odio lacinia vitae. Quisque varius dolor non imperdiet efficitur. Aliquam tincidunt auctor lectus, at aliquet ligula ullamcorper ac. Duis tempus magna id odio commodo fermentum. Phasellus rutrum metus ut diam aliquam, vel vestibulum ligula ultrices. Proin id velit nec tortor scelerisque tempus. Suspendisse potenti. Integer luctus dolor ut lacus pharetra, id tristique augue vestibulum. Morbi tempus finibus tellus, vitae aliquet nunc posuere a. Donec sed nunc ut massa mattis cursus.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc id ex sed leo tristique imperdiet. Fusce sollicitudin volutpat justo, a efficitur odio lacinia vitae. Quisque varius dolor non imperdiet efficitur. Aliquam tincidunt auctor lectus, at aliquet ligula ullamcorper ac. Duis tempus magna id odio commodo fermentum. Phasellus rutrum metus ut diam aliquam, vel vestibulum ligula ultrices. Proin id velit nec tortor scelerisque tempus. Suspendisse potenti. Integer luctus dolor ut lacus pharetra, id tristique augue vestibulum. Morbi tempus finibus tellus, vitae aliquet nunc posuere a. Donec sed nunc ut massa mattis cursus.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc id ex sed leo tristique imperdiet. Fusce sollicitudin volutpat justo, a efficitur odio lacinia vitae. Quisque varius dolor non imperdiet efficitur. Aliquam tincidunt auctor lectus, at aliquet ligula ullamcorper ac. Duis tempus magna id odio commodo fermentum. Phasellus rutrum metus ut diam aliquam, vel vestibulum ligula ultrices. Proin id velit nec tortor scelerisque tempus. Suspendisse potenti. Integer luctus dolor ut lacus pharetra, id tristique augue vestibulum. Morbi tempus finibus tellus, vitae aliquet nunc posuere a. Donec sed nunc ut massa mattis cursus.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc id ex sed leo tristique imperdiet. Fusce sollicitudin volutpat justo, a efficitur odio lacinia vitae. Quisque varius dolor non imperdiet efficitur. Aliquam tincidunt auctor lectus, at aliquet ligula ullamcorper ac. Duis tempus magna id odio commodo fermentum. Phasellus rutrum metus ut diam aliquam, vel vestibulum ligula ultrices. Proin id velit nec tortor scelerisque tempus. Suspendisse potenti. Integer luctus dolor ut lacus pharetra, id tristique augue vestibulum. Morbi tempus finibus tellus, vitae aliquet nunc posuere a. Donec sed nunc ut massa mattis cursus.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc id ex sed leo tristique imperdiet. Fusce sollicitudin volutpat justo, a efficitur odio lacinia vitae. Quisque varius dolor non imperdiet efficitur. Aliquam tincidunt auctor lectus, at aliquet ligula ullamcorper ac. Duis tempus magna id odio commodo fermentum. Phasellus rutrum metus ut diam aliquam, vel vestibulum ligula ultrices. Proin id velit nec tortor scelerisque tempus. Suspendisse potenti. Integer luctus dolor ut lacus pharetra, id tristique augue vestibulum. Morbi tempus finibus tellus, vitae aliquet nunc posuere a. Donec sed nunc ut massa mattis cursus.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc id ex sed leo tristique imperdiet. Fusce sollicitudin volutpat justo, a efficitur odio lacinia vitae. Quisque varius dolor non imperdiet efficitur. Aliquam tincidunt auctor lectus, at aliquet ligula ullamcorper ac. Duis tempus magna id odio commodo fermentum. Phasellus rutrum metus ut diam aliquam, vel vestibulum ligula ultrices. Proin id velit nec tortor scelerisque tempus. Suspendisse potenti. Integer luctus dolor ut lacus pharetra, id tristique augue vestibulum. Morbi tempus finibus tellus, vitae aliquet nunc posuere a. Donec sed nunc ut massa mattis cursus.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc id ex sed leo tristique imperdiet. Fusce sollicitudin volutpat justo, a efficitur odio lacinia vitae. Quisque varius dolor non imperdiet efficitur. Aliquam tincidunt auctor lectus, at aliquet ligula ullamcorper ac. Duis tempus magna id odio commodo fermentum. Phasellus rutrum metus ut diam aliquam, vel vestibulum ligula ultrices. Proin id velit nec tortor scelerisque tempus. Suspendisse potenti. Integer luctus dolor ut lacus pharetra, id tristique augue vestibulum. Morbi tempus finibus tellus, vitae aliquet nunc posuere a. Donec sed nunc ut massa mattis cursus.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc id ex sed leo tristique imperdiet. Fusce sollicitudin volutpat justo, a efficitur odio lacinia vitae. Quisque varius dolor non imperdiet efficitur. Aliquam tincidunt auctor lectus, at aliquet ligula ullamcorper ac. Duis tempus magna id odio commodo fermentum. Phasellus rutrum metus ut diam aliquam, vel vestibulum ligula ultrices. Proin id velit nec tortor scelerisque tempus. Suspendisse potenti. Integer luctus dolor ut lacus pharetra, id tristique augue vestibulum. Morbi tempus finibus tellus, vitae aliquet nunc posuere a. Donec sed nunc ut massa mattis cursus.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc id ex sed leo tristique imperdiet. Fusce sollicitudin volutpat justo, a efficitur odio lacinia vitae. Quisque varius dolor non imperdiet efficitur. Aliquam tincidunt auctor lectus, at aliquet ligula ullamcorper ac. Duis tempus magna id odio commodo fermentum. Phasellus rutrum metus ut diam aliquam, vel vestibulum ligula ultrices. Proin id velit nec tortor scelerisque tempus. Suspendisse potenti. Integer luctus dolor ut lacus pharetra, id tristique augue vestibulum. Morbi tempus finibus tellus, vitae aliquet nunc posuere a. Donec sed nunc ut massa mattis cursus.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc id ex sed leo tristique imperdiet. Fusce sollicitudin volutpat justo, a efficitur odio lacinia vitae. Quisque varius dolor non imperdiet efficitur. Aliquam tincidunt auctor lectus, at aliquet ligula ullamcorper ac. Duis tempus magna id odio commodo fermentum. Phasellus rutrum metus ut diam aliquam, vel vestibulum ligula ultrices. Proin id velit nec tortor scelerisque tempus. Suspendisse potenti. Integer luctus dolor ut lacus pharetra, id tristique augue vestibulum. Morbi tempus finibus tellus, vitae aliquet nunc posuere a. Donec sed nunc ut massa mattis cursus.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc id ex sed leo tristique imperdiet. Fusce sollicitudin volutpat justo, a efficitur odio lacinia vitae. Quisque varius dolor non imperdiet efficitur. Aliquam tincidunt auctor lectus, at aliquet ligula ullamcorper ac. Duis tempus magna id odio commodo fermentum. Phasellus rutrum metus ut diam aliquam, vel vestibulum ligula ultrices. Proin id velit nec tortor scelerisque tempus. Suspendisse potenti. Integer luctus dolor ut lacus pharetra, id tristique augue vestibulum. Morbi tempus finibus tellus, vitae aliquet nunc posuere a. Donec sed nunc ut massa mattis cursus.

实例九 设置文件偏移阅读

   seek() 是在文件操作中常用的函数,用于移动文件读写指针到文件中的特定位置。它的作用是在文件中定位到特定的位置,以便进行读取或写入操作。在Python中,seek() 方法通常与 tell() 方法结合使用,tell() 用于获取当前文件指针的位置。

   seek(offset, whence) 方法接受两个参数:

  • offset:表示相对于 whence 参数的偏移量。如果 whence 参数为0,那么偏移量为从文件开头开始的字节数;如果 whence 参数为1,偏移量为当前位置加上 offset;如果 whence 参数为2,偏移量为文件末尾加上 offset
  • whence:可选参数,默认值为0。表示偏移量的基准位置。0代表从文件开头开始,1代表从当前位置开始,2代表从文件末尾开始。

        seek()适用于自动化检测瓦斯,CO等程序内,由于相信各位没有相关信息和内容,那就干脆只练核心。

        代码如下:

# 设置文件阅读偏移

# 打开文件
file = open('exer9_document.txt',encoding='gbk',errors='ignore',mode='r')

# 移动文件指针到特定位置
file.seek(10)  # 从文件开头开始偏移5个字节

# 读取文件中的内容
content = file.read()
print(content)

# 关闭文件
file.close()

        由于Python无法使用UTF-8编解码器解码特定的字节,因为该字节不符合UTF-8编码的规范。故需要加入(encoding='ignore')来忽略。

实例十 求质因数和解因数

        先解释一下这几个名词吧,免得再翻。(含义解释内容来自chatGPT)

  1. 因数:一个数的因数是能够整除这个数而没有余数的数。例如,12的因数包括1、2、3、4、6和12。

  2. 解因数:解因数是指将一个数分解为其所有因数的乘积的过程。例如,12的因数是1、2、3、4、6和12,因此12的因数解是1 * 2 * 2 * 3 = 12。

  3. 质数:质数是指大于1的整数,除了1和它本身之外没有其他因数的数。换句话说,质数只有两个正因数。例如,2、3、5、7等都是质数。

  4. 质因数:质因数是一个整数的因数中的质数因数。换句话说,质因数是一个整数的因数中不能再被其他整数整除的质数因子。例如,12的质因数包括2和3,因为12可以分解为 2 * 2 * 3。

代码如下:

# 寻找给定整数的所有因数
def find_factors(n):
    factors = []
    for i in range(1, n + 1):
        if n % i == 0:
            factors.append(i)
    return factors

# 判断一个数是否是质数
def is_prime(num):
    if num <= 1:
        return False
    for i in range(2, int(num ** 0.5) + 1):
        if num % i == 0:  # 如果可以整除,则不是质数
            return False
    return True

# 寻找给定整数的所有质因数
def find_prime_factors(n):
    prime_factors = []
    for i in range(2, n + 1):
        if n % i == 0 and is_prime(i):
            prime_factors.append(i)
    return prime_factors  # 返回所有质因数的列表

# 调用函数来找到一个数的所有因数和质因数
number = input('请输入一个整数:')
try:
    number = int(number)
except:
    print('输入的不是整数')

factors = find_factors(number)
prime_factors = find_prime_factors(number)

# 打印结果
print(f"{number}的所有因数为:{factors}")
print(f"{number}的所有质因数为:{prime_factors}")

实例十一 三元一次方程求解

通过矩阵求解三元一次,代码如下:

记得安装pip,要不然无法导入numpy库。

# 三元一次方程求解

# 导入计算库numpy
import numpy as np

# 让用户输入三元一次方程系数
print('欢迎来到三元一次方程计算器,三元一次模板如下:')
print('a1X+b1X+c1X = a')
print('a2X+b2X+c2X = b')
print('a3X+b3X+c3X = c')
print('请依次输入a1,b1,c1...(按下enter输入下一个)')
a1 = int(input('a1的值为:'))
a2 = int(input('a2的值为:'))
a3 = int(input('a3的值为:'))
b1 = int(input('b1的值为:'))
b2 = int(input('b2的值为:'))
b3 = int(input('b3的值为:'))
c1 = int(input('c1的值为:'))
c2 = int(input('c2的值为:'))
c3 = int(input('c3的值为:'))
a = int(input('a的值为:'))
b = int(input('b的值为:'))
c = int(input('c的值为:'))


try:
    # 生成未知数系数的三维数组
    W = np.array([[a1, a2, a3], [b1, b2, b3], [c1, c2, c3]])

    # 生成方程结果的数组
    result = np.array([a, b, c])

    # 求W的逆矩阵
    W_inv = np.linalg.inv(W)

    # 求方程组的解
    vxyz = np.dot(W_inv, result)

    v = list(vxyz)
    print(v)
except np.linalg.LinAlgError:
    print("方程组不可逆,无解或有无穷多解。")

实例十四 获取文件属性

        获取文件属性,一般使用os.stat()属性。

        先解释一些将用到属性及方法,大概瞄一眼熟悉即可,我相信开发真正项目的时候,都得拿需求查资料,现在训练的更多的是逻辑和思维方式(?),以下内容由chatGPT生成。

        时间戳通常是指自某个特定时间点以来所经过的秒数或毫秒数。在编程中,时间戳通常用于表示和记录时间,尤其是在处理时间和日期相关的操作时。

  os 模块提供了许多与操作系统交互的函数。它允许你执行诸如文件操作、目录操作以及其他系统级操作。下面是一些 os 模块中常用的功能:

  • os.name:提供了当前使用的操作系统的名称(如 'posix' 或 'nt')。
  • os.getcwd():获取当前工作目录的路径。
  • os.chdir(path):改变当前工作目录。
  • os.listdir(path):返回指定路径下的文件和文件夹列表。
  • os.remove(path):删除指定路径的文件。
  • os.rmdir(path):删除指定路径的空文件夹。
  • os.path.exists(path):检查指定路径是否存在。
  • os.path.isfile(path):检查指定路径是否是一个文件。
  • os.path.isdir(path):检查指定路径是否是一个目录。

        time.strftime 是 Python 中用于将时间元组转换为字符串的函数。它接受格式化字符串作为参数,并返回格式化后的时间字符串。

        time.localtime() 函数用于获取当前时间的本地时间。它返回一个表示当前时间的时间元组。时间元组是一个包含9个元素的元组,表示年、月、日、小时、分钟、秒、一周的第几天、一年的第几天和夏令时标志。

        下面是实例代码,源文件内容附录在代码下方:

        

# 获取文件的属性

import time
import os


# 将时间戳转为中文格式
def timestape_to_string(timestape):
    # 将时间戳转为本地的时间戳
    vtime = time.localtime(timestape)
    # 将本地时间戳转为中文格式
    vdatatime = time.strftime('%Y-%m-%d %H:%M:%S', vtime)
    return vdatatime


# 将字节转为M为计量单位
def bytetoM(size):
    vsize = size/float(1024*1024)
    return round(vsize,2)

if __name__ == '__main__':
    fileinfo = os.stat('exer14_document.txt')
    print('exer14_document.txt的信息为:')
    print('文件建立时间:',timestape_to_string(fileinfo.st_ctime))
    print('文件的大小:',bytetoM(fileinfo.st_size),'M')
    print('文件修改时间:',timestape_to_string(fileinfo.st_mtime))
    print('文件访问时间:',timestape_to_string(fileinfo.st_atime))

       运行结果为:

D:\anaconda\install\python.exe D:\py\EXER\venv\exer14.py 
exer14_document.txt的信息为:
文件建立时间: 2023-11-05 14:45:45
文件的大小: 0.0 M
文件修改时间: 2023-11-05 14:47:32
文件访问时间: 2023-11-05 14:47:32

         附录:

相爱没有那么容易。 
《没那么简单》
歌手: 黄小琥
专辑: 靓声天后
来源: 我喜欢的音乐
2023.11.05

哦对了!!!
哈尔滨11.06暴雪!!!!!
降雪量将达到0.7m!!!!!!

实例十五 统计文件中单词出现次数

        大概思路就是打开文件利用正则选词,循环加入词典并计入次数,最后用sort()排序。

        代码如下:

# 统计文件中单词的出现次数

# 导入正则模块库
import re

class CounterWord:
    # 初始化
    def __init__(self,file_name):
        self.filename = file_name
        # 初始化一个字典,用来保存出现的单词和次数
        self.dict_count = {}

    # 统计函数
    def count_word(self):
        # 打开本地文件
        with open(self.filename,'r') as f:
            # 按行读取文件,防止太大造成卡顿
            for line in f:
                words =[]
                words = [s.lower() for s in re.findall(r"\w+",line)]

                # 循环累加计算个数
                for word in words:
                    # 如果存在self.dict_count[word],则get(word,0) +1,没有的话就返回默认值0
                    self.dict_count[word] = self.dict_count.get(word,0) +1

    def top_number(self,num):
                return sorted(self.dict_count.items(),key=lambda item:item[1],reverse=True)[:num]


if __name__ == '__main__':
    # 创建对象
    counter_obj = CounterWord("exer15_document.txt")
    # 统计单词
    counter_obj.count_word()
    # 取前六个出现次数最多的六个
    top_num_6 = counter_obj.top_number(6)

    # 打印
    print('在exer15_document.txt中,出现在前六位最多的单词如下:')

    # 循环依次打印
    for word in top_num_6:
        print(word[0],'出现了',word[1],'次。')


附录:

exer_15.document内容如下:

Love is a powerful and universal emotion that transcends boundaries, be it time, space, or circumstance. It is one of the most beautiful and profound experiences in the realm of human emotions. Love can take on various forms, from the deep affection within families and friendships to the passionate flames of romantic love that ignite the heart. It's a force that knows no bounds, and its impact can be felt across the globe.

Romantic love, in particular, is often described as an intoxicating and exhilarating journey. It's the connection that sets hearts aflutter and fills our lives with meaning. From the first blush of infatuation to the deep and enduring love that stands the test of time, romantic love can be a rollercoaster ride of emotions. It's the stolen glances, the whispered words, and the tender touches that make our hearts race.

In a long-term partnership, love transforms into a steadfast bond. It's the familiarity of shared experiences and the comfort of knowing that someone has your back. It's the resilience to weather life's storms together and the celebration of each other's successes. Love is the invisible thread that weaves two souls together, and it's a commitment to stand by one another through thick and thin.

But love isn't limited to romantic or platonic relationships. It extends to love for oneself, love for humanity, and love for the world we inhabit. Love motivates acts of kindness, compassion, and selflessness. It's the driving force behind charity, generosity, and the pursuit of a better world.

In the grand tapestry of life, love is the thread that binds us all. It's the universal language that transcends borders, cultures, and languages. Love is a source of solace, joy, and strength. It's the unifying force that connects us as human beings, and it's a reminder that, in the end, love is what truly matters. Love is the essence of life itself.

实例十六 遍历目录

    os.walk()是Python中一个用于遍历目录树的函数。它返回一个生成器,生成器会遍历一个目录中的所有子目录,并产生三元组(dirpath, dirnames, filenames),其中:

  • dirpath 是一个字符串,代表目录的路径。
  • dirnames 是一个列表,包含了目录中的子目录的名字。
  • filenames 是一个列表,包含了目录中的文件的名字。

               故,代码如下:

# 遍历目录

import os

# 定义一个元组
ret_tuple = ()

# os.walk遍历文件会返回一个元组
ret_tuple = os.walk('exer16_test',topdown=True)


print('exer16_test的目录结构如下所示')
# 循环得到每层目录信息
for cur_dir,list_dir,list_file in ret_tuple:
    print('当前目录:',cur_dir)
    if len(list_dir) > 0:
        print('包含的子目录:',list_dir)
    if len(list_file) > 0:
        print('当前目录下的文件',list_file)

实例十七 删除目录

        先大概介绍一下要用到的几个函数。(内容产自chatGPT)

        

        调用os.remove()时,它将尝试删除指定路径的文件。如果文件成功被删除,它会打印相应的成功消息。如果删除失败,它会打印错误消息,并指出导致删除失败的具体原因。举例代码如下:

import os

# 文件路径
file_path = 'path/to/your/file.txt'

# 尝试删除文件
try:
    os.remove(file_path)
    print(f"{file_path} 文件已成功删除。")
except OSError as e:
    print(f"Error: {file_path} 文件删除失败 - {e}")

   os.rmdir()是Python中用于删除空目录的函数。它接受一个目录路径作为参数,并尝试删除该路径所指向的空目录。如果目录不为空,或者操作系统不允许删除该目录,它将引发一个OSError异常。以下是一个简单的示例:

import os

# 目录路径
dir_path = 'path/to/your/directory'

# 尝试删除空目录
try:
    os.rmdir(dir_path)
    print(f"{dir_path} 目录已成功删除。")
except OSError as e:
    print(f"Error: {dir_path} 目录删除失败 - {e}")

    os.path.join()是Python中用于拼接路径的函数。它接受一个或多个路径组件作为输入,将它们连接起来形成一个完整的路径。它会根据操作系统的不同自动选择合适的路径分隔符(例如,在Unix系统上是'/',在Windows系统上是'\')。这样做可以确保生成的路径在不同操作系统上都是有效的。

        下面是实例代码:

# 删除目录

# 导入模块
import os

# 定义删除目录的模块
def del_dir(path):
    # 取得当前目录下的文件or子目录
    list_dir_file = os.listdir(path)
    # 取目录下的各项
    for file_dir in list_dir_file:
        down_path = os.path.join(path,file_dir)

        # 如果是目录则继续递归,如果是文件,则直接删除
        # 因为os.rmdir()只有空目录才能删除
        if os.path.isdir(down_path):
            del_dir(down_path)
        else:
            os.remove(down_path)

    list_dir_file = os.listdir(path)

    if len(list_dir_file) == 0:
        os.rmdir(path)

# 主函数main
if __name__ == '__main__':
    del_path = 'exer17_test'

    if os.path.isdir(del_path):
        os.remove(del_path)
    else:
        del_dir(del_path)

实例十八 根据关键词找文件

        如标题,这里将通过循环文件目录,查找并列举包含关键词的文件,先来了解一些要用到的方法。

        os.path.basename 是一个 Python 函数,用于从一个路径中获取文件名部分。它会接受一个路径作为输入,并返回该路径中的最后一个部分,即文件名部分。

        os.path.abspath 是一个 Python 函数,用于获取指定路径的绝对路径。它会接受一个路径作为输入,并返回该路径的绝对路径形式。

        实例代码如下:

# 根据关键词查找文件

import os

# 定义根据关键词查找文件的函数
def search_file(search_path,key_word):

    # 判断是否为文件,不是文件直接退出
    if not os.path.isdir(search_path):
        print('不是文件,退出')
        return
    # 循环得到子目录
    for field_or_dir in os.listdir(search_path):
        # 合并目录
        path_join = os.path.join(search_path,field_or_dir)
        # 判断是否目录
        if os.path.isdir(path_join):
            # 是目录就递归继续找
            search_file(path_join,key_word)
        elif key_word in os.path.basename(path_join):
            # 打印文件名包含关键字的文件路径
            print(os.path.abspath(path_join))


# 主函数
if __name__ == '__main__':
    search_path = input('请输入要查找的目录')
    key_word = input('请输入查找的文件的关键词')
    print('文件夹[',search_path,']中包含[',key_word,']关键词的文件列举如下:')
    search_file(search_path,key_word)

实例十九 文件压缩与解压缩

        这里可以说是非常有用的一个脚本了,我们先了解一下即将用到的方法和知识。内容由chatGPT生成。

        

zipfile.ZipFile 是 Python 中用于创建、读取和操作 ZIP 归档文件的类。它提供了许多方法来处理 ZIP 文件,包括添加文件、提取文件、获取文件列表以及设置密码等。

你可以使用 zipfile.ZipFile 类来创建一个 ZIP 文件对象,并对其进行操作。以下是创建和操作 ZIP 文件的一些常见方法:

  • zipfile.ZipFile(file, mode, comptype, allowZip64=True):创建一个 ZIP 文件对象,file 是要创建或操作的 ZIP 文件名,mode 是操作模式,可以是 'r'(只读)、'w'(写入)、'x'(排他性创建)或 'a'(追加)。

  • ZipFile.write(filename, arcname=None, compress_type=None, compresslevel=None):向 ZIP 文件中添加一个文件,filename 是要添加的文件名,arcname 是在 ZIP 文件中的保存名称,compress_type 是压缩类型,compresslevel 是压缩级别。

  • ZipFile.extractall(path=None, members=None, pwd=None):解压缩 ZIP 文件中的所有文件,path 是要解压缩到的目标路径,members 是要解压缩的特定文件列表,pwd 是解压缩时使用的密码。

  • ZipFile.infolist():获取 ZIP 文件中包含的文件信息列表。

实例代码如下:

# 文件压缩和解压缩

import zipfile
import os

# 获取压缩文件信息
def get_zipinfo(zipfile_name):
    # 以读的方式打开压缩文件
    zfile_obj = zipfile.ZipFile(zipfile_name,'r')
    # 获取文件信息,返回列表
    zipfile_info = zfile_obj.infolist()
    # 关闭压缩文件对象
    zfile_obj.close()
    return zipfile_info


# 压缩一个文件
def zip_file(path):
    # 设置一个压缩文件的路径和名字
    zipname = os.path.basename(path) + ".zip"
    # 生成一个压缩文件对象,以写的方式打开
    zipfile_obj = zipfile.ZipFile(zipname,'w',zipfile.ZIP_DEFLATED)
    print('正在压缩文件...')
    # 将文件,文件夹,放入循环依次压缩
    for cui_dir,list_dir,list_file in os.walk(path,topdown=False):
        # 如果是文件夹,依次对文件夹压缩
        for dir_file_name in list_dir:
            dir_name = os.path.join(cui_dir,dir_file_name)
            print('正在压缩文件',dir_name)
            # 把压缩文件加入到文件夹
            zipfile_obj.write(dir_name)
        # 如果是文件,依次对文件进行压缩
        for dir_file_name in list_file:
            file_name = os.path.join(cui_dir,dir_file_name)
            print('正在压缩文件',file_name)
            # 把压缩对象加入文件夹
            zipfile_obj.write(file_name)
    # 关闭压缩文件对象
    zipfile_obj.close()


# 解压缩文件函数
def extract_zipfile(path):
    print('正在解压缩文件...')
    zfile_obj = zipfile.ZipFile(path,'r')
    # 开始解压缩
    zfile_obj.extractall()
    zfile_obj.close()


if __name__ == '__main__':
    path_name = 'exer19_test'
    # 压缩
    zip_file(path_name)
    # 打印分割线
    print('-'*60)
    zip_name = 'exer19_test.zip'
    # 获取压缩信息
    zip_info = get_zipinfo(zip_name)
    for info in zip_info:
        print('文件目录名:',info.filename,'压缩前尺寸:',round(info.file_size/1024,0),'K,压缩后尺寸:',round(info.compress_size/1024,0),'K')
    print('-'*60)

extract_zipfile(zip_name)#解压缩

实例二十 在终端生成日志文件

        先了解一些相关方法及其内容。

        Python的logging模块提供了灵活的日志记录功能,允许你在应用程序中记录各种消息,如调试信息、警告、错误等。你可以使用它来跟踪应用程序的运行状态并调试可能出现的问题。

        

logging.basicConfig是Python中用于配置日志记录的函数。它允许你设置日志记录的基本配置,如日志级别、格式、输出位置等。下面是关于logging.basicConfig函数的一些重要参数:

  • filename:用于指定日志输出的文件名。
  • filemode:定义写入日志文件时的模式,默认为'a',表示以追加模式写入。
  • format:设置日志输出的格式。
  • datefmt:如果你在格式中包含了时间信息,可以使用这个参数来自定义时间的格式化方式。
  • level:设置日志记录的级别,低于这个级别的日志消息将被忽略。
  • stream:指定用于输出日志的流,可以是一个文件对象或类文件对象,如果没有设置,则默认为sys.stderr

下面是示例代码:

# 生成日志文件

import logging

class CreateLogger:
    # 初始化函数,filename指定日志文件名,formatter传入日志格式化字符串,level设置输出级别
    def __init__(self,filename,formatter,level):
        self.filename = filename
        self.formatter = formatter
        self.level = level

    # 建一个logger对象
    def create_logger(self,logger_name):
        # 创建一个logger记录器
        log_obj = logging.getLogger(logger_name)
        # 设置输出等级
        log_obj.setLevel(self.level)
        # 创建文件,写入日志
        handler = logging.FileHandler(self.filename,mode='w',encoding='utf-8')
        handler.setLevel(self.level)
        # 将格式化字符串转为logging认可的形式
        foematter = logging.Formatter(self.formatter)
        handler.setFormatter(foematter)

        log_obj.addHandler(handler)

        return log_obj




if __name__ == '__main__':
    v_formatter = "时间:%(asctime)s||文件名:%(filename)s||行号:%(lineno)d""||级别:%(levelname)s||内容:%(message)s"

    # 指定文件
    v_filename = 'test_logging.log'

    v_level = logging.DEBUG

    logger = CreateLogger(v_filename,v_formatter,v_level)

    logger_obj = logger.create_logger('test')

    # 输出
    logger_obj.debug('这是一条debug级别的日志信息')
    logger_obj.info('这是一条info级别的日志信息')
    logger_obj.warning('这是一条warning级别的日志信息')
    try:
        open('不存在.jpg','rb')
    except Exception as e:
        logger_obj.exception("出现错误,错误信息是"+str(e))

运行结果产生的日志如下:

时间:2023-11-08 16:09:15,356||文件名:exer20.py||行号:45||级别:DEBUG||内容:这是一条debug级别的日志信息
时间:2023-11-08 16:09:15,356||文件名:exer20.py||行号:46||级别:INFO||内容:这是一条info级别的日志信息
时间:2023-11-08 16:09:15,356||文件名:exer20.py||行号:47||级别:WARNING||内容:这是一条warning级别的日志信息
时间:2023-11-08 16:09:15,356||文件名:exer20.py||行号:51||级别:ERROR||内容:出现错误,错误信息是[Errno 2] No such file or directory: '不存在.jpg'
Traceback (most recent call last):
  File "D:\py\EXER\venv\exer20.py", line 49, in <module>
    open('不存在.jpg','rb')
FileNotFoundError: [Errno 2] No such file or directory: '不存在.jpg'

实例二十一 比较两个文本文件内容

difflib 是 Python 中的一个内置模块,用于执行差异比较操作。它提供了一些用于比较序列之间差异的功能,包括文本文件、字符串等。它通常用于生成差异报告,以显示两个序列之间的差异。difflib 模块提供了多种方法来执行不同类型的差异比较,包括:

  1. Differ 类:用于执行行级别的差异比较。
  2. unified_diff 函数:用于生成类似于 Unix 中 diff 命令输出的差异报告。
  3. HtmlDiff 类:用于生成 HTML 格式的差异报告。
  4. ndiff 函数:用于比较文本行,以显示行内的具体差异。

HtmlDiff 类是 Python 中 difflib 模块中的一个类,用于生成 HTML 格式的差异报告。它可以帮助您以 HTML 格式显示两个文本序列之间的差异。您可以使用 HtmlDiff 类的实例来执行差异比较,并生成一个包含差异信息的 HTML 报告。

比较文本如下:

我 2 3 1 2 2
1 2 3 1 2 2
你 2 3 1 2 3
1 2 3 1 2 3

实例代码如下:

# 比较两个文本文件内容

import difflib
import sys

# 读取系统文件,并将文件内容按行放到列表变量中
def file_to_line(filename):
    # 读取文本内容
    with open(filename,'r',encoding='utf-8') as fp:
        text = fp.read()
        # 返回列表形式
    return text.splitlines()

if __name__ == '__main__':
    # 用户输入内容
    file1 = input('请录入要比较的第一个文件:')
    file2 = input('请录入要比较的第二个文件:')

    try:
        str1_line = file_to_line(file1)
        str2_line = file_to_line(file2)
    except Exception as e:
        print('读取文件出错',e)
        sys.exit()

    # 生成htmldiff对象
    htmldiff_obj = difflib.HtmlDiff()
    # 结果写入HTML
    html_code = htmldiff_obj.make_file(str1_line,str2_line)
    with open('file_diff.html','w',encoding='utf-8') as fp:
        fp.write(html_code)

    print('已将',file1,'和',file2,'两个对比的内容放入file_diff.html中,请用浏览器打开查看')

对比结果如图:

实例二十三 向Excel写入数据

        让我们先来了解一下DataFrame。

        DataFrame类似于电子表格或SQL表,它是一个二维标记的数据结构,可以存储不同类型的数据,并且具有各种功能,使得数据的清洗、分析和可视化更加容易。

        关于DataFrame的基本操作如下:

http://1

        实例代码如下:

# 通过DataFrame想Excel写入数据

import pandas as pd
from pandas import DataFrame,Series
import numpy as np

# 生成DataFrame对象
emp_info = DataFrame(data={"姓名":["lisa","小于","小王","里斯","校长","jerry"],
                           "物理":np.random.randint(0,100,size = 6),
                           "数学":np.random.randint(0,100,size = 6),
                           "英语":np.random.randint(0,100,size = 6)},
                            index=np.arange(0,6))


# 保存到excel
emp_info.to_excel("./exer23_test.xlsx")

# 打开文件,将索引放到第一列
vfile = pd.read_excel('./exer23_test.xlsx',index_col=0)

df = pd.DataFrame(vfile)

# 求和
sum_score = df[['物理', '数学', '英语']].sum(axis=1)

# 求平均值
avg_score = df[['物理', '数学', '英语']].mean(axis=1)

df["总分"] = sum_score
df["平均分"] = avg_score

df.to_excel('./exer23_test.xlsx')

        运行结果如下:

实例二十四 在Excel里加入图片

流程:存入图片——打开Excel工作薄——打开工作表——将图片写入指定单元格

示例代码如下:

# 向Excel加入照片

import openpyxl
# 导入图片操作模块
from openpyxl.drawing.image import Image

# 读入照片
img = Image('./exer24_test.jpg')

# 打开工作簿
wb = openpyxl.load_workbook('./exer24_test.xlsx')

# 注意:ws = wb.get_sheet_by_name()已经停用
ws = wb['Sheet1']

ws.add_image(img,'c3')

# 保存文件
wb.save('./exer24_test.xlsx')

结语

       

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Maiberrr

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值