• Python_函数调用_数学函数_组合


    在编程的语境下,“函数”这个词的意思是对一系列语句的组合,这些语句共同完成一种运算。

    定义函数的时候,你要给这个函数指定一个名字,另外还要写出进行运算的语句。定义完成后,就可以通过函数名来“调用”函数。

    一,函数调用

    一个函数调用的例子:

    >>> type(42)

    <class 'int'>

    这个函数的名字就是tpye,括号里面的表达式叫做函数的参数,这个函数的结果是返回参数的类型。

    一般来说,函数都要“传入”一个参数,“返回”一个结果。结果也被叫做返回值。Python提供了 一些转换数值类型的函数。

    比如

    (1)int这个函数就可以把值转换成整形,但不是什么都能转的, 遇到不能转换的就会报错了,如下所示:

    >>> int('42')

    42

    >>> int('Hello')

    Traceback (most recent call last):

      File "<stdin>", line 1, in <module>

    ValueError: invalid literal for int() with base 10: 'Hello'

    int这个函数能把浮点数转成整形,但不是很完美,小数部分就都给砍掉了。

    >>> int(3.1415927)

    3

    >>> int(-2.1314)

    -2

    (2)float能把整形和字符串转变成浮点数

    >>> float(32)

    32.0

    >>> float('3.1415927')

    3.1415927

    (3)str可以把参数转变成字符串

    >>> str(32)

    '32'

    >>> str(3.1415927)

    '3.1415927'

    二,数学函数

    Python内置了一个数学模块,这一模块提供了绝大部分常用的数学函数。模块就是一系列相关函数的集合成的文件。

    在使用模块中的函数之前,必须先要导入这个模块,使用导入语句import:

    >>> import math

    这个语句建立了一个模块对象,名字叫做math。把这个模块对象显示一下,得到与之相关的信息:

    >>> math

    <module 'math' from '/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.7/lib/python3.7/lib-dynload/math.cpython-37m-darwin.so'>

    模块对象包含了一些已经定义好的函数和变量。指定模块名和函数名,要用点.(英文输入法)来连接模块名和函数名,比如下方的math.pi

    例子:对弧度值计算正弦值。

    通过变量名你应该能推测出正弦以及其他的三角函数 (比如余弦、正切等等)都要用弧度值作为参数。所以要把角度的值从度转换成弧度,方法 就是除以180然后再乘以圆周率π

    >>> degrees = 45

    >>> radians = degrees / 180.0 * math.pi

    >>> math.sin(radians)     #计算正弦值

    0.7071067811865475

    math.pi这个表达式从数学模块中得到π的一个大概精确到15位的近似值,存成一个浮点数。

    也可以试着把2的平方根除以二,可以得到与上面一致的结果。

    >>> math.sqrt(2) / 2.0

    0.7071067811865476

    画一个三角形,45度角两直角边是单位1,斜边必然是2的平方根了,对应的正弦余弦也都是这个值(0.7071067811865476)。

    三,组合

    一门编程语言最有用的功能莫过于能够用一个个小模块来拼接创作。例如函数的参数可以是任何一种表达式,包括代数运算符:

    >>> x = math.sin(degrees / 360.0 * 2 * math.pi)

    再或者函数的调用本身也可以作为参数,如下的math.log()

    >>> x = math.exp(math.log(x+1))

    值得注意的是,一个声明语句的左边必须是变量名,任何其他的表达式放到等号左边都会导致语法错误。

    >>> hours = minutes * 60

    >>> minutes * 60 = hours

      File "<stdin>", line 1

    SyntaxError: can't assign to operator

    结束。

  • 相关阅读:
    Ural 1057. Amount of Degrees
    BZOJ 3517: 翻硬币
    BZOJ 4527: K-D-Sequence
    CTC联结时间分类算法(语音、文本识别)
    我小苏太狼又回来了.
    /*--------------分割线--------------*/
    /*--------------分割线--------------*/
    洛谷 P4149 [IOI2011]Race-树分治(点分治,不容斥版)+读入挂-树上求一条路径,权值和等于 K,且边的数量最小
    Codeforces 161.D. Distance in Tree-树分治(点分治,不容斥版)-树上距离为K的点对数量-蜜汁TLE (VK Cup 2012 Round 1)
    洛谷 P2634 [国家集训队]聪聪可可-树分治(点分治,容斥版) +读入挂+手动O2优化吸点氧才过。。。-树上路径为3的倍数的路径数量
  • 原文地址:https://www.cnblogs.com/liusingbon/p/13024403.html
Copyright © 2020-2023  润新知