Python练习之函数,装饰器,面向对象

本文介绍了Python编程中的函数、装饰器和面向对象的应用。首先展示了四种不同的方法统计字符串中大小写字母、数字和其他特定字符的数量。接着,通过装饰器实现了一个简单的登录验证功能,用于装饰其他函数。最后,定义了一个烤红薯类,包含了属性和方法,模拟了红薯的烧烤过程,根据输入的时间判断其生熟程度。通过这个例子,读者可以深入理解Python的基础和高级概念。
摘要由CSDN通过智能技术生成

Python练习之函数,装饰器,面向对象

1.函数

编写函数,实现接受一个字符串,分别统计大小写字母,数字,其他字符的个数,并返回结果

#方法一
str=input('请输入:')
l,s,n,t=0,0,0,0
for i in str:
    if i.islower():
        l+=1
    elif i.isupper():
        s+=1
    elif i.isnumeric():
        n+=1
    elif i in ['@','#','$','%']:
        t+=1
print(f'此字符串中大写字母数{s},小写字母数为{l},数字个数为{n},其他字符个数为{t}')

#方法二
import re
str=input('请输入:')
print(f"此字符串中小写个数为{len(re.findall('[a-z]',str))},大写个数为{len(re.findall('[A-Z]',str))},数字个数为{len(re.findall('[0-9]',str))},"
      f"其他字符个数为{len(re.findall('[@#¥$%&*]',str))}")
      
#方法三
from functools import reduce
def fn(cont,chick):
    cont[0]+=chick.islower()
    cont[1]+=chick.isupper()
    cont[2]+=chick.isnumeric()
    if chick in ['@','#','$']:
        cont[3]+=1
    return cont
str=input('请输入:')
li=reduce(fn,str,[0,0,0,0])
print(f'此字符串中大写字母数{li[1]},小写字母数为{li[0]},数字个数为{li[2]},其他字符个数为{li[3]}')

#方法四
str=input('请输入:')
l,s,n,t=0,0,0,0
for i in str:
    if 'a'<=i and i<='z':
        l+=1
    elif 'A'<=i and i<='Z':
        s+=1
    elif '0'<=i and i<='9':
        n+=1
    elif i in ['@','#','$']:
        t+=1
print(f'此字符串中大写字母数{s},小写字母数为{l},数字个数为{n},其他字符个数为{t}')

2 装饰器

装饰器 为函数加上认证的功能 增加一件物品前 先输入用户名密码验证

#装饰函数
def yz(fn):
    def inner():
        str=input('请输入用户名:')
        str1=input('请输入密码:')
        if str=='www' and str1=='123':
            print('登录成功!')
            fn()
        else:
            print('用户名或密码错误')
    return inner
@yz
#被装饰函数
def add():
    print('添加一条信息成功')
add()
# a=yz(add)
# a()

3.面向对象

烤红薯
1.属性
level 值为整型,表示生熟程度 5
mat 值为字符串,表示生熟信息 半熟
2.方法:
init:设置默认属性
cook:烤红薯方法
3.要求
1.烧烤时间:根据传入的值来决定
2.烧烤状态:[0,2]生的、[3,5]半熟、[6,8]熟了,8以上糊了
3.红薯信息:显示红薯状态和烧烤时间(跟level有关)

class Khs:#定义类
    def __init__(self):#定义属性
        self.level=0
        self.mature='生的'
    def cook(self,time=0):
        self.level+=time
        #判断生生熟
        if self.level>8:
            self.mature='烤糊了'
        elif self.level>=6:
            self.mature='熟了'
        elif self.level>=3:
            self.mature='半熟'
        elif self.level>=0:
            self.mature='生的'
        print('红薯程度:', self.level)
        print('红薯状态:', self.mature)
#实例化对象
k=Khs()
print('红薯程度:', k.level)
print('红薯状态:', k.mature)
print('开始烤红薯,,,')
k=Khs()
k.cook(5)
class A:
    def __init__(self,level=0,mat='生的'):
        self.level=level
        self.mat=mat
    def chus(fn):
        def inner(*args):
            print(f'''红薯信息:
                       红薯生熟程度 0
                       红薯状态: 生的
                       开始烧烤了。。。''')
            fn(*args)
        return inner
    @chus
    def cook(self):
        if self.level in [0, 1, 2]:
            self.mat = '生的'
        elif self.level in [3, 4, 5]:
            self.mat = '半熟'
        elif self.level in [6, 7, 8]:
            self.mat = '熟了'
        elif self.level > 8:
            self.mat = '糊了'
        print(f'''红薯信息:
                   红薯生熟程度{self.level} 
                   红薯状态: {self.mat}''')
str=int(input('请输入烧烤成程度:'))
a=A(str)
a.cook()



  • 我的生命与灵魂,是死水一样的寂静,直到有一人说,她在我的眼中看见了星空,或许她不知道,我眼中只有夜幕,而她是闪亮的所有。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值