python从入门到精通----------多个函数的嵌套和函数的多个返回值----------

1.函数的多个返回值(random.choice() )

我们知道range可以返回函数的值,但是range也会中断函数

但我们如果要返回多个函数的化改怎么办了???其实我们可以使用random.choice()

假如餐厅搞活动,消费5元以下随机赠送一碟小菜,消费5-10元随机赠送一碟餐前小菜和一个咸鸭蛋。

让你使用代码将它的方式打印下来的化要怎么办了?其实可以这样

import random
app=['拍黄瓜','小葱拌豆腐','凉菜']
def song(money):
    if money<5:
        a=random.choice(app)
        return a
    elif 5<=money<10:
        c=random.choice(app)
        return c,'咸鸭蛋'
print(song(3))
print(song(9))

然后它就会返回这样的数据

小葱拌豆腐
('小葱拌豆腐', '咸鸭蛋')

2.多个函数的配合使用:

我们先运行一下,?的代码

rent = 3000
def cost():
    utilities = int(input('请输入本月的水电费用'))
    food_cost = int(input('请输入本月的食材费用'))
    variable_cost = utilities + food_cost
    print('本月的变动成本是' + str(variable_cost))

def sum_cost():
    sum = rent + variable_cost
    print('本月的总成本是' + str(sum))

cost()
sum_cost()

就会发现它报错了,因为sum_cost()函数内的变量variable_cost没有被定义 这就涉及一个变量作用域的问题:

程序中的变量并不是在哪个位置都可以被使用的, 使用权限决定于这个变量是在哪里赋值的。

关于这个概念,目前我们只需要掌握下面两点即可

1.一个在函数内部赋值的变量仅能在该函数内部使用(局部作用域)
2.在所有函数之外赋值的变量,可以在程序的任何位置使用(全局作用域),它们被称作【全局变量】

那我们该如何解决这个问题呢?

其实解决方法有2种

1.把局部变量都放在函数外,变成全局变量

注:x1表示房租 x2表示水电费 x3表示伙食费 x4表示可控制成本 x5为总成本

x1=3000
x2=int(input('请输入水电费'))
x3=int(input('请输入伙食费'))
x4=x2+x3
#也上都为全局变量
print('本月可控制成本是'+str(x4))
def chengben():
    money=x1+x4
    print('本月总成本为:'+str(money))
chengben()

2.使用global语句(会使某个局部变量变成全局变量)

x1=3000
def money1():
    global x4 #global 使x4成了全局变量
    x2=int(input('请输入水电费'))
    x3=int(input('请输入伙食费'))
    x4=x3+x2
    print('本月可变成本为'+str(x4))
def qian():
    zcb=x4+x1
    print('本月总成本为'+str(zcb))
    
money1()
qian()

 

这样我们就可以让多个函数配合这使用了。

3.函数的嵌套

其实我们也可以吧多个函数嵌套在另一个函数中

def div(num1, num2):
    growth = (num1 - num2) / num2
    percent = str(growth * 100) + '%'
    return percent

def warning():
    print('Error: 你确定上个月一毛钱都不赚不亏吗?')

def main():
    while True:
        num1 = float(input('请输入本月所获利润'))
        num2 = float(input('请输入上月所获利润'))
        if num2 == 0:
            warning()
        else:
            print('本月的利润增长率:' + div(num1,num2))
            break

main()

 

它的具体方法如下图所示:

 

 

 

 

 

 

 

 

 

 

 

 

 

 


版权声明:本文为blaxk原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。