zoukankan      html  css  js  c++  java
  • python学习--Day3

    函数和模块的使用

    将计算阶乘的功能封装到一个称之为“函数”的功能模块中,在需要计算阶乘的地方,只需要“调用”这个“函数”就可以了。

    定义函数:

    使用def关键字来定义函数,后面加函数名,一般都是通俗易懂,见名知意的名字,命名规则与变量的命名规则一样,在函数名候命的括号中加传递给函数的参数。中间是函数的执行体,用来计算需要的东西,最后通过return来返回一个结果,return可加可不加。

    计算阶乘:

    def factorial(num):

    result = 1

        for n in range(1, num + 1):

            result *= n

        return result

     m = int(input('m = '))

    n = int(input('n = '))

    函数的参数:

    Python中,函数的参数可以有默认值,也支持使用可变参数,所以Python并不需要向其他语言一样支持函数的重载,因为在定义一个函数的时候可以让它有多种不同的使用方式。

    摇骰子

    from random import randint

    def roll_dice(n=2):

     total = 0

        for _ in range(n):

            total += randint(1, 6)

        return total

    def add(a=0, b=0, c=0):

        return a + b + c

    在参数名前面的*表示args是一个可变参数

    即在调用add函数时可以传入0个或多个参数

    def add(*args):

        total = 0

        for val in args:

            total += val

        return total

    print(add())

    print(add(1))

    print(add(1, 2))

    print(add(1, 2, 3))

    print(add(1, 3, 5, 7, 9))

    用模块管理函数:
    给函数命名时,有可能会遇到命名冲突的问题,最简单的就是在同一个.py的文件中定义两个同名函数,由于python没有函数重载的概念,那么后面的定义会覆盖之前的定义,也就意味着两个同名函数实际上只存在一个。

    def foo():

        print('hello, world!')

     

    def foo():

        print('goodbye, world!')

    两个同名函数结果输出的只有goodbye,world。

    Python中每个文件代表了一个模块,在不同的模块中可以有相同的函数名,在使用函数的时候可以通过import关键字导入指定的模块就可以区分到底要使用哪个模块中的函数。

    如果我们导入的模块除了定义函数之外还中有可以执行代码,那么Python解释器在导入这个模块时就会执行这些代码,事实上我们可能并不希望如此,因此如果我们在模块中编写了执行代码,最好是将这些执行代码放入如下所示的条件中,这样的话除非直接运行该模块,if条件下的这些代码是不会执行的,因为只有直接执行的模块的名字才是“main”。

    字符串和常用数据结构:

    Python表示文本信息的方式就是字符串类型,所谓**字符串**,就是由零个或多个字符组成的有限序列

    字符串的使用方法:

    def main():

        str1 = 'hello, world!'

        # 通过len函数计算字符串的长度

        print(len(str1))  # 13

        # 获得字符串首字母大写的拷贝

        print(str1.capitalize())  # Hello, world!

        # 获得字符串变大写后的拷贝

        print(str1.upper())  # HELLO, WORLD!

        # 从字符串中查找子串所在位置

        print(str1.find('or'))  # 8

        print(str1.find('shit'))  # -1

        # 与find类似但找不到子串时会引发异常

        # print(str1.index('or'))

        # print(str1.index('shit'))

        # 检查字符串是否以指定的字符串开头

        print(str1.startswith('He'))  # False

        print(str1.startswith('hel'))  # True

        # 检查字符串是否以指定的字符串结尾

        print(str1.endswith('!'))  # True

        # 将字符串以指定的宽度居中并在两侧填充指定的字符

        print(str1.center(50, '*'))

        # 将字符串以指定的宽度靠右放置左侧填充指定的字符

        print(str1.rjust(50, ' '))

        str2 = 'abc123456'

        # 从字符串中取出指定位置的字符(下标运算)

        print(str2[2])  # c

        # 字符串切片(从指定的开始索引到指定的结束索引)

        print(str2[2:5])  # c12

        print(str2[2:])  # c123456

        print(str2[2::2])  # c246

        print(str2[::2])  # ac246

        print(str2[::-1])  # 654321cba

        print(str2[-3:-1])  # 45

        # 检查字符串是否由数字构成

        print(str2.isdigit())  # False

        # 检查字符串是否以字母构成

        print(str2.isalpha())  # False

        # 检查字符串是否以数字和字母构成

        print(str2.isalnum())  # True

        str3 = '  jackfrued@126.com '

        print(str3)

        # 获得字符串修剪左右两侧空格的拷贝

        print(str3.strip())

    除了字符串,Python还内置了多种类型的数据结构,如果要在程序中保存和操作数据,绝大多数时候可以利用现有的数据结构来实现,最常用的包括列表、元组、集合和字典。

    使用列表:

    def main():

        list1 = [1, 3, 5, 7, 100]

        print(list1)

        list2 = ['hello'] * 5

        print(list2)

        # 计算列表长度(元素个数)

        print(len(list1))

        # 下标(索引)运算

        print(list1[0])

        print(list1[4])

        # print(list1[5])  # IndexError: list index out of range

        print(list1[-1])

        print(list1[-3])

        list1[2] = 300

        print(list1)

        # 添加元素

        list1.append(200)

        list1.insert(1, 400)

        list1 += [1000, 2000]

        print(list1)

        print(len(list1))

        # 删除元素

        list1.remove(3)

        if 1234 in list1:

            list1.remove(1234)

        del list1[0]

        print(list1)

        # 清空列表元素

        list1.clear()

        print(list1)

    生成器: 

    f = (x ** 2 for x in range(1, 1000))

        print(sys.getsizeof(f))  # 相比生成式生成器不占用存储数据的空间

        print(f)

        for val in f:

            print(val)

    Python中还有另外一种定义生成器的方式,就是通过`yield`关键字将一个普通函数改造成生成器函数

    使用元组:

    def main():

        # 定义元组

        t = ('梁浩田', 22, True, '内蒙古呼和浩特')

        print(t)

        # 获取元组中的元素

        print(t[0])

        print(t[3])

        # 遍历元组中的值

        for member in t:

            print(member)

        t = ('lht', 22, True, '凉城')

        print(t)

        # 将元组转换成列表

        person = list(t)

        print(person)

        # 列表是可以修改它的元素的

        person[0] = 'll'

        person[1] = 23

        print(person)

        # 将列表转换成元组

        fruits_list = ['aaa', 'bbb', 'ccc']

        fruits_tuple = tuple(fruits_list)

        print(fruits_tuple)

    使用集合:

    def main():

        set1 = {1, 2, 3, 3, 3, 2}

        print(set1)

        print('Length =', len(set1))

        set2 = set(range(1, 10))

        print(set2)

        set1.add(4)

        set1.add(5)

        set2.update([11, 12])

        print(set1)

        print(set2)

        set2.discard(5)

        # remove的元素如果不存在会引发KeyError

        if 4 in set2:

            set2.remove(4)

        print(set2)

        # 遍历集合容器

        for elem in set2:

            print(elem ** 2, end=' ')

        print()

        # 将元组转换成集合

        set3 = set((1, 2, 3, 3, 2, 1))

        print(set3.pop())

        print(set3)

        # 集合的交集、并集、差集、对称差运算

        print(set1 & set2)

        # print(set1.intersection(set2))

        print(set1 | set2)

        # print(set1.union(set2))

        print(set1 - set2)

        # print(set1.difference(set2))

        print(set1 ^ set2)

        # print(set1.symmetric_difference(set2))

        # 判断子集和超集

        print(set2 <= set1)

        # print(set2.issubset(set1))

        print(set3 <= set1)

        # print(set3.issubset(set1))

        print(set1 >= set2)

        # print(set1.issuperset(set2))

        print(set1 >= set3)

        # print(set1.issuperset(set3))

     

  • 相关阅读:
    字的传送
    mov 寄存器,段寄存器
    c语言中利用三维数组计算成绩总分数
    python中break语句
    c语言中求课程总分、平均分。学生总分及平均分
    python中assert语句
    python中random模块引入随机数
    python中实现列表的倒序排列
    c语言中求两个矩阵的乘积
    python的严格缩进可以避免else悬挂
  • 原文地址:https://www.cnblogs.com/4443056bdH/p/11285204.html
Copyright © 2011-2022 走看看