Python 在问答频道中刷题积累到的小技巧(五)

简介: Python 在问答频道中刷题积累到的小技巧(五)

1. 所有字母(大小写)数字和下划线的列表或字串,不用记ASCII范围

list(map(chr,[*range(ord('A'),ord('Z')+1),*range(ord('a'),ord('z')+1),*range(ord('0'),ord('9')+1),ord('-')]))
''.join((map(chr,[*range(ord('A'),ord('Z')+1),*range(ord('a'),ord('z')+1),*range(ord('0'),ord('9')+1),ord('-')])))
# => 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-'



2. 口令密码是否有效:至少8位,大写字母、小写字母、数字每类至少一个

def validPin(str):
    import re
    return None!=re.match(r"^(?:(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9]))\S{8,}$",str)
# 或者:
from string import ascii_lowercase as L,ascii_uppercase as U,digits as D
ValidPin = lambda s:all([len(s)>=8,any([i in L for i in s]),any([i in U for i in s]),any([i in D for i in s])])



3. 口令密码等级:多一类字符就高一级,长度不够判定无效

def level(pin):
    import string
    dic = {0:"无效",1:"弱",2:"中低",3:"中高",4:"强"}
    lib = {1:string.ascii_lowercase,2:string.ascii_uppercase,3:string.digits,4:',.!;?<>'}
    pinlevel = 0
    for v in lib.values():
        for p in pin:
            if p in v:
                pinlevel += 1
                break
    return dic[pinlevel * len(pin)>=8] + '密码'
print(level(input()))



4. 判断二月份天数,直接用28+闰年判别式

def MaxDayMonth(year, month):
    days = 31,28+(year%4==0 and year%100!=0 or year%400==0),31,30,31,30,31,31,30,31,30,31
    return 0 if (month<1 or month>12) else days[month-1]
def DayofYear(year, month, day):
    days = 31,28+(year%4==0 and year%100!=0 or year%400==0),31,30,31,30,31,31,30,31,30,31
    return sum(days[:month-1]) + day


5. 继承父类属性的三种写法

class Animal:
    def __init__(self, name):
        self.name = name
class Cat(Animal):
    def __init__(self, name, age):
        super().__init__(name)             #第一种
        #super(Cat,self).__init__(name)    #第二种
        #Animal.__init__(self,name)        #第三种
        self.age = age
    def cry (self):
        print("喵~~~我是{},我{}岁了".format(self.name,self.age))
class Dog(Animal):
    def __init__(self, name, color):
        super().__init__(name)
        #super(Dog,self).__init__(name)
        #Animal.__init__(self, name)
        self.color = color
    def bark(self):
        print("汪~~~我是{},我穿着{}的外套".format(self.name,self.color))
cat = Cat('小花', 3)
cat.cry()
dog = Dog('小黄', '红色')
dog.bark()




附录 string库常用字串和内置方法


import string

string.ascii_letters
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
string.ascii_lowercase
'abcdefghijklmnopqrstuvwxyz'
string.ascii_uppercase
'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
string.digits
'0123456789'
string.hexdigits
'0123456789abcdefABCDEF'
string.hexdigits
'0123456789abcdefABCDEF'
string.octdigits
'01234567'
string.printable
'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~ \t\n\r\x0b\x0c'
string.punctuation
'!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'
string.whitespace
' \t\n\r\x0b\x0c'
s = 'abcdaefgahijkalmn'
string.capwords(s,'a')
'aBcdaEfgaHijkaLmn'
s = 'hello,$a world$b'
t = string.Template(s)
t.substitute({'a':'间隔','b':'!!!'})
'hello,间隔 world!!!'
formatter = string.Formatter()
formatter.format('第{}页/共{}页', *{3,23})
'第3页/共23页'



目录
相关文章
|
存储 索引 Python
Python小技巧:单下划线 '_' 原创
Python小技巧:单下划线 '_' 原创
298 3
|
搜索推荐 索引 Python
【Leetcode刷题Python】牛客. 数组中未出现的最小正整数
本文介绍了牛客网题目"数组中未出现的最小正整数"的解法,提供了一种满足O(n)时间复杂度和O(1)空间复杂度要求的原地排序算法,并给出了Python实现代码。
457 2
|
自然语言处理 Python
使用Python和Qwen模型实现一个简单的智能问答Agent
使用Python和Qwen模型实现一个简单的智能问答Agent
1671 4
|
开发者 索引 Python
7个提升python编程的小技巧
7个提升python编程的小技巧
232 1
7个提升python编程的小技巧
|
搜索推荐 Python
Leecode 101刷题笔记之第五章:和你一起你轻松刷题(Python)
这篇文章是关于LeetCode第101章的刷题笔记,涵盖了多种排序算法的Python实现和两个中等难度的编程练习题的解法。
188 3
|
开发工具 git Python
Python小技巧:满意的逗号放置
Python小技巧:满意的逗号放置
132 4
|
算法 C++ Python
Leecode 101刷题笔记之第四章:和你一起你轻松刷题(Python)
这篇博客是关于LeetCode上使用Python语言解决二分查找问题的刷题笔记,涵盖了从基础到进阶难度的多个题目及其解法。
176 0
|
算法 C++ Python
Leecode 101刷题笔记之第三章:和你一起你轻松刷题(Python)
本文是关于LeetCode算法题的刷题笔记,主要介绍了使用双指针技术解决的一系列算法问题,包括Two Sum II、Merge Sorted Array、Linked List Cycle II等,并提供了详细的题解和Python代码实现。
261 0
|
算法 C++ 索引
Leecode 101刷题笔记之第二章:和你一起你轻松刷题(Python)
本文是关于LeetCode 101刷题笔记的第二章,主要介绍了使用Python解决贪心算法题目的方法和实例。
164 0
|
算法 Python
【Leetcode刷题Python】 LeetCode 2038. 如果相邻两个颜色均相同则删除当前颜色
本文介绍了LeetCode 2038题的解法,题目要求在一个由'A'和'B'组成的字符串中,按照特定规则轮流删除颜色片段,判断Alice是否能够获胜,并提供了Python的实现代码。
176 3

推荐镜像

更多