精华内容
下载资源
问答
  • python案例
    千次阅读
    2022-01-18 00:26:21

    Python是目前最流行的语言之一,它在数据科学、机器学习、web开发、脚本编写、自动化方面被许多人广泛使用。它的简单和易用性造就了它如此流行的原因。

    在本文中,我们将会介绍 30 个简短的代码片段,你可以在 30 秒或更短的时间里理解和学习这些代码片段。

    1.检查重复元素

    下面的方法可以检查给定列表中是否有重复的元素。它使用了 set() 属性,该属性将会从列表中删除重复的元素。

    def all_unique(lst):    
        return len(lst) == len(set(lst))  
          
    x = [1,1,2,2,3,2,3,4,5,6]    
    y = [1,2,3,4,5]    
    all_unique(x) # False    
    all_unique(y) # True

    2.变位词

    检测两个字符串是否互为变位词(即互相颠倒字符顺序)

    from collections import Counter   
     
    def anagram(first, second):    
        return Counter(first) == Counter(second)    
    anagram("abcd3", "3acdb") # True

    3.检查内存使用情况

    以下代码段可用来检查对象的内存使用情况。

    import sys    
    variable = 30     
    print(sys.getsizeof(variable)) # 24

    4.字节大小计算

    以下方法将以字节为单位返回字符串长度。

    def byte_size(string):        return(len(string.encode( utf-8 )))        byte_size( 😀 ) # 4    byte_size( Hello World ) # 11

    5.重复打印字符串 N 次

    以下代码不需要使用循环即可打印某个字符串 n 次

    n = 2; 
    s ="Programming"; print(s * n); 
    # ProgrammingProgramming

    6.首字母大写

    以下代码段使用 title() 方法将字符串内的每个词进行首字母大写。

    s = "programming is awesome"    
    print(s.title()) # Programming Is Awesome

    7.分块

    以下方法使用 range() 将列表分块为指定大小的较小列表。

    from math import ceil    def chunk(lst, size):        return list(            map(lambda x: lst[x * size:x * size + size],                list(range(0, ceil(len(lst) / size)))))    chunk([1,2,3,4,5],2) # [[1,2],[3,4],5]

    8.压缩

    以下方法使用 fliter() 删除列表中的错误值(如:False, None, 0 和“”)

    def compact(lst):    
        return list(filter(bool, lst))    
    compact([0, 1, False, 2,   , 3,  a ,  s , 34]) # [ 1, 2, 3,  a ,  s , 34 ]

    9.间隔数

    以下代码段可以用来转换一个二维数组。

    array = [[ a ,  b ], [ c ,  d ], [ e ,  f ]]    
    transposed = zip(*array)    
    print(transposed) # [( a ,  c ,  e ), ( b ,  d ,  f )]

    10.链式比较

    以下代码可以在一行中用各种操作符进行多次比较。

    a = 3    
    print( 2 < a < 8) # True    
    print(1 == a < 2) # False

    11.逗号分隔

    以下代码段可将字符串列表转换为单个字符串,列表中的每个元素用逗号分隔。

    hobbies = ["basketball", "football", "swimming"]
    print("My hobbies are: " + ", ".join(hobbies)) # My hobbies are: basketball, football, swimming

    12.计算元音字母数

    以下方法可计算字符串中元音字母(‘a’, ‘e’, ‘i’, ‘o’, ‘u’)的数目。

    import re    
    def count_vowels(str):    
        return len(len(re.findall(r [aeiou] , str, re.IGNORECASE)))    
    count_vowels( foobar ) # 3    
    count_vowels( gym ) # 0

    13.首字母恢复小写

    以下方法可用于将给定字符串的第一个字母转换为小写。

    def decapitalize(string):    
        return str[:1].lower() + str[1:]    
    decapitalize( FooBar ) #  fooBar     
    decapitalize( FooBar ) #  fooBar

    14.平面化

    以下方法使用递归来展开潜在的深度列表。

    def spread(arg):    ret = []    for i in arg:        if isinstance(i, list):            ret.extend(i)        else:            ret.append(i)    return retdef deep_flatten(lst):    result = []    result.extend(        spread(list(map(lambda x: deep_flatten(x) if type(x) == list else x, lst))))    return resultdeep_flatten([1, [2], [[3], 4], 5]) # [1,2,3,4,5]

    15.差异

    该方法只保留第一个迭代器中的值,从而发现两个迭代器之间的差异。

    def difference(a, b):
        set_a = set(a)
        set_b = set(b)
        comparison = set_a.difference(set_b)
        return list(comparison)
    difference([1,2,3], [1,2,4]) # [3]

    16.寻找差异

    下面的方法在将给定的函数应用于两个列表的每个元素后,返回两个列表之间的差值。

    def difference_by(a, b, fn):
        b = set(map(fn, b))
        return [item for item in a if fn(item) not in b]
    from math import floor
    difference_by([2.1, 1.2], [2.3, 3.4],floor) # [1.2]
    difference_by([{  x : 2 }, {  x : 1 }], [{  x : 1 }], lambda v : v[ x ]) # [ { x: 2 } ]

    17.链式函数调用

    以下方法可在一行中调用多个函数。

    def add(a, b):
        return a + b
    def subtract(a, b):
        return a - b
    a, b = 4, 5
    print((subtract if a > b else add)(a, b)) # 9

    18.检查重复值

    以下方法使用 set() 方法仅包含唯一元素的事实来检查列表是否具有重复值。

    def has_duplicates(lst):
        return len(lst) != len(set(lst))
        
    x = [1,2,3,4,5,5]
    y = [1,2,3,4,5]
    has_duplicates(x) # True
    has_duplicates(y) # False

    19.合并两个词典

    以下方法可用于合并两个词典。

    def merge_two_dicts(a, b):
        c = a.copy()   # make a copy of a 
        c.update(b)    # modify keys and values of a with the ones from b
        return c
    a = {  x : 1,  y : 2}
    b = {  y : 3,  z : 4}
    print(merge_two_dicts(a, b)) # { y : 3,  x : 1,  z : 4}

    在Python 3.5及更高版本中,你还可以执行以下操作:

    def merge_dictionaries(a, b)   return {**a, **b}a = {  x : 1,  y : 2}b = {  y : 3,  z : 4}print(merge_dictionaries(a, b)) # { y : 3,  x : 1,  z : 4}

    20.将两个列表转换成一个词典

    以下方法可将两个列表转换成一个词典。

    def to_dictionary(keys, values):
        return dict(zip(keys, values))
        
    keys = ["a", "b", "c"]    
    values = [2, 3, 4]
    print(to_dictionary(keys, values)) # { a : 2,  c : 4,  b : 3}

    21.使用枚举

    以下方法将字典作为输入,然后仅返回该字典中的键。

    list = ["a", "b", "c", "d"]
    for index, element in enumerate(list): 
        print("Value", element, "Index ", index, )
    # ( Value ,  a ,  Index  , 0)
    # ( Value ,  b ,  Index  , 1)
    #( Value ,  c ,  Index  , 2)
    # ( Value ,  d ,  Index  , 3)

    22.计算所需时间

    以下代码段可用于计算执行特定代码所需的时间。

    import time
    start_time = time.time()
    a = 1
    b = 2
    c = a + b
    print(c) #3
    end_time = time.time()
    total_time = end_time - start_time
    print("Time: ", total_time)
    # ( Time:  , 1.1205673217773438e-05)

    23.Try else 指令

    你可以将 else 子句作为 try/except 块的一部分,如果没有抛出异常,则执行该子句。

    try:
        2*3
    except TypeError:
        print("An exception was raised")
    else:
        print("Thank God, no exceptions were raised.")
    #Thank God, no exceptions were raised.

    24.查找最常见元素

    以下方法返回列表中出现的最常见元素。

    def most_frequent(list):
        return max(set(list), key = list.count)
      
    list = [1,2,1,2,3,2,1,4,2]
    most_frequent(list)

    25.回文

    以下方法可检查给定的字符串是否为回文结构。该方法首先将字符串转换为小写,然后从中删除非字母数字字符。最后,它会将新的字符串与反转版本进行比较。

    def palindrome(string):
        from re import sub
        s = sub( [W_] ,   , string.lower())
        return s == s[::-1]
    palindrome( taco cat ) # True

    26.没有 if-else 语句的简单计算器

    以下代码段将展示如何编写一个不使用 if-else 条件的简单计算器。

    import operator
    action = {
        "+": operator.add,
        "-": operator.sub,
        "/": operator.truediv,
        "*": operator.mul,
        "**": pow
    }
    print(action[ - ](50, 25)) # 25

    27.元素顺序打乱

    以下算法通过实现 Fisher-Yates算法 在新列表中进行排序来将列表中的元素顺序随机打乱。

    from copy import deepcopy
    from random import randint
    def shuffle(lst):
        temp_lst = deepcopy(lst)
        m = len(temp_lst)
        while (m):
            m -= 1
            i = randint(0, m)
            temp_lst[m], temp_lst[i] = temp_lst[i], temp_lst[m]
        return temp_lst
      
    foo = [1,2,3]
    shuffle(foo) # [2,3,1] , foo = [1,2,3]

    28.列表扁平化

    以下方法可使列表扁平化,类似于JavaScript中的[].concat(…arr)。

    def spread(arg):
        ret = []
        for i in arg:
            if isinstance(i, list):
                ret.extend(i)
            else:
                ret.append(i)
        return ret
    spread([1,2,3,[4,5,6],[7],8,9]) # [1,2,3,4,5,6,7,8,9]

    29.变量交换

    以下是交换两个变量的快速方法,而且无需使用额外的变量。

    def swap(a, b):
      return b, a
    a, b = -1, 14
    swap(a, b) # (14, -1)

    30.获取缺失键的默认值

    以下代码段显示了如何在字典中没有包含要查找的键的情况下获得默认值。

    d = { a : 1,  b : 2}
    print(d.get( c , 3)) # 3

    以上是你在日常工作中可能会发现的有用方法的简短列表。它主要基于这个GitHub项目(https://github.com/30-seconds/30_seconds_of_knowledge),你可以在其中找到许多其他有用的代码片段,包括Python及其他编程语言和技术。

    作者:Fatos Morina

    欢迎加入我们的星球,一起学Python

    c8f7d0208af141991970538da9d81f49.png

    推荐阅读:
    入门: 最全的零基础学Python的问题  | 零基础学了8个月的Python  | 实战项目 |学Python就是这条捷径
    干货:爬取豆瓣短评,电影《后来的我们》 | 38年NBA最佳球员分析 |   从万众期待到口碑扑街!唐探3令人失望  | 笑看新倚天屠龙记 | 灯谜答题王 |用Python做个海量小姐姐素描图 |碟中谍这么火,我用机器学习做个迷你推荐系统电影
    趣味:弹球游戏  | 九宫格  | 漂亮的花 | 两百行Python《天天酷跑》游戏!
    AI: 会做诗的机器人 | 给图片上色 | 预测收入 | 碟中谍这么火,我用机器学习做个迷你推荐系统电影
    小工具: Pdf转Word,轻松搞定表格和水印! | 一键把html网页保存为pdf!|  再见PDF提取收费! | 用90行代码打造最强PDF转换器,word、PPT、excel、markdown、html一键转换 | 制作一款钉钉低价机票提示器! |60行代码做了一个语音壁纸切换器天天看小姐姐!|

    年度爆款文案

    点阅读原文,看200个Python案例!

    更多相关内容
  • 100个经典Python案例.zip

    2022-05-10 18:13:28
    100个经典Python案例 100个经典Python案例 100个经典Python案例 100个经典Python案例 100个经典Python案例 100个经典Python案例 100个经典Python案例 100个经典Python案例 100个经典Python案例 ...
  • 很适合想学习python的伙伴们,里面有项目的一些简介,当前很流行的python项目,给想学习的网友们一个学习的方向
  • python案例

    2018-10-24 09:43:55
    python案例
  • 主要是一些平时学习python的典型案例,有利于较好的学习
  • Python 案例分析讲解
  • python SVM算法的一个案例,用以训练SVM。
  • 三RoboDK仿真程序Python案例二;三RoboDK仿真程序Python案例二;三RoboDK仿真程序Python案例二;三RoboDK仿真程序Python案例二;三RoboDK仿真程序Python案例二;三RoboDK仿真程序Python案例二; Python的 for 语句是将一个...
  • Python编程案例教程答案
  • Python的数据分析和挖掘的案例,非常不错
  • 前几天发了一篇:《15个经典基础Python练手案例,基本功就是这样练成的》 大家反响都是不错的,于是乎今天我又来了。今天我们来点有难度的,直接上七个高阶案例以供大家享用
    在这里插入图片描述

    引言

    前几天发了一篇:《15个经典基础Python练手案例,基本功就是这样练成的》 大家反响都是不错的,于是乎今天我又来了。今天我们来点有难度的,直接上七个高阶案例以供大家享用~

    在这里插入图片描述

    一、排序及自定义函数之案例一:选择排序

    案例一:选择排序
    使用选择排序的思想实现列表数据的升序排序

    参考代码:

    lt=[45,12,56,-32,-3,44,75,-22,100]
    length=len(lt)
    # print('排序前:'+str(lt))
    for i in range(0,length-1):
        #内层循环呢控制每一轮执行的次数,j可以认为是比较空间或箭头
        for j in range(i+1,length):
            #判断两空间中的内容,如果选中空间比比较空间中的数据大,则交换数据
            if lt[i]>lt[j]:
                #temp=lt[i]
                #lt[i]=lt[j]
                #lt[j]=temp
                lt[i],lt[j]=lt[j],lt[i]
    # print('排序后:'+str(lt))
    

    二、匿名函数的定义和使用

    需求:字符串数据’This is \n a \latiao’ --> 得到’This is a test’
    步骤一:使用字符串的split()函数–>作用:可以默认去除字符串中的空格、\n、\t等内容
    然后将字符串数据以列表的形式返回

    步骤二:使用字符串的join()函数–>以空格作为连接的格式,将列表中的元素连接成为一个字符串数据返回

    str1='this is \na \latiao'
    lt=str1.split()
    print(lt)
     
    str2=' '.join(lt)
    print(str1,type(str1))
    print(str2,type(str2))
     
    print(lambda x:' '.join(x.split())(str1))
    

    三、高阶函数练习题

    1.lt = ['sdfasdfa', 'ewqrewrewqr', 'dsafa12312fdsafd', 'safsadf']
    

    –> 得到长度列表

    2.tp = ('TOM', 'Lilei', 'JAck', ‘HanmeiMeI’)
    

    –> 得到列表(所有元素的首字母大写)

    3.
    lt1 = [1,2,3,4]
    lt2 = [5,6,7,8]
    计算得到:lt1[0]lt2[0] + lt1[1]lt2[1] + ...
     15 + 26 +
    

    最终得到累加以后的值
    参考代码:

    from functools import reduce
    lt = ['sdfasdfa', 'ewqrewrewqr', 'dsafa12312fdsafd', 'safsadf']
    print(list(map(len,lt)))
     
    tp = ('TOM', 'Lilei', 'JAck','HanmeiMeI')
     
    #自定义函数:
    def func(name):
        return name.capitalize()
     
    print(list(map(func,tp)))
    print(list(map(lambda x:x.capitalize(),tp)))
    print(list(map(str.capitalize,tp)))
     
    lt1=[1,2,3,4,5]
    lt2=[5,6,7,8]
     
    #使用map的思想得到组合数据对象(map类型),对象中的元素内容为:15 26 37 48
    lt1_map=map(lambda x:x*10,lt1) #map中的内容为:10,20,30,40
    ret_map=map(lambda x,y:x+y,lt1_map,lt2) #map中的内容为:15,26,37,48
    print(list(lt1_map))
    print(list(ret_map))
     
    #使用reduce的思想将map对象中的数据进行累加
    num=reduce(lambda x,y: x + y,ret_map)
    print('和值为: %s' %num)
    

    四、高阶函数练习题

    高阶函数以及匿名函数之间的配合使用

    from functools import reduce
    #模块一:lambda和filter的结合使用
    #lt = [1,2,3,4,5,6,7,8,9] --> [3,6,9]]
    lt = [1,2,3,4,5,6,7,8,9]
    print(list(filter(lambda x:x%3==0,lt)))
     
    #模块二:lambda和map的结合使用
    #容器/序列对象:range对象
    mo=map(lambda x:x**2,range(5))
    print(list(mo))
     
    #模块三:
    '''
    在模块二的基础上扩展功能:range(10)
    过滤以后保留的数据范围为:(5,50)之间
    '''
    mo=map(lambda x:x**2,range(10))
    fo=filter(lambda x:x>5 and x<50,mo)
    print(list(fo))
     
    #模块四:lambda和reduce配合使用
    lt=[1,2,3,4,5]
    my_sum=reduce(lambda x,y:x+y,lt)
    print(my_sum)
    

    五、求两个列表元素的和,返回新列表

    参考代码:

    lt1=[1,2,3,4]
    lt2=[5,6]
    print(list(map(lambda x,y:x+y,lt1,lt2)))
    

    六、求字符串中每个单词的长度

    参考代码:

    content = 'Welcome To latiao'
    word_list=content.split()
    mo=map(len,word_list)
    print(list(mo),type(mo))
    

    七、接收函数作为参数,或者将函数作为返回值

    接收函数作为参数,或者将函数作为返回值

    # 创建一个列表
    l = [1,2,3,4,5,6,7,8,9,10]
    
    # 定义一个函数,用来检查一个任意的数字是否是偶数。
    def fn2(i) :
        if i % 2 == 0 :
            return True
    
        return False    
    
    # 这个函数用来检查指定的数字是否大于5
    def fn3(i):
        if i > 5 :
            return True    
        return False
    # 这个函数可以将3的倍数取出
    def fn4(i):
        if i % 3 == 0 :
            return True
        return False
    
    def fn(func , lst) :# 定义高阶函数fn
    
        # 创建一个新列表
        new_list = []
    
        # 对列表进行筛选
        for n in lst :
          new_list.append(n)
        # 返回新列表
        return new_list
    #此时就可以随意调用不同的函数来获得不同的结果了,
    #只需要改变高阶函数fn的两个参数即可。     
    print(fn(fn4 , l))#此时调用的是fn4,列表是l,即意味着取出l列表中所有能被3整除的数。
    
    在这里插入图片描述

    在这里插入图片描述

    展开全文
  • 樱花树 python案例 python樱花树源码 import turtle import random from turtle import * from time import sleep t = turtle.Turtle() w = turtle.Screen()
  • Python案例讲解

    千人学习 2019-10-24 16:23:37
    一个视频了解Python,希望对大家有帮助,也希望大家多多关注我,马上会更多Python高级课程!
  • Python编程案例教程》(刘庆)课件ppt 课后例题答案 示例代码
  • Python案例大全(长期更新)

    千次阅读 多人点赞 2020-09-13 20:04:45
    一切以代码最简、性能最高为原则,宁愿空间换时间 1.前100中,对“3的倍数”的数求和 print(sum(i for i in range(0,101,3)))#对“3的倍数”的数求和 print(sum(i for i in range(0,101,2)))#对“2的倍数”的数求和 ...

    代码越简单越好,方便维护,宁愿空间换时间

    Index:

    1.一行代码实现“前100中,对‘3的倍数’的数求和”(列表推导式)
    2.将字符串文本“¥12345.6789元”,加上千元内随机金额后,变为保留2位小数的字符串文本
    3.打印九九乘法表
    4.打印九九乘法表(完美对齐版本)
    5.判断某一天是当年的第几天
    6.一个整数加上100是完全平方数,加上268还是完全平方数,求这个整数(对比电脑性能)
    7.随机输入5个数,按大小重新排列
    8.分解质因数(对比电脑性能)
    9.找出字符串中数字、字母、空格、其他类字符的个数
    10.S=a+aa+aaa+aaaa+…+aaaaaaa(a是整数,输入;相加次数,也是输入)
    11.打印菱形
    12.输入n个字符,倒序输出
    13.输入10个正整数,输出第二大数的序号
    14.输入1个不多余5位的正整数,判断位数,然后逆序打印
    15.类和对象的深入理解
    16.请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母
    17.有序列表插入元素:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中
    18.矩阵相加
    19.函数交换变量
    20.多个人按顺序轮流报数,报到3的人退出圈子,然后下个人再从1开始报数,顺序不变,一直循环报数,最后剩下几号?
    21、实例化webdriver的2种方式(path型,指定路径型)
    22、多进程、多线程的案例
    23、pycharm文件开头设置
    24、pycharm注释颜色
    25、普通文件操作的一些记录
    26、迭代器、生成器的一些练习
    27、引用、调用、内包、外包、闭包、装饰器基础-闭包
    28、闭包之上-装饰器
    29、上下文管理器
    30、类和对象的复习
    31、多进程多线程练习记录
    32、多线程模拟生产者消费者问题
    33、re正则表达式练习记录
    34、时间标准库time,datetime,数学标准库math,random,练习记录
    35、os.path,pathlib.Path练习记录
    36、pip安装
    37、根据起点、终点、间隔值,生成一个由重多子列表作为元素的大列表对象
    38、多维数组的排序
    39、列表方法操练
    40、字符串方法操练
    41、字典方法操练
    42、简单的os操作
    43、python中的队列初探

    1.一行代码实现“前100中,对‘3的倍数’的数求和”(列表推导式)

    print(sum(i for i in range(0,101,3)))#对“3的倍数”的数求和
    print(sum(i for i in range(0,101,2)))#对“2的倍数”的数求和
    

    1683
    2550

    PS:不要求最简的话,使用while循环、for循环都可以得出结论(列表推导式其实还可以带if哦)

    2.将字符串文本“¥12345.6789元”,加上千元内随机金额后,变为保留2位小数的字符串文本

    import random#导入随机模块
    s='¥12345.6789元'
    s1,s2,s3=s[0],s[1:-1],s[-1]#一次多赋值几个
    s2=f'{float(s2)+random.uniform(0,1000):.2f}'#转类型相加再转回来
    s22='{float(s2)+random.uniform(0,1000):.2f}'#没加f
    print(s1+s2+s3)#字符串文本拼接
    print(s1,s2,s3,s22,sep='-')#看看各元素
    

    ¥12754.67元
    ¥-12754.67-元-{float(s2)+random.uniform(0,1000):.2f}

    PS:字符串切片,转类型,拼接

    3.打印九九乘法表

    for i in range(1,10):
        for j in range(1,i+1):
            print(f'{j}×{i}={j*i}',end=' ')
            # print("%d*%d=%2d"%(j,i,j*i),end=' ')#老版本等价写法
        print('')
    

    1×1=1
    1×2=2 2×2=4
    1×3=3 2×3=6 3×3=9
    1×4=4 2×4=8 3×4=12 4×4=16
    1×5=5 2×5=10 3×5=15 4×5=20 5×5=25
    1×6=6 2×6=12 3×6=18 4×6=24 5×6=30 6×6=36
    1×7=7 2×7=14 3×7=21 4×7=28 5×7=35 6×7=42 7×7=49
    1×8=8 2×8=16 3×8=24 4×8=32 5×8=40 6×8=48 7×8=56 8×8=64
    1×9=9 2×9=18 3×9=27 4×9=36 5×9=45 6×9=54 7×9=63 8×9=72 9×9=81

    PS:要处理好对齐细节的话,得老版本写法

    4.打印九九乘法表(完美对齐版本)

    for i in range(1,10):
        for j in range(1,i+1):
            # print(f'{j}×{i}={j*i}',end=' ')#新版本写法
            print("%d*%d=%2d"%(j,i,j*i),end=' ')#老版本等价写法
        print('')
    

    11= 1
    1
    2= 2 22= 4
    1
    3= 3 23= 6 33= 9
    14= 4 24= 8 34=12 44=16
    15= 5 25=10 35=15 45=20 55=25
    1
    6= 6 26=12 36=18 46=24 56=30 66=36
    1
    7= 7 27=14 37=21 47=28 57=35 67=42 77=49
    18= 8 28=16 38=24 48=32 58=40 68=48 78=56 88=64
    19= 9 29=18 39=27 49=36 59=45 69=54 79=63 89=72 9*9=81
    在这里插入图片描述
    %d #数字普通输出;
    %2d #数字按宽度为2,右对齐方式输出,左边补空格;
    %02d#数字按宽度为2,右对齐方式输出,左边补0;
    %.2d#输出整形时最少输出2位,不够以0占位,小数的话只要整数部分(100→100,2→02,3.777→03);
    在这里插入图片描述

    5.判断某一天是当年的第几天

    a=input('请输入年月日代表的8位纯数字,例如“20201204”代表2020/12/04:')
    year,month,day,sum=int(a[0:4]),int(a[4:6]),int(a[6:8]),0
    b=(31,28,31,30,31,30,31,31,30,31,30,31)
    for i in range(1,12):
        if month >= i+1:
            sum+=b[i-1]
        else:
            break #为提高效率,采用break
    if (year%4==0 and year%100!=0 or year%400==0) and month>=3 :
        sum+=1
    sum+=day
    print(f'{year}/{month}/{day}这一天是当年的第{sum}天')
    

    在这里插入图片描述

    6.一个整数加上100是完全平方数,加上268还是完全平方数,求这个整数(对比电脑性能)

    import math,time
    print(time.ctime())#考察电脑性能
    for i in range(1,9999999,1):
        if round(math.sqrt(i+100))==math.sqrt(i+100) \
                and round(math.sqrt(i+268))==math.sqrt(i+268):
            print(i)
    print(time.ctime())#考察电脑性能
    
    import math,time
    start=time.time()
    for i in range(1,10000000,1):
        if round(math.sqrt(i+100))==math.sqrt(i+100) \
                and round(math.sqrt(i+268))==math.sqrt(i+268):
            print(i)
    end=time.time()
    #考察电脑性能
    print(end-start)
    

    ROG魔霸新锐i7十代-只需4秒,ThinkPad T470s i5七代要12秒

    7.随机输入5个数,按大小重新排列

    s=[]
    for i in range(5):
        s.append(input(f'请输入第{i+1}个数:'))
    s.sort()    #从小到大
    print(s,type(s)) 
    s.reverse() #从大到小
    print(s,type(s)) 
    

    运行效果

    var s=[1.234,0,-67,99,55];
    s.sort();//从小到大排序
    console.log(s)
    console.log('sort()排序后结果为【'+s+'】')
    s.reverse() //当前顺序的倒序排序
    console.log('reverse()倒序排序后结果为【'+s+'】')
    

    运行效果

    8.分解质因数(对比电脑性能)

    import math
    def single(x):
        if x in (1,2,3) :
            return True
        else:
            for i in range(2,math.ceil(math.sqrt(x))):
                if x%i==0:
                    return False
            return True
    a=int(input('请输入1000万以内、大于1的正整数:'))
    a1,b,c=a,[],''
    if single(a)==True:
        print(f'a={a}')
    else:
        for i in range(2,math.ceil(a/2)):
            if single(i)==True:
                while a%i==0:
                    a=a/i
                    b.append(i)
    print(b)
    for i in range(0,len(b)):
        c=c+f'{b[i]}*'
    d=f'{a1}='+c
    print(d[0:-1])
    

    在这里插入图片描述

    function single(x)
    {   if(x in [1,2,3]) {return true;}
        else 
            {
                for(var i=2;i<=x;i++)
                {
                   if ( x%i === 0){return false;}
                   return true;
                }
            }
    }
    var a=146965;
    var a1=a;
    var b=[];
    var c='';
    if (single(a)==true){console.log('a='+a+'')}
    else 
     {
        for(var i=2;i<=Math.ceil(a/2);i++)
        {
            if (single(i)==true)
            {
                while(a%i===0){a=a/i;b.push(i)}
            }
        }
     }
    console.log(b)
    for (var i=0;i<b.length;i++)
    {
        c=c+''+b[i]+'*'
    }
    var d=''+a1+'='+c
    console.log(d[0,-1])
    

    js的实现不知道错在哪里,以后熟练了,再来纠错
    在这里插入图片描述

    9.找出字符串中数字、字母、空格、其他类字符的个数

    方法一:

    import re,sys
    a=input('请输入字符串:')
    a1=len(re.findall('\s',a))
    a2=len(re.findall('\d',a))
    a3=len(re.findall('[a-zA-Z]',a))
    a4=len(a)-a1-a2-a3
    print(f'空格:{a1}\n数字:{a2}\n字母:{a3}\n其他类:{a4}')
    sys.stdout.write(f'空格:{a1}\n数字:{a2}\n字母:{a3}\n其他类:{a4}')
    sys.stdout.write('\n空格:'+str(a1))
    sys.stdout.write('数字:'+str(a2))
    sys.stdout.write('字母:'+str(a3))
    sys.stdout.write(f'其他:{a4}')
    

    在这里插入图片描述
    方法二:

    import sys
    a = input("input:")
    letter,space,number,others=0,0,0,0
    for b in a:
        if b.isalpha():
            letter += 1
        elif b.isspace():
            space += 1
        elif b.isdigit():
            number +=1
        else :
            others+=1
    print(f"字母有{letter}个,空格有{space}个,数字{number}个,其他类{others}个")
    sys.stdout.write(f"字母有{letter}个,空格有{space}个,数字{number}个,其他类{others}个")
    

    在这里插入图片描述

    拓展:
    在这里插入图片描述

    10.S=a+aa+aaa+aaaa+…+aaaaaaa(a是整数,输入;相加次数,也是输入)

    import sys
    a=int(input('请输入数字:'))
    a1=a
    b=int(input('请输入计算次数:'))
    c=[]
    s=0
    sys.stdout.write(f'结果=0')
    for i in range(b):
        c.append(a)
        s+=a
        a=a*10+a1
        sys.stdout.write('+'+f'{c[i]}')
    sys.stdout.write(f'={s}')
    

    在这里插入图片描述

    11.打印菱形

    方法一:

    import sys
    n=int(input('请输入最长行的行标:'))
    for i in range(0,n):
        print(' '*(n-i-1),sep='',end='')
        print('*'*(2*i+1),sep='',end='\n')
    for i in range(1,n):
        print(' '*(i),sep='',end='')
        print('*'*(2*n-1-2*i),sep='',end='\n')
    

    在这里插入图片描述
    方法二:

    a=int(input(':'))
    b='*'
    e=[]
    for i in range(1,a+1):
        if a%2!=0:
            if i<=(a+1)/2:
                e.append((2 * i - 1) * '*')
                print(' '*(round((a+1)/2)-i),e[i-1])
            if i>(a+1)/2:
                print(' '*(-(round((a+1)/2)-i)),e[-(i-(round((a+1)/2)-1))])
        if a%2==0:
            if i<=a/2:
                e.append((2 * i - 1) * '*')
                print(' '*(round(a/2)-i), e[i-1])
            if i>a/2:
                print(' '*(-((round(a/2)+1)-i)),e[round(a/2)-i])
    

    在这里插入图片描述

    12.输入n个字符,倒序输出

    方法一二:

    # 输入n个字符,倒序输出
    def out1(n):
        n=int(n)
        x = input('请输入字符:')
        if n<=1:
            print(x,end=',')
        else:
            out1(n-1)
            print(x,end=',')
    out1(6)
    print('\n')
    def out2(n):
        x=[]
        for i in range(n):
            x.append(input('请输入字符:'))
        x.reverse()
        for i in x:
            print(i,end=',')
    out2(6)
    

    在这里插入图片描述
    方法三:

    def resite(str):
        if len(str)!=1:
            resite(str[1:])
        else:
            pass #逻辑完整性
        print(str[0],end='')
    resite(input('请输入字符串 :'))
    

    在这里插入图片描述

    13.输入10个正整数,输出第二大数的序号

    # 输入10个正整数,输出第二大数的序号
    def second():
        x=[]
        for i in range(10):
            x.append(float(input(f'请输入第{i+1}个数字:')))
        x.sort()
        print(x)
        print(x[-2])
    second()
    

    在这里插入图片描述

    14.输入1个不多余5位的正整数,判断位数,然后逆序打印

    傻不傻,直接len()取长度,字符串逆序[::-1]打印就行了。

    # 输入1个不多余5位的正整数,判断位数,然后逆序打印
    import sys
    x=int(input('请输入不多余5位的正整数:'))
    a=x//10000
    b=x%10000//1000
    c=x%1000//100
    d=x%100//10
    e=x%10
    if a!=0:
        print(f'这是5位数:{e},{d},{c},{b},{a}')
    elif b!=0:
        print('这是4位数:',e,d,c,b)
    elif c!=0:
        sys.stdout.write(f'这是3位数:{e},{d},{c}')
    elif d!=0:
        sys.stdout.write(f'这是2位数:{e},{d}')
    else:
        sys.stdout.write(f'这是1位数:{e}')
    

    在这里插入图片描述

    15.类和对象的深入理解

    class test1:
        attr = 1
    a1 = test1()
    test1.attr = 0
    print(a1.attr)
    a1.attr = 4
    a1.test = 6
    a2 = test1()
    print(a2.attr)
    print(a1.attr, a1.test)
    print(test1.__dict__, a1.__dict__)
    
    class test2:
        attr = 2
    b1 = test2()
    b2 = test2()
    b1.attr = 0
    print(b2.attr)
    print(test2.__dict__, b2.__dict__)
    
    class test3:
        attr = 3
        def __init__(self):
            self.attr = 0
    c = test3()
    print(c.attr)
    print(test3.__dict__, c.__dict__)
    

    在这里插入图片描述
    在这里插入图片描述

    16.请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母

    方法1:

    # 请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。
    # monday,tuesday,wensday,thursday,friday,saturday,sunday
    def judge():
        a = input('请输入第1个字母:').lower()
        b = {'m': 'monday星期一', 'w': 'wensday星期三', 'f': 'friday星期五'}
        if a in ('m', 'w', 'f'):
            print('我猜你表达的是:', b[a])
        elif a in ('t'):
            a1 = input('请输入第2个字母:').lower()
            if a1 == 'u':
                print('我猜你表达的是:tuesday星期二')
            elif a1 == 'h':
                print('我猜你表达的是:thursday星期四')
            else:
                print('输入错误,重来')
                judge()
        elif a in ('s'):
            a2 = input('请输入第2个字母:').lower()
            if a2 == 'a':
                print('我猜你表达的是:saturday星期六')
            elif a2 == 'u':
                print('我猜你表达的是:sunday星期天')
            else:
                print('输入错误,重来')
                judge()
        else:
            print('输入错误,重来')
            judge()  
    judge()
    

    在这里插入图片描述
    方法2:

    a = input('输入第1个字母:')
    while True:
        if a not in ('m', 't', 'w', 'f', 's'):
            a = input('输入第1个字母:')
        else:
            break
    if a == 't' or a == 's':
        b = input('输入第二个字母:')
        while True:
            if b not in ('u', 'h', 'a', 'n'):
                b = input('输入第二个字母:')
            else:
                break
        if a == 't' and b == 'u':
            print('星期二')
        if a == 't' and b == 'h':
            print('星期四')
        if a == 's' and b == 'a':
            print('星期六')
        if a == 's' and b == 'u':
            print('星期天')
    if a == 'm':
        print('星期一')
    if a == 'w':
        print('星期三')
    if a == 'f':
        print('星期五')
    

    在这里插入图片描述
    方法3:(该方法转载自-https://blog.csdn.net/weixin_41084236/article/details/81564963)

    weekT={'h':'thursday',
           'u':'tuesday'}
    weekS={'a':'saturday',
           'u':'sunday'}
    week={'t':weekT,
          's':weekS,
          'm':'monday',
          'w':'wensday',
          'f':'friday'}
    a=week[str(input('请输入第一位字母:')).lower()]
    if a==weekT or a==weekS:
        print(a[str(input('请输入第二位字母:')).lower()])
    else:
        print(a)
    

    在这里插入图片描述
    方法4:

    week = {'t': {'u': 'tuesday', 'h': 'thursday'},
            's': {'a': 'saturday', 'u': 'sunday'},
            'm': 'monday',
            'w': 'wensday',
            'f': 'friday'}
    a = week[(input('请输入第一位字母:')).lower()]
    if a == 'monday' or a == 'wensday' or a == 'friday':
        print(a)
    else:
        print(a[(input('请输入第二位字母:'))])
    

    在这里插入图片描述

    17.有序列表插入元素:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。

    # coding:utf8
    def sort(list,i):
        list.append(i)
        return sorted(list)
    print(sort([1,4,8,5],-99))
    

    在这里插入图片描述

    18.矩阵相加

    转载于https://blog.csdn.net/weixin_41084236/article/details/81564963

    X = [[12,7,3],
        [4 ,5,6],
        [7 ,8,9]]
    Y = [[5,8,1],
        [6,7,3],
        [4,5,9]]
    res=[[0,0,0],
        [0,0,0],
        [0,0,0]]
    for i in range(len(res)):
        for j in range(len(res[0])):
            res[i][j]=X[i][j]+Y[i][j]
    print(res)
    

    在这里插入图片描述

    19.函数交换变量

    def exchange(x,y):
        return (y,x)
    x=1
    y=2
    x,y=exchange(x,y)
    print(x,y)
    

    在这里插入图片描述

    20.多个人按顺序轮流报数,报到3的人退出圈子,然后下个人再从1开始报数,顺序不变,一直循环报数,最后剩下几号?

    法一(余数修正法):

    # coding:utf8
    a=int(input('请输入人数(整数):'))
    x,y,j=[],[],0
    for i in range(1,a+1):
        x.append(i)
    print(f'x={x}')
    # x.pop(0)    #索引删除
    # del x[0]    #索引删除
    # x.remove(6) #值删除
    # print(f'x={x}')
    while len(x)>=2:
        for i in range(0,len(x)):
            if (i+1+j)%3==0:
                y.append(x[i])
            else:
                pass
        j = (len(x) + j) % 3
        print(y)
        for k in y:
            x.remove(k)
        y=[]
    print(f'最开始的第{x[0]}号选手最终留了下来')
    

    999人
    在这里插入图片描述
    法二(累积计数法):

    n = int(input('请输入人数:'))
    li_c = list(range(1, n + 1))
    a = 0
    while len(li_c) > 1:
        li_co = li_c[:]
        for i in range(len(li_co)):
            print(li_c)
            a = a + 1
            if a % 3 == 0:
                li_c.remove(li_co[i])
    print(f'最后留下的是原来的第 {li_c[0]} 号。')
    

    888人
    在这里插入图片描述
    21、实例化webdriver的2种方式(path型,指定路径型)

    from selenium import webdriver
    import time
    #无path调用谷歌浏览器驱动
    dr1=webdriver.Chrome(executable_path='D:\\ChromeDriver\\chromedriver.exe')
    dr1.maximize_window()
    dr1.implicitly_wait(15)
    dr1.get('http://www.baidu.com')
    time.sleep(1)
    #有path调用谷歌浏览器驱动
    dr2=webdriver.Chrome()
    dr2.maximize_window()
    dr2.implicitly_wait(15)
    dr2.get('https://blog.csdn.net/Tiandao60')
    time.sleep(1)
    #无path调用火狐浏览器驱动
    dr3=webdriver.Firefox(executable_path='D:\\GeckoDriver\\geckodriver.exe')
    dr3.maximize_window()
    dr3.implicitly_wait(15)
    dr3.get('http://www.baidu.com')
    time.sleep(1)
    #有path调用火狐浏览器驱动
    dr4=webdriver.Firefox()
    dr4.maximize_window()
    dr4.implicitly_wait(15)
    dr4.get('https://blog.csdn.net/Tiandao60')
    time.sleep(1)
    # 无path调用IE浏览器驱动
    dr5=webdriver.Ie(executable_path='D:\\IEDriverServer\\IEDriverServer.exe')
    dr5.maximize_window()
    dr5.implicitly_wait(15)
    dr5.get('http://www.baidu.com')
    time.sleep(1)
    #有path调用IE浏览器驱动
    dr6=webdriver.Ie()
    dr6.maximize_window()
    dr6.implicitly_wait(15)
    dr6.get('https://blog.csdn.net/Tiandao60')
    time.sleep(1)
    

    22、多进程、多线程的案例

    # coding=utf-8
    """
    Author:刘源
    Createtime:2021/07/26 00:12:27
    Updatetime:2021/07/26 00:12:27
    Description:
    """
    import time,threading,os,pathlib,multiprocessing
    file1=open('5W2H抓重点潜意识.txt','a')
    file1.write('\n运行记录')
    file1.write(time.ctime())
    file1.write('---'+str(time.time()))
    file1.close()
    
    c=0
    def loop(timer):
        global c
        c += 1
        c1=c
        print(f'{multiprocessing.current_process()}:循环内,当前子进程号是{os.getpid()},__name__是{__name__},',f'第{c1}次循环开始:{time.ctime()},持续时间是{timer}s,当前线程是{threading.current_thread()},当前线程数是{threading.active_count()}。')
        time.sleep(timer)
        print(f'{multiprocessing.current_process()}:循环内,当前子进程号是{os.getpid()},__name__是{__name__},',f'第{c1}次循环结束:{time.ctime()},持续时间是{timer}s,当前线程是{threading.current_thread()},当前线程数是{threading.active_count()}。')
    print(f'{multiprocessing.current_process()}:主进程内,当前主进程号是{os.getppid()},当前子进程号是{os.getpid()},__name__是{__name__}')
    # 多进程
    if __name__=='__main__':
        p=[]
        p.append(multiprocessing.Process(target=loop,name='子进程1',args=(9,)))
        p.append(multiprocessing.Process(target=loop,name='子进程2',kwargs={"timer":7,}))
        p.append(multiprocessing.Process(target=loop,name='子进程3',args=(5,)))
        for i in p:
            i.start()
            time.sleep(1)
        loop(3)
    # 多线程
    t=[]
    t.append(threading.Thread(target=loop,name='子线程1',args=(9,)))
    t.append(threading.Thread(target=loop,name='子线程2',kwargs={"timer":7,}))
    t.append(threading.Thread(target=loop,name='子线程3',args=(5,)))
    for i in t:
        i.start()
        time.sleep(1)
    loop(3)
    

    23、pycharm文件开头设置
    在这里插入图片描述
    在这里插入图片描述
    24、pycharm注释颜色
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    效果:
    在这里插入图片描述
    25、普通文件操作的一些记录

    import time,threading,os,pathlib,multiprocessing,sys,codecs,re
    file1=open('5W2H抓重点潜意识6.txt','a')
    file1.write(f'\n{__file__}运行记录')
    file1.write(time.ctime())
    file1.write('---'+str(time.time()))
    file1.close()
    # 读取人名,集合去重
    file2=open('threeState/name.txt','r',encoding='utf-8')
    names=list(set(file2.read().split('|')))
    print(names)
    file2.close()
    # 读取武器,集合去重
    file3=open('threeState/weapon.txt','r',encoding='utf8')
    weapons=file3.readlines()
    print(weapons)
    file3.close()
    # 读取‘三国演义’全文
    file4=open('threeState/sanguo1.txt','r',encoding='utf8')
    txt=file4.read().strip().replace('\n','')
    # print打印,用的是gbk编码
    print(txt.encode('gbk','ignore').decode('gbk'))
    file4.close()
    # 统计人名出现次数
    for name in names:
        print(name,len(re.findall(name,txt)))
    

    26、迭代器、生成器的一些练习

    # 简单迭代器
    it1=iter(list(i for i in range(0,1001,5) if i%4==0))
    while True:
        try:
            print(next(it1))
        except Exception as e:
            print('结束')
            break
    # 生成器-特殊迭代器,定义
    def frange(start,stop,step):
        x=start
        while x<stop:
            print('yield还会执行哦 哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈')
            yield x
            x+=step
    # next()访问迭代器-生成器
    a=frange(1,99,2)
    print(next(a))
    print(next(a))
    print(next(a))
    print('$'*99)
    # 遍历访问迭代器-生成器
    for i in frange(100,200,15):
        print(i)
    

    27、引用、调用、内包、外包、闭包、装饰器基础-闭包

    # coding=utf-8
    # encoding: utf-8
    """
    Author:刘源
    Createtime:2021/07/31 19:12:15
    Updatetime:2021/07/31 19:12:15
    Description:闭包与函数的引用、调用、嵌套、外包、内包,闭包=外包内包的引用调用
    """
    import time,threading,os,pathlib,multiprocessing,sys,codecs,re,functools,sys
    file1=open('LinuxPython5W2H-10.txt','a')
    file1.write(f'{__file__}运行记录')
    file1.write(time.ctime())
    file1.write('---'+str(time.time())+'\n')
    file1.close()
    # 闭包-内外包-引用调用
    def sum(a):
        def total(b):
            return a+b
        return total
    print(type(sum(1)))
    print(sum(1)(2))
    # 计时装饰器
    def countTime(func):
        start=time.time()
        def wrapper(*args,**kwargs):
            result= func(*args,**kwargs)
            end=time.time()
            print(f'耗时{end-start}s')
            return result
        return wrapper
    # 语法糖调用计时装饰器
    @countTime
    def for1():
        a=[]
        for i in range(1,9999999):
            a.append(i)
        print('finish')
        return a
    print(for1()[88])
    # 用闭包实现类似迭代器、生成器的迭代、累加功能
    def counter(first=0):
        count=first
        def addOne():
            nonlocal count
            count+=1
            return count
        return addOne
    # 类似dr=webdriver.Chrome(),闭包内外包引用调用,类方法作用域
    counter5=counter(5)
    print(counter5())
    print(counter5())
    print(counter5())
    print(counter(5)())
    print(counter(5)())
    print(counter(5)())
    print(counter5())
    print(counter5())
    print(counter5())
    print(counter5)
    # 查看内存正在被几个地方引用
    print(sys.getrefcount(counter))
    # 闭包的应用,直线函数的参数设定+自变量设定
    def line(a,b):
        def calcu(x):
            return a*x+b
        return calcu
    line1=line(2,1)
    line2=line(3,2)
    print('21------',line1(3))
    print('22------',line1(7))
    print('23------',line2(3))
    print('24------',line2(7))
    

    28、闭包之上-装饰器

    # 手写闭包装饰器(ps:变量作用4大范围-LEGB规则-Local,Enclosing,Global,Built_in)
    def timer(func):
        @functools.wraps(func)
        def wrapper(*args,**kwargs):
            start=time.time()
            result=func(*args,**kwargs)
            end=time.time()
            print(f'函数耗时{end-start}s')
            return result
        return wrapper
    
    @timer
    def sleep3(x):
        time.sleep(3)
        return x**3
    
    print('1------',sleep3(4))
    # 手写高级闭包装饰器-闭包嵌套更多的函数
    def timer_author(author):
        def timer(func):
            @functools.wraps(func)
            def wrapper(*args,**kwargs):
                start=time.time()
                result=func(*args,**kwargs)
                end=time.time()
                print(f'高级闭包装饰器记录的耗时是{end-start}s,且设置者是{author}')
                return result
            return wrapper
        return timer
    
    @timer_author('刘源')
    def sleep2():
        time.sleep(2)
        return '2秒'
    
    @timer_author('李昊')
    def sleep4():
        time.sleep(4)
        return '4秒'
    
    print('2------',sleep2())
    print('3------',sleep4())
    

    29、上下文管理器

    # 上下文管理器,自动关闭文件,自动处理文件冲突
    with open('LinuxPython5W2H-12.txt','a') as f:
        f.write(f'{__file__}运行记录:')
        f.write(time.ctime())
        f.write('---'+str(time.time())+'\n')
    

    30、类和对象的复习

    # 类和对象
    class Player():
        """玩家类"""
        def __init__(self, name, hp,job):
            # __name是表示,不可修改
            self.__name = name
            self.hp = hp
            self.job = job
        def print_role(self,confidence=100):
            print(f'姓名:{self.__name},血量:{self.hp},自信心:{confidence},职业:{self.job}')
    
    class Monster():
        """怪物类"""
        def __init__(self,hp=60):
            self.hp=hp
        def run(self):
            print('移动到某个位置')
        def whoami(self):
            print('我是所有怪物的母亲')
    
    class Animal(Monster):
        '普通怪物'
        def __init__(self,hp=10):
            super().__init__(hp)
    
    class Boss(Monster):
        """Boss类怪物"""
        def __init__(self,hp=100):
            super().__init__(hp)
        def whoami(self):
            print('我是boss级怪物')
    a1=Monster()
    print(f'a1的类型:{type(a1)}',f'是Monster的子类吗:{isinstance(a1,Monster)}')
    a1.whoami()
    a2=Animal(30)
    print(f'a2的类型:{type(a2)}',f'是Monster的子类吗:{isinstance(a2,Monster)}')
    a2.run()
    a3=Boss()
    print(f'a3的类型:{type(a3)}',f'是Monster的子类吗:{isinstance(a3,Monster)}')
    a3.whoami()
    print('1------',a3.hp)
    

    31、多进程多线程练习记录

    # coding=utf-8
    # encoding: utf-8
    """
    Author:刘源
    Createtime:2021/08/01 01:04:19
    Updatetime:2021/08/01 01:04:19
    Description:多线程
    """
    import time, threading, os, pathlib, multiprocessing, sys, codecs, re, functools, sys, pytest
    
    # 上下文管理器,自动关闭文件,自动处理文件冲突
    with open('tt15.txt', 'a') as f:
        f.write(f'{__file__}运行记录:')
        f.write(time.ctime())
        f.write('---' + str(time.time()) + '\n')
        print(sys.path)
    
    
    # 使用标准库的线程类
    def myThread(time1):
        print(f'线程开始:{time.ctime()},将休眠{time1}s,线程信息{threading.current_thread()}.{threading.current_thread().getName()}')
        time.sleep(time1)
        print(f'线程结束:{time.ctime()},已休眠{time1}s,线程信息{threading.current_thread()}.{threading.current_thread().getName()}')
    
    
    a = []
    a.append(threading.Thread(target=myThread, name='子线程1', args=(9,)))
    a.append(threading.Thread(target=myThread, kwargs={"time1": 7}, name='子线程2'))
    a.append(threading.Thread(target=myThread, name='子线程3', args=(5,)))
    a.append(threading.Thread(target=myThread, args=(3,)))
    for t in a:
        t.start()
        t.join()
        time.sleep(0.5)
    a.append(threading.Thread(target=myThread, args=(4,)))
    myThread(2)
    
    
    # 自己重写线程类run方法
    class t(threading.Thread):
        def __init__(self, group=None, target=None, name=None, args=(), kwargs=None, daemon=None, time1=9):
            super().__init__(group, target, name, args, kwargs)
            self.time1 = time1
    
        def run(self):
            print(
                f'线程开始:{time.ctime()},将休眠{self.time1}s,线程信息{threading.current_thread()}.{threading.current_thread().getName()}')
            time.sleep(self.time1)
            print(
                f'线程结束:{time.ctime()},已休眠{self.time1}s,线程信息{threading.current_thread()}.{threading.current_thread().getName()}')
    
    
    b = []
    b.append(t(target=myThread, args=(9,), time1=9))
    b.append(t(target=myThread, kwargs={"time1": 7}, time1=7))
    b.append(t(target=myThread, args=(5,), time1=5))
    b.append(t(target=myThread, args=(3,), time1=3))
    for t in b:
        t.start()
        time.sleep(0.5)
    

    32、多线程模拟生产者消费者问题

    import time, threading, os, pathlib, multiprocessing, sys, codecs, re, functools, sys, pytest,random,queue
    # 上下文管理器,自动关闭文件,自动处理文件冲突
    with open('tt16.txt', 'a') as f:
        f.write(f'{__file__}运行记录:')
        f.write(time.ctime())
        f.write('---' + str(time.time()) + '\n')
        print(sys.path)
    
    queue1=queue.Queue(5)
    class ProducerThread(threading.Thread):
        """生产者子线程类"""
        def run(self):
            name=threading.current_thread().getName()
            global queue1
            while True:
                product=random.randint(1,99)
                queue1.put(product)
                print(f'生产者{name}生产了{product}个数据')
                rest=random.randint(1,5)
                time.sleep(rest)
                print(f'生产者{name}休眠了{rest}秒')
    
    class ConsumerThread(threading.Thread):
        """消费者子线程类"""
        def run(self):
            name=threading.current_thread().getName()
            global queue1
            while True:
                product=queue1.get()
                queue1.task_done()
                print(f'消费者{name}消费了{product}个数据')
                rest=random.randint(1,5)
                time.sleep(rest)
                print(f'消费者{name}休眠了{rest}秒')
    
    p1=ProducerThread(name='p1')
    p1.start()
    c1=ConsumerThread(name='c1')
    c1.start()
    

    33、re正则表达式练习记录

    import time, threading, os, pathlib, multiprocessing, sys, codecs, re, functools, sys, pytest,random,queue
    # 上下文管理器,自动关闭文件,自动处理文件冲突
    with open('tt17.txt', 'a') as f:
        f.write(f'{__file__}运行记录:')
        f.write(time.ctime())
        f.write('---' + str(time.time()) + '\n')
        print(sys.path)
    # re.compile().match()匹配开头
    print('1------',re.compile('cat').match('cat123'),re.compile('cat').match('123cat123'))
    # re.compile().fullmatch()匹配全部
    print('2------',re.compile('cat').fullmatch('cat123'),re.compile('\d{3}cat\d*').fullmatch('123cat1234'))
    # re.compile().search()匹配任意
    print('3------',re.compile('cat').search('123cat456'),re.compile('cat').search('123caat456'))
    # .任意非空、非space的单字符
    print('4------',re.compile('ca..t').search('123ca12t456'))
    # *将前一个字符重复任意次(0次与多次),+将前一个字符重复至少1次,?出现一次或不出现
    print('5------',re.compile('ca.*t').search('1cat4'),re.compile('ca.*t').search('1ca5t4'))
    print('6------',re.compile('ca.+t').search('1caaat4'),re.compile('ca.+t').search('1cat4'))
    print('7------',re.compile('ca.?t').search('1cat4'),re.compile('ca.?t').search('1ca1t4'),re.compile('ca.?t').search('1ca12t4'))
    # ^开头限定,$结尾限定
    print('8------',re.compile('^cat').search('cat4h'),re.compile('^cat').search('ycat4h'))
    print('9------',re.compile('cat$').search('ttcat'),re.compile('^cat').search('ttcat4'))
    #{m}出现m次,{m,n}出现[m,n]次,{m,}至少出现m次
    print('10------',re.compile('ca{2}t').search('1caat2'),re.compile('ca{2}t').search('1cat2'),re.compile('ca{2}t').search('1caaat2'))
    print('11------',re.compile('ca{2,3}t').search('1caat2'),re.compile('ca{2,3}t').search('1caaat2'),re.compile('ca{2,3}t').search('1cat2'))
    print('12------',re.compile('ca{2,}t').search('1cat2'),re.compile('ca{2,}t').search('1caat2'),re.compile('^ca{2,}t').search('caaat27'))
    # [abc]只匹配枚举的字符(范围写法:[1-9],[a-z])
    print('13------',re.compile('c[abc]t').search('1cbt2'),re.compile('c[abc]t').search('cdt'),re.compile('c[1-9]t').search('c6t'))
    # | 左边整体或右边整体
    print('14------',re.compile('c[abc]|5t').search('1cbjj2'),re.compile('c[abc]|5t').search('1c995t2y'),re.compile('c[abc]|5t').search('1cht2'))
    # \s 任意单空白符,等价于 [\t\n\r\f\v],\S 任意非空白符
    print('15------',re.compile('c\st').search('1c th'),re.compile('c\s+t').search('1c   tu'),re.compile('c\st').search('1ctu'))
    # \d 数字单字符,同[123456789]=[1-9]=\d
    print('16------',re.compile('c\dt').search('1c5th'),re.compile('c\dt').search('1c57th'),re.compile('c\d{3,}t').search('1c5778th'))
    # \D 非数字单字符
    print('17------',re.compile('c\Dt').search('1c5th'),re.compile(r'c\Dt').search('1c-th'))
    # ()用于分组,\数字 分组引用
    print('18------',re.compile(r'(cat)\1').search('catcat'))
    # | 左边整体或右边整体
    print('19------',re.compile(r'c(123|456)t').search('c123t'),re.compile(r'c(123|456)t').search('c456t'),re.compile(r'c(123|456)t').search('c123456t'))
    # .*? 不使用贪婪模式 (无问号则会贪婪匹配)
    print('20------',re.compile(r'cat.*?').search('cat123'),re.compile(r'cat.*').search('cat123'),re.compile(r'cat.*?').search('cat'))
    # 小玩法,年月日1
    print('21------',re.compile(r'\d{4}-\d{2}-\d{2}').search('2021-08-01'))
    # 小玩法,年月日2
    print('22------',re.compile(r'\d+-\d+-\d+').search('2021-08-01'))
    # 分组后取出
    print('23------',re.compile(r'(\d+)-(\d+)-(\d+)').search('2021-08-01').group(1))
    print('24------',re.compile(r'(\d+)-(\d+)-(\d+)').search('2021-08-01').group(2))
    print('25------',re.compile(r'(\d+)-(\d+)-(\d+)').search('2021-08-01').group(3))
    print('26------',re.compile(r'(\d+)-(\d+)-(\d+)').search('2021-08-01---2021-08-02').groups())
    # sub正则替换
    print('27------',re.compile(r'#.*?').sub('','cat#123gdfg!@#'),re.compile(r'#.*$').sub('','cat#123gdfg!@#'))
    # replace普通替换
    print('28------','cat#123'.replace('#123',''))
    # \w	匹配单个字母数字及下划线
    print('29------',re.compile(r'(cat\w)\1').search('cat_cat_'),re.compile(r'(cat\w)\1').search('cat_cat%'))
    # \W	匹配单个非字母数字及下划线
    print('30------',re.compile(r'(cat\W)\1').search('cat@cat@'),re.compile(r'(cat\W)\1').search('cat@cat%'),re.compile(r'(cat\W)\1').search('cat%cat%'))
    # findall匹配多个
    print('31------',re.compile(r'(cat\W)\1').findall('cat@cat@cat@cat@cat@cat@cat@'))
    print('32------',re.compile(r'(cat\w)\1').findall('cat1cat1cat2cat2cat3cat3'))
    

    在这里插入图片描述
    34、时间标准库time,datetime,数学标准库math,random,练习记录

    # coding=utf-8
    # encoding: utf-8
    """
    Author:刘源
    Createtime:2021/08/01 17:55:21
    Updatetime:2021/08/01 17:55:21
    Description:时间标准库time,datetime,数学标准库math,random
    """
    import time, threading, os, pathlib, multiprocessing, sys, codecs, re, functools, sys, pytest,random,queue,datetime
    # 上下文管理器,自动关闭文件,自动处理文件冲突
    with open('tt18.txt', 'a') as f:
        f.write(f'{__file__}运行记录:')
        f.write(time.ctime())
        f.write('---' + str(time.time()) + '\n')
        print(sys.path)
    print('1------',time.time())
    print('2------',time.ctime())
    print('3------',time.localtime())
    print('4------',time.strftime('%Y/%m/%d %H:%M:%S'))
    print('5------',datetime.datetime.now())
    # 'delta-希腊字母,数学物理学中表示变量、增量'
    print('6------',datetime.datetime.now()+datetime.timedelta(days=365))
    print('7------',datetime.datetime(2021,8,1,18,27,20)+datetime.timedelta(days=365))
    print('8------',random.randint(-9,9),random.randint(-9,9),random.randint(-9,9))
    print('9------',random.random(),random.random(),random.random(),random.random())
    print('10------',random.choice(list(i for i in range(8))))
    print('11------',random.choice('abc123ABC'),random.choice('abc123ABC'),random.choice('abc123ABC'),random.choice('abc123ABC'))
    print('12------',random.choice(['a','1','@']),random.choice(('a','1','@')))
    

    35、os.path,pathlib.Path练习记录

    # coding=utf-8
    # encoding: utf-8
    """
    Author:刘源
    Createtime:2021/08/01 18:56:36
    Updatetime:2021/08/01 18:56:36
    Description: os.path,pathlib.Path
    """
    import time, threading,os, multiprocessing, sys, codecs, re, functools, sys, pytest,random,queue,datetime,pathlib
    # 上下文管理器,自动关闭文件,自动处理文件冲突
    with open('tt19.txt', 'a') as f:
        f.write(f'{__file__}运行记录:')
        f.write(time.ctime())
        f.write('---' + str(time.time()) + '\n')
        print(sys.path)
    # os
    print('1------',os.path.abspath(''))
    print('2------',os.path.abspath('.'))
    print('3------',os.path.abspath('..'))
    print('4------',os.path.abspath(__file__))
    print('5------',os.path.exists('tt19.py'))
    print('6------',os.path.exists('./tt19.py'))
    print('7------',os.path.exists('../tt19.py'))
    print('8------',os.path.isfile('./tt19.py'))
    print('9------',os.path.isdir('./tt19.py'))
    print('10------',os.path.isfile('./tttttt.py'))
    print('11------',os.path.isdir('./threeState'))
    print('12------',os.path.dirname(__file__))
    print('13------',os.path.basename(__file__))
    print('14------',os.path.split(__file__))
    print('15------',os.path.join(os.path.dirname(__file__),'不存在的.txt'))
    print('16------',os.getcwd())
    # pathlib
    print('17------',pathlib.Path(),pathlib.Path().resolve())
    print('18------',pathlib.Path('.').resolve(),pathlib.Path().is_dir(),pathlib.Path().is_file())
    print('19------',pathlib.Path('threeState').is_dir(),pathlib.Path('threeState').is_file())
    if not pathlib.Path('./pathlib/tt1.txt').exists():
        pathlib.Path('./pathlib/tt1.txt').mkdir(parents=True)
    print('20------',pathlib.Path('./pathlib/tt1.txt').is_file(),pathlib.Path('./pathlib/tt1.txt').is_dir())
    

    36、pip安装

    # 安装pip
    python -m ensurepip
    # 更新pip
    python -m pip install --upgrade pip 
    

    37、根据起点、终点、间隔值,生成一个由重多子列表作为元素的大列表对象

    def listOut(start, end, sep):
        """
        根据起点、终点、间隔值,生成一个由重多子列表作为元素的大列表对象
        :param start: int,起点
        :param end:  int,终点,必须大于等于起点
        :param sep: int,必须大于0
        :return:
        """
        a = []
        for i in range(start, end + 1, sep):
            a.append(list(k for k in range(i, i + sep) if k < end + 1))
        print(a)
    
    listOut(-2, 20, 5)
    listOut(-25, 32, 10)
    listOut(1, 1, 1)
    listOut(1, 7, 1)
    listOut(1, 4, 3)
    

    效果:
    在这里插入图片描述
    38、多维数组的排序
    在这里插入图片描述
    39、列表方法操练
    在这里插入图片描述
    40、字符串方法操练
    在这里插入图片描述
    41、字典方法操练
    在这里插入图片描述
    42、简单的os操作
    在这里插入图片描述
    43、python中的队列初探
    在这里插入图片描述

    展开全文
  • 本文共分享七个案例;分别是: 完整源码私信小编01获取。 1,抓取知乎图片,只用30行代码: 学习资料也可以加下Python扣扣裙:3零4零5零799自己下载学习下 2、没事闲的时候,听两个聊天机器人互相聊天: ...

    本文共分享七个案例;分别是:

    完整源码私信小编01获取。

    1,抓取知乎图片,只用30行代码:

    学习资料也可以加下Python扣扣裙:3零4零5零799自己下载学习下

    2、没事闲的时候,听两个聊天机器人互相聊天:

    from time import sleep

    import requests

    s = input("请主人输入话题:")

    while True:

    resp = requests.post("http://www.tuling123.com/openapi/api",data={"key": "4fede3c4384846b9a7d0456a5e1e2943","info": s, })

    resp = resp.json()

    sleep(1)

    print('小鱼:', resp['text'])

    s = resp['text']

    resp = requests.get("http://api.qingyunke.com/api.php",{'key': 'free', 'appid': 0, 'msg': s})

    resp.encoding = 'utf8'

    resp = resp.json()

    sleep(1)

    print('菲菲:', resp['content'])

    网上还有一个据说智商比较高的小i机器人,用爬虫的功能来实现一下:

    3、分析唐诗的作者是李白还是杜甫:

    4、彩票随机生成35选7:

    5、自动写检讨书:

    以下是样稿:

    6、屏幕录相机,抓屏软件:

    7、制作Gif动图:

    人生苦短,我选python;这句话说的属实没错。

    展开全文
  • 1,抓取知乎图片,只用30行代码: 2、没事闲的时候,听两个聊天机器人互相聊天: from time import sleep import requests s = input("请主人输入话题...人生苦短,我选python;这句话说的属实没错
  • python100例详解-python案例讲解

    千次阅读 2020-10-29 14:41:35
    因此处理数据是核心环节: 下面是python3.7版本下数据处理程序,数据文件以”|”分割,处理数据时程序指明了分隔符。 这里的x=np.loadtxt(dataset...○数据分析报告可以研习案例写作,数据挖掘结果分析根据研习的...
  • python数据分析参考案例,在线选房系统代码和数据,网络收集
  • Python编程案例教程

    2019-06-02 18:32:43
    Python编程案例教程文字版
  • python项目各个案例,并且有非常详细的说明以及步骤,适合于新手以及编程经验不高的人。容易入门,容易看懂。
  • python编程案例教程课后答案-Python编程练习题学习汇总 数字计算;关于数轴和长整型数据类型的练习;平方数的操作练习;日期计算,编程练习
  • 金融实战,python,金融科技,数值分析等等均有涉及
  • 卷积神经网络是深度学习技术中极具代表的网络结构之一,在图像处理领域取得了很大的成功。本课程将会讲解:CNN、卷基层、卷积计算、池化层、池化、全连接等概念。重点讲解如何进行卷积...后python图片文本识别的案例
  • Python程序开发案例教程
  • Python项目开发案例集锦.rar
  • python简单实例-python简单案例

    千次阅读 2020-10-30 23:14:40
    一个简单的python资讯采集案例,列表页到详情页,到数据保存,保存为txt文档,网站网页结构算是比较规整,简单清晰明了,资讯新闻内容的采集和保存!? 应用到的库requests,time,re,useragent,etreeimport ...
  • Python基础案例教程

    千次阅读 2020-12-09 07:34:06
    ¥49.00定价:¥49.00/2020-09-01《Python程序设计基础与案例教程》基础部分从0开始,由浅入深,涵盖了Python程序设计的所有基础知识,既适合0基础的学生学习,也适合有一定编程基础的学生学习。第15章的基础综合...
  • Python案例之视频人脸检测识别

    千次阅读 2022-04-26 15:52:43
    案例展示 这里我们还是使用 opencv 中自带了 haar人脸特征分类器,通过读取一段视频来识别其中的人脸。 代码实现: Python学习交流Q群:906715085### # -*- coding: utf-8 -*- __author__ = "小柒" __blog__ = ...
  • Python案例篇:爬取分析大型招聘网站Python岗

    千次阅读 多人点赞 2022-04-06 20:51:09
    从海量的招聘网站去找的话这个时间会浪费太多,那么我们的技术优势这时候就应该很好的去体现出来,今天我讲的这个案例呢就是启发于我学弟,希望你们也能学以致用~

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 261,300
精华内容 104,520
关键字:

python案例