python自学篇九[ 函数(三):变量作用域+ATM+5个小练习]

python基础系列:
python自学篇一[ Anaconda3安装 ]
python自学篇二[ pycharm安装及使用 ]
python自学篇三[ 判断语句if的使用 ]
python自学篇四[ 基本数据类型和字符串常用处理 ]
python自学篇五[ 列表 ]
python自学篇六[ 元组 ]
python自学篇七[ 字典+深拷贝与浅拷贝 ]描述
python自学篇八[ 循环:while+for+pass+range()+推导式 ]
python自学篇九[ 函数(一):参数+对象 ]
python自学篇九[ 函数(二):返回值return+yield+迭代器+生成器 ]
python自学篇九[ 函数(三):变量作用域+ATM+5个小练习 ]
python自学篇九[ 函数(四):递归函数+匿名函数+内置函数+高阶函数 ]
python自学篇十[ 面向对象 (一) :面向对象概念+定义类+练习一]
python自学篇十[ 面向对象 (二) :继承+多继承+类属性+实例属性]
python自学篇十[ 面向对象 (三) :访问限制+类方法+静态方法]
python自学篇十[ 面向对象 (四) :王者荣耀小游戏+模拟一个简单的银行进行业务办理的类]
python自学篇十一[ 模块简介+模块制作+dir()函数+标准模块+包]
python自学篇十二[ 文件:打开+读取+写入+3个习题]

变量的作用域

  • 个程序的所有的变量并不是在哪个位置都可以访问的。访问权限决定于这个变量是在哪里赋值的。

  • 定义在函数内部的变量拥有一个局部作用域,定义在函数外的拥有全局作用域

  • 变量的作用域决定了在哪一部分程序你可以访问哪个特定的变量名称。两种最基本的变量作用域如下:

局部变量:声明在函数内部的变量是局部变量,局部变量的作用于只在于函数中,外部无法使用

  • 不同的函数,可以定义相同的名字的局部变量,但是各用个的不会产生影响

全局变量:声明在函数外部的变量,定义在函数外的拥有全局作用域

  • 对于可变类型的全局变量来说,要在函数中修改可以不使用global声明
  • 对于不可变类型的全局变量来说,要在函数中修改需要global声明
  • 函数内部修改全局变量需要使用grobal关键字声明
global 变量名

函数习题

ATM取款机

  • 第一个方法(世界复杂的比第二个大):
'''
    ATM取款机
'''
    #1.登录验证
def login(password):
    pwd='88888888'#初始密码88888888
    if password==pwd:
        return True
    else:
        return False

    #金额验证
def checkmoney(money):
    if money.isdigit():
        if int(money)%100==0 and 0<= int(money) <=1000:
            return money
        else:
            return False
    else:
        return False

    #交易完成
def main():
    for i in range(3):
        password=input('请输入用户密码:')
        if login(password):
            money=input('请输入金额:')
            if checkmoney(money):
                print('交易成功,取出:%s元'%money)
            else:
                print('金额输入错误!')
            break
        else:
            print('密码输入错误')
main()
  • 第二个方法(时间复杂度小):
#登录验证
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 money
        else:
            return False
    else:
        return False

#业务逻辑写到主程序当中
def main():
    #1.登录验证
    for i in range(3):
        passwd = input('请输入密码:')
        if passwd == 'n':
            break
        if login(passwd):
            # 2.金额验证
            while True:
                money= input('请输入金额:')
                money = checkMoney(money)
                if money :
                    print('成功取出%s元'%money)
                    break
                else:
                    print('输入的金额有误!请重新输入')
            # 3.交易完成
            print('交易完成')
        else:
            if i == 2:
                print('您连续三次密码有误,账号已冻结!')
                break
            print('密码有误')

main()
  • 1.计算传入字符串的个数
def getLen(s):
    if isinstance(s,str): #args1: 数据 args2:数据类型
        return  len(s)
    else:
        return '类型错误'
print('请输入一个字符串:')
num = getLen(input())
print(num)
  • 结果
请输入一个字符串:
jhgydjlkjkkjhgiehsgpgvoihsg
27
  • 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):
    return args[0]+args[-1]

print(getStr('fafafaf','2','lkjkjhkjh'))

结果:

fafafaflkjkjhkjh
  • 4.传入多个参数,以list返回
def getList(*args):#*args用于接收多个参数
    li = []#初始化一个列表
    for i in args:#遍历args
        li.append(i)#把每一个args中的参数加入到列表中
    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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章