python再复习(3)函数

环境:win7 pycharmCE_2017.2 python3.6.2

6.函数

函数的简介、调用函数、定义函数就不再赘述。
关于习题,python写一个接一元二次方程:

# -*- coding: utf-8 -*-

import math


def quadratic(a, b, c):
    # 先求判别式
    deta = ((b) * (b)) - (4 * (a) * (c))
    if (deta < 0):

        x1_1 = ((-1) * (b)) / (2 * (a))
        x1_2 = ((math.sqrt((-1) * deta)) / (2 * (a)))
        print('此方程有共轭复根,第一个复根为: \n' + str(x1_1) + '+' \
        + str(x1_2) + 'i')
        print('第二个复根为: \n' + str(x1_1) + '-' + str(x1_2) + 'i')
        x1_1 = ((-1) * (b)) / (2 * (a))
        x1_2 = ((math.sqrt((-1) * deta)) / (2 * (a)))
    elif (deta == 0):
        print('此方程有相同解: ')
        x1and2 = (-1) * (b) / (2 * (a) * (c))
        print(x1and2)
    else:
        x1 = ((-1) * (b) + (math.sqrt(deta))) / (2 * (a))
        print('此方程第一个解为: ' + str(x1))
        x2 = ((-1) * (b) - (math.sqrt(deta))) / (2 * (a))
        print('此方程第二个解为: ' + str(x2))


p = []
for x in (1, 2, 3):
    print('请输入ax^2+bx+c的' + chr(96 + x))
    p.append(int(input()))
quadratic(p[0], p[1], p[2])

接下来说一说函数的参数
对于一个简单的函数,例如

def power(x):
    return x * x

x就是位置参数
在调用这个函数的时候,必须传入也必须传入1个位置参数。
对于:

def power(x, n=2):
    s = 1
    while n > 0:
        n = n - 1
        s = s * x
    return s

x则为位置参数,n为默认参数。如果是power(2,3),那计算的就是2的3次方,输入power(2)算得是2的平方,也就是说,位置参数依然要输入,而默认参数可以不输入,输入了就按你输入的算,不输入就按默认的算。使用默认参数要注意一个变量的坑,在廖老师这章节有写。
对于函数:

def calc(*numbers):
    sum = 0
    for n in numbers:
        sum = sum + n * n
    return sum

numbers是一个可变参数,可以用calc(2,3)也可以calc(2,3,4,5,6)等等,个数不限可编。而对于现成的list和tuple,可以:

a=[2,4,5]
calc(*a)

在函数内部,a中的元素会被组装成一个元组来使用。
对于关键字参数暂时没什么讲的,区别于可变参数的的一个号搭配列表和元组,关键字参数搭配得是两个号和字典。命名关键字参数暂时也没什么说的。
廖老师说过:

在Python中定义函数,可以用必选参数、默认参数、可变参数、关键字参数和命名关键字参数,这5种参数都可以组合使用。但是请注意,参数定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数。

说说递归,递归神,迭代人,我还是个凡人,暂时说不出什么门道,先挖个坑。

你可能感兴趣的:(python,python的学习)