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

x33g5p2x  于2022-06-20 转载在 Python  
字(2.9k)|赞(0)|评价(0)|浏览(470)

  1. 所有字母(大小写)数字和下划线的列表或字串,不用记ASCII范围
  1. list(map(chr,[*range(ord('A'),ord('Z')+1),*range(ord('a'),ord('z')+1),*range(ord('0'),ord('9')+1),ord('-')]))
  2. ''.join((map(chr,[*range(ord('A'),ord('Z')+1),*range(ord('a'),ord('z')+1),*range(ord('0'),ord('9')+1),ord('-')])))
  3. # => 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-'
  1. 口令密码是否有效:至少8位,大写字母、小写字母、数字每类至少一个
  1. def validPin(str):
  2. import re
  3. return None!=re.match(r"^(?:(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9]))\S{8,}$",str)
  4. # 或者:
  5. from string import ascii_lowercase as L,ascii_uppercase as U,digits as D
  6. 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])])
  1. 口令密码等级:多一类字符就高一级,长度不够判定无效
  1. def level(pin):
  2. import string
  3. dic = {0:"无效",1:"弱",2:"中低",3:"中高",4:"强"}
  4. lib = {1:string.ascii_lowercase,2:string.ascii_uppercase,3:string.digits,4:',.!;?<>'}
  5. pinlevel = 0
  6. for v in lib.values():
  7. for p in pin:
  8. if p in v:
  9. pinlevel += 1
  10. break
  11. return dic[pinlevel * len(pin)>=8] + '密码'
  12. print(level(input()))
  1. 判断二月份天数,直接用28+闰年判别式
  1. def MaxDayMonth(year, month):
  2. days = 31,28+(year%4==0 and year%100!=0 or year%400==0),31,30,31,30,31,31,30,31,30,31
  3. return 0 if (month<1 or month>12) else days[month-1]
  4. def DayofYear(year, month, day):
  5. days = 31,28+(year%4==0 and year%100!=0 or year%400==0),31,30,31,30,31,31,30,31,30,31
  6. return sum(days[:month-1]) + day
  1. 继承父类属性的三种写法
  1. class Animal:
  2. def __init__(self, name):
  3. self.name = name
  4. class Cat(Animal):
  5. def __init__(self, name, age):
  6. super().__init__(name) #第一种
  7. #super(Cat,self).__init__(name) #第二种
  8. #Animal.__init__(self,name) #第三种
  9. self.age = age
  10. def cry (self):
  11. print("喵~~~我是{},我{}岁了".format(self.name,self.age))
  12. class Dog(Animal):
  13. def __init__(self, name, color):
  14. super().__init__(name)
  15. #super(Dog,self).__init__(name)
  16. #Animal.__init__(self, name)
  17. self.color = color
  18. def bark(self):
  19. print("汪~~~我是{},我穿着{}的外套".format(self.name,self.color))
  20. cat = Cat('小花', 3)
  21. cat.cry()
  22. dog = Dog('小黄', '红色')
  23. 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 在问答频道中刷题积累到的小技巧(一)_Hann Yang的博客-CSDN博客

Python 在问答频道中刷题积累到的小技巧(二)
Python 在问答频道中刷题积累到的小技巧(二)_Hann Yang的博客-CSDN博客

Python 在问答频道中刷题积累到的小技巧(三)
Python 在问答频道中刷题积累到的小技巧(三)_Hann Yang的博客-CSDN博客

Python 在问答频道中刷题积累到的小技巧(四)
写代码也有本手俗手之分,而我们要善于发现妙手!_Hann Yang的博客-CSDN博客

相关文章