博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

二、Python开发---12、函数练习

Posted on 2019-10-07 21:48  兰智杰  阅读(622)  评论(0编辑  收藏  举报

1、函数,计算传入字符串的个数

def getLen(s):
    if isinstance(s,str):   #判断数据类型的内置函数 args1: 数据 args2:数据类型
        return  len(s)
    else:
        return '类型错误'
num = getLen('sdfdsf sdf')
print(num)                  #输出为10

2、函数,判断用户传入的字符串、列表、元组长度是否大于5

def getLen2(args):
    if isinstance(args,(str,list,tuple)):
        if len(args) > 5:
            print('传入的对象长度大于5')
        else:
            print('传入的对象长度小于5')
    else:
        print('类型有误')
getLen2(['a','b',1,2])          #输出为传入的对象长度小于5

3、写入不定个数的字符串拼接第一个和最后一个字符串

def getStr(*args):
    print(type(args))                #输出为<class 'tuple'>    元组类型
    return args[0]+args[-1]
print(getStr('1','2','3'))          #输出为13

4、传入多个参数,以list返回

def getList(*args):
    #li=[i for i in args]   #列表推导式
    li = []
    for i in args:
        li.append(i)
    return li
list01 = getList(1,2,3,4,5)
print(list01)               #输出为[1, 2, 3, 4, 5]

5、定义一个函数,输入不定个数的数字,返回所有数字的和

def getSum(*args):
    x = 0
    for i in args:
        x+=i
    return x
num = getSum(1,2,3,4,5)
print(num)                  #输出为15

6、实现阶乘的运算

def jiecen(n):
    if n == 1:
        return 1
    else:
        return n*jiecen(n-1)
print(jiecen(5))                #输出为120

7、ATM机——假设设一个简单的ATM机的取款过程是这样的:首先提示用户输入密码(pakaword),最多只能输入3次,超过3次见提示用户“密码错误,请取卡”结束交易;如果用户密码正确,再提示用户输入金额(amount),ATM机只能输出100元的纸币,一次取钱数要求最低0元,最高1000元;如果用户输入的金额符合上述要求,则打印出用户取的钱数;最后提示用户“交易完成,请取卡”,否则提示用户重新输入金额;假设用户密码是“888888”

#1、登录验证
def login(passwd):
    pwd = '888888'
    if passwd == pwd:
        return True
    else:
        return False
#2、金额验证
def checkMoney(money):
    if money.isdigit():
        if int(money) % 100 ==0 and 0<= int(money) <=1000:
            return True
        else:
            return False
    else:
        return False
#业务逻辑写到主程序当中
def main():
    over = 0            #取钱完成时用于退出循环
    #1.登录验证
    for i in range(3):
        if over == 1:
            break
        passwd = input('请输入密码:')
        if login(passwd):
            # 2.金额验证
            while True:
                money= input('请输入金额:')
                if checkMoney(money) :
                    print('成功取出%s元'%money)
                    over=1
                    break
                else:
                    print('输入的金额有误!请重新输入')
            # 3.交易完成
            print('交易完成')
        else:
            if i == 2:
                print('您连续三次密码有误,账号已冻结!')
                break
            print('密码有误')
main()