一、前言

编程,犹如写剧本——创作一段台词和动作清单,让演员日复一日地照做。本节内容将接触Python函数,可以在交互式环境中反复调用函数,让它每次都执行预设的“脚本”(脚本也可指整个程序)。编程从学会编写函数开始,涵盖如下内容

  • 使用函数来计算公式

  • 获取字符串和数字输入

  • 设置输出格式

二、定义函数

(一)规则

  1. 使用关键字 def 来自定义函数
  2. 具体格式:函数名(参数名): (冒号必须输入)
  3. 回车,IDLE中将自动缩进后续代码行,继续使用 (对于python中的代码缩进,遵循一套标准,尽量不要随意修改!)
  4. 编写计算逻辑式
  5. 返回值,用return

(二)示例

  1. 温度计量有两种方式,一种是我们熟知的摄氏温度,另一种是华氏温度,两者间存在换算关系。1华氏度=1摄氏度*1.8+32

  2. 对于这样一个换算,给出摄氏温度,心算就能算出华氏温度。或者,给出华氏温度,倒算摄氏温度。但如果用程序来算,如何实现呢?

  3. 定义一个函数名convert,参数名cels (函数名,意为转换),返回值 fahr 。该自定义函数如下:

    1
    2
    3
    >>>def convert(cels):
    fahr=cels*1.8+32
    return fahr

    这样,在IDLE中直接调用convert(cels)函数,输入cels的值,可直接得到对应的摄氏温度

    1
    2
    >>>convert(30):
    86
  4. 要调用函数,必须先定义它!函数中的参数可以有多个,必须要用逗号来分隔他们。

(三)打印消息

  1. 目前调用自定义函数后,返回的结果比较简陋,想让其返回对用户友好的信息,用python内置的print函数。该函数已定义好,可以直接调用:

    1
    2
    >>>print('30摄氏度对应的华氏温度是:',fahr)   # 接上例
    30摄氏度对应的华氏温度是:86

(四)示例

  1. 定义一元二次方程的求解公式:ax2+bx+c=0

    关于一元二次方程,我们学过其有两个解,求解公式是:

    x=b±b24ac2ax={-b \pm \sqrt{b^2-4ac} \over 2a}

    定义一个函数quad,具体代码为:

    1
    2
    3
    4
    5
    6
    >>>def quad(a,b,c):
    determ=(b*b-4*a*c)**0.5
    x1=(-b+determ)/(2*a)
    x1=(-b-determ)/(2*a)
    return x1,x2
    >>>

三、获取字符串和数字输入

(一)获取字符串输入

  1. 编写真正的程序,需要向用户询问额外的信息。Python提供了内置函数input, 其语法为: string_var=input(prompt_string)

​ 基本作用是获取并返回一个文本字符串。文本字符串就是单词,更准确地说是字母和其他字符

  1. 示例:
1
2
3
4
5
6
7
>>>def main():
name1_str=input('Enter your name: ')
name2_str=input('Enter another: ')
name3_str=input('And another: ')
print('Here are all the candidates: ')
print(name1_str,name2_str,name3_str)
>>>

运行结果为:

1
2
3
4
5
6
>>>main()
Enter your name: John
Enter another: Alex
And another:Jimmy
Here are all the candidates:
John Alex Jimmy

(二)获取数值输入

  1. input函数获取的是文本字符串,如果要执行计算,涉及到数值,必须先将其转换为数字格式。可以根据处理的是整数,还是浮点数,使用int( )和float( )函数,格式如下:

    var_name=int(input(prompt_message))

    var_name=float(input(prompt_message))

  2. 示例:

    1
    2
    3
    4
    >>>def main():
    n=int(input('Enter a number: '))
    print('Twice of thar is:',n*2)
    >>>

    运行过程及结果:

    1
    2
    3
    >>>main()
    10
    Twice of that is: 20

    int()、float() 函数分别是内置数据类型整数和浮点数的名称,可以对输入的数字进行转换(前提是能够进行转换)

  3. 结合字符输入与数值输入功能,重写一个上述一元二次方程的求解代码。这次解x2-x-1=0这个方程

    1
    2
    3
    4
    5
    6
    7
    8
    >>>def main():
    a=float(input('Enter the value for a: '))
    b=float(input('Enter the value for b: '))
    c=float(input('Enter the value for c: '))
    determ=(b*b-4*a*c)**0.5
    x1=(-b+determ)/(2*a)
    x2=(-b-determ)/(2*a)
    print("Answers are",x1,'and',x2)

    运行过程及结果为:

    1
    2
    3
    4
    5
    >>>main()
    Enter the value for a: 1
    Enter the value for b: -1
    Enter the value for c: -1
    Answers are 1.618033988749895 and -0.6180339887498948

    以上两个答案为被称为黄金比例的数字:phi与1/phi

四、设置输出格式

  1. 内置函数print按照顺序打印其所有参数。默认情况下会用一个空格将打印的参数分隔开来。但可使用可选参数sep将分隔符指定为其他字符。例如,sep=’ '指定不使用任何分隔符

  2. 还可使用指定格式的字符串。e.g: fss=‘The square root {} is {}.’

    然后调用方法format来生成输出的字符串:format_spec_string.format(argument)

    e.g: fss.format(25,5)