Python---函数

函数

# 如何定义一个函数
def hello():
    print('hello')
    print('python')

# 通过函数名来调用函数
hello()

# 函数里面嵌套函数
def westos():
    print('is westos')
    def python():
        print('is python')
    python()
westos()

# 定义函数的时候的变量,叫形参(形参可以任意起名)
def welcome(a):
    print('hello',a)

# 真实的数据信息,调用函数的时候传递的参数叫实参
welcome('tom')
welcome('lily')

参数

“”"
参数:形参 实参
形参:位置参数 默认参数 可变参数 关键字参数
“”"

# # 位置参数:形参和实参必须保持一致
# def getInfo(name,age):# 按照位置传参数
#     print(name,age)
# getInfo('westos',11)
# # getInfo(11,'westos')不对
# getInfo(age=11,name='westos')


# # 默认参数
# def mypow(x,y=2):
#     print(x**y)
# mypow(2,3)
# mypow(4)

# 可变参数
#
# def mysum(*a):
#     print(*a)不对
#     print(a)
#     sum = 0
#     for item in a:
#         sum += item
#     print(sum)
#
# nums = [1,2,4,5]
# nums1 = (1,2,3,4)
# nums2 = {1,2,3,4}
# # 参数解包 在参数名前加*
# mysum(*nums)
# mysum(*nums1)
# mysum(*nums2)

在这里插入图片描述

# #关键字参数
# # *k:是一个字典,可以传递任意多的key-value
def getStuInfo(name,age,**k):
    print(name)
    print(age)
    print(k)
# d = dict(a=1,b=2)
# # 如果要对字典进行解包,一个星号,获取所有的key值
# print(*d)
getStuInfo('westos',11,a=1,b=2)

函数的返回值

“”"
返回值:函数运算的结果,还需要进一步操作,给函数一个返回值
return用来返回函数执行的结果,如果函数没有返回值,默认返回None
一旦遇到return 函数执行结束,后面的代码不会执行
多个返回值的时候,python会帮我们封装成一个元组类型
“”"

def mypow(x,y=2):
    #print(x**y)
    return x**y,x+y
    print('!!!!!')
a = mypow(4)
print(a)
print(mypow(5))

变量作用域

“”"

局部变量:在函数内部定义的变量,只在函数内部起作用,函数
执行结束后,变量会自动删除
“”"

a = 1
print('outside:',id(a))

def fun():
    global a #声明a为全局变量
    a = 5
    print('inside:',id(a))
fun()
print(a)
print(id(a))

测试

“”"
** 案例1:
编写一个函数cacluate, 可以接收任意多个数,返回的是一个元组.
元组的第一个值为所有参数的平均值, 第二个值是大于平均值的所有数.
**案例2:
编写一个函数, 接收字符串参数, 返回一个元组,‘ehllo WROLD’
元组的第一个值为大写字母的个数, 第二个值为小写字母个数.

**案例3:
编写函数, 接收一个列表(包含30个整形数)和一个整形数k, 返回一个新列表.
函数需求:
- 将列表下标k之前对应(不包含k)的元素逆序;
- 将下标k及之后的元素逆序;
[1,2,3,4,5] 2 [2,1,5,4,3]

“”"

import random
# list = []
# for i in range(30):
#     num = random.randint(1,100)
#     list.append(num)
# print(list)

def fun(alist,k):
    if k<0 or k > len(alist):
        return 'error key'
    return alist[:k][::-1] + alist[k:][::-1]
print(fun([1,2,3,4,5],2))

“”"
编写一个名为collatz()的函数,它有一个名为number的参数。
如果参数是偶数,那么collatz()就打印出number//2,并返回
该值。如果number是奇数,collatz()就打印并返回3*number+1。
然后编写一个程序,让用户输入一个整数,并不断对这个数
调用collatz(),直到函数返回值1(令人惊奇的是,这个序列
对于任何整数都有效,利用这个序列,你迟早会得到1!既使数学
家也不能确定为什么。你的程序在研究所谓的“Collatz序列”,
它有时候被称为“最简单的、不可能的数学问题”)。

  • 输入:
    3
  • 输出:
    10
    5
    16
    8
    4
    2
    1

“”"

def collatz(number):
    if number == 1:
        exit()
    elif number % 2 == 0:
        return number // 2
    else:
        return 3 * number + 1

num = int(input('Num:'))
while True:
    num = collatz(num)
    print(num)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值