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

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

2020-01-02 | |  83 |   0

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

原文来自:CSDN      原文链接:https://blog.csdn.net/Web_Student/article/details/103793790



变量的作用域

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

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

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

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

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

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

  • 对于可变类型的全局变量来说,要在函数中修改可以不使用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

免责声明:本文来自互联网新闻客户端自媒体,不代表本网的观点和立场。

合作及投稿邮箱:E-mail:editor@tusaishared.com

上一篇:python自学篇九[ 函数(二):返回值return+yield+迭代器+生成器]

下一篇:Python股票数据处理的一些代码细节

用户评价
全部评价

热门资源

  • Python 爬虫(二)...

    所谓爬虫就是模拟客户端发送网络请求,获取网络响...

  • TensorFlow从1到2...

    原文第四篇中,我们介绍了官方的入门案例MNIST,功...

  • TensorFlow从1到2...

    “回归”这个词,既是Regression算法的名称,也代表...

  • 机器学习中的熵、...

    熵 (entropy) 这一词最初来源于热力学。1948年,克...

  • TensorFlow2.0(10...

    前面的博客中我们说过,在加载数据和预处理数据时...