跳至主要內容

13. function

Ryan原创...大约 6 分钟pythonpython编程教程

1. 函数的定义

计算机中的函数————代码片段

  • 一段具有特定功能的、可重复使用的代码
  • 用函数名来表示并通过函数名来完成功能调用

2. 使用函数的意义

  • 代码的重复利用
  • 减少程序中的代码重复量,使代码更加容易被理解;
  • 让代码更易于维护与更新

3. 函数的使用

  1. 内置函数:
  • Python 编程语言中已经被定好功能的函数
  • 可以直接调用来执行特定的任务
  1. 用户自定义函数
  • 函数功能和使用方法都由用户决定

3.1 使用一个函数

  • python 中有许多的内置函数,我们可以直接使用他们,

​ 如:

​ 输出函数 print()

​ 获取用户输入的函数 input()

​ 类型转换的函数 int() float() str()……

​ 除了内置函数外,Python还有内置的标准函数库

  • 当我们把这些额外函数库导入我们程序里时,我们可以用这些函数库提供的方法

​ 访问这些函数时需要以库名.函数名的方式来使用

import math
a = math.sqrt(2)
print(a)

import random 
a = random.randint(0, 10)
print(a)

3.1.1 random

import random

# 生成随机浮点数
# 返回一个随机浮点数,范围在 [0.0, 1.0]
print(random.random())

# 返回一个随机浮点数,范围在 [5.5, 25.5]
print(random.uniform(5.5, 25.5))

# 生成随机整肃
# 返回一个随机整数,范围在 [10, 20] 之间
print(random.randint(10, 20))

# 返回一个随机整数,范围在 [0, 100] 之间,步长为 5
print(random.randrange(0, 101, 5))



# 选择和洗牌
# 从列表中随机选择一个元素
my_list = [1,2,3,4,5]
print(random.choice(my_list))

# 从列表中根据权重随机选择三个元素
print(random.choices(my_list, weights=[10,1,1,1,1], k=3))

# 打乱列表
random.shuffle(my_list)
print(my_list)


# 生成特定分布的随机数
# 返回一个符合高斯分布(均值为 0,标准差为 1)的随机浮点数
print(random.gauss(0, 1))

import random
# 设置随机种子
random.seed(1) # 里面的数字可以写任何数

# 这将产生相同的随机数序列
print(random.random())
print(random.randint(1, 100))

3.1.2 math

import math

# 正弦值
angle_radius = math.pi / 2
print('sin(π/2) = ', math.sin(angle_radius))

# 余弦值
print('cos(0) = ', math.cos(0))

# 正切值
print('tan(π/4)=', math.tan(math.pi / 4))

# 反正弦值
print('asin(1) =', math.asin(1))

# 反余弦值
print('acos(0)=', math.acos(0))

# 反正切值
print('atan(1) =', math.atan(1))

# 自然数 e 的 x 次方
print('exp(1) =', math.exp(1))

# x 的自然对数
print('log(e) =', math.log(math.e))

# x 的以 10 为底的对数
print('log10(100) =' , math.log10(100))

# x 的 y 次幂
print('pow(2, 3) =', math.pow(2, 3))

# x 的平方根
print('sqrt(16)  =', math.sqrt(16))

# x 的绝对值
print('fabs(-10) =', math.fabs(-10))

# 向上取整
print('ceil(3.7) =', math.ceil(3.7))

# 向下取整
print('floor(3.7) =', math.floor(3.7))

# 截断取整
print('trunc(3.7) =', math.trunc(3.7))

# 输出自然数和 π
print(math.pi)
print(math.e)

3.2 定义一个函数

defdefine 的缩写,表示定义一个函数

格式:

def 函数名称():

​ 函数内的语句

当我们需要用这个函数时,直接写‘函数名称 + ()‘就即可

注意:函数名称中间不要有空格,可以用下划线代替

示例:

def HelloUser():
    print('Hello')

HelloUser()

# output
Hello
def HelloUser(username): # username 是参数
    print('Hello!' + username)

HelloUser('李雷') # 李雷也是参数

# output
Hello!李雷

传递参数

  • 位置参数
# 显示某次考试成绩
def TestGrade(name, grade):
    print(name + '的成绩是' + grade + '.')

TestGrade('李雷', '99') # 李雷的成绩是99.
  • 关键字参数
# 显示某次考试成绩
def TestGrade(name, grade):
    print(name + '的成绩是' + grade + '.') 

TestGrade(name = '李雷', grade = '99') # 李雷的成绩是99.
  • 返回值

def 函数名称(参数1, 参数2,……):

函数内的语句

……

​ return 返回内容

加粗部分是必须有的

代码示例:

def say_hi():
    print('Hi!')
    print('我是ryan')

say_hi()

# output
Hi!
我是ryan
def add(a, b):
    sum_number = a + b
    return sum_number

value = add(4, 12)
print(value)
  • 变量作用域

函数内的变量和外部同名时,函数会优先使用内部变量,若内部没有该变量则使用外部

a = 1

def hello():
    a = 2
    print(a)

hello()
print(a)

# output
2
1

    
    
    
    
a = 1

def hello():
    print(a)

hello()
print(a)

# output
1
1





a = 1

def hello():
    print(a) # 函数内的变量和外部同名时,函数会优先使用内部变量, 但是这里在后面
    a = 2

hello()
print(a)

# output
Traceback (most recent call last):
  File "C:\Users\Administrator\PycharmProjects\Coder\nonsense\code3.py", line 232, in <module>
    hello()
  File "C:\Users\Administrator\PycharmProjects\Coder\nonsense\code3.py", line 229, in hello
    print(a)
UnboundLocalError: local variable 'a' referenced before assignment

如何防止报错:

引入全局变量 global

a = 1
def hello():
    global a
    print(a)
    a = 2

print(a)
hello()
print(a)

# output
1
1
2

4. 练习

4.1文本倒转与过滤

编写一个函数 reverse_filter,它接收一个字符串和一组字符,返回将字符串中不包含这些字符的部分倒序后的结果。例如,如果输入字符串为 "hello world",字符集为 {'l', 'o'},则应该返回 "drw eh"。

code1
def reverse_filter(Str, Chr):

    List = list(Str)
    # 去除包含字符
    length = len(List)
    for i in range(length):
        if List[i] in Chr:
            List.pop(i)
            i -= 1

    return str(List)[::-1]

print(reverse_filter('hello world', {'l','o'}))

4.2 数字拆分与重组

创建一个函数 split_and_combine,它接收一个正整数,将其拆分成单个数字,然后根据提供的模式重新组合这些数字。模式可以是 'odd', 'even', 或 'mix'。例如,输入数字为 1234567,模式为 'odd',则应返回所有奇数位上的数字组合,即 1357。

code1

4.3 音节计数器

编写一个函数 syllable_count,用于计算一个英文句子中的音节总数。这里可以简化音节的计算规则:每个包含元音字母(a, e, i, o, u, y)的连续字母序列算作一个音节。例如,句子 "This is an example." 应该返回6个音节。


4.4 简易计算器

编写一个函数calculator,用于计算 num1 和 num2 之间通过 notation 之间的计算,其中 notation 可以是 ‘ + , - , * , / ’

def calculator(num1, num2, notation):
    if notation in ['+', '-', '*', '/']:
       return eval(str(num1) + notation + str(num2))
你认为这篇文章怎么样?
  • 0
  • 0
  • 0
  • 0
  • 0
  • 0
评论
  • 按正序
  • 按倒序
  • 按热度