Python学习:模块初识、数据类型

Posted on 2018-03-06 10:07  我编程我快乐  阅读(244)  评论(0编辑  收藏  举报

1.模块初识

在Python中,模块分为两种:

  (1)标准库

    标准库无需安装,只要在使用的时候import就可以使用了

  (2)第三方库

    第三方库必须下载安装之后才能够引入使用

下面介绍两个基本的模块:

  (1)os模块

     os模块是和操作系统交互的模块,可以调用操作系统的一些命令。其常用的一些方法有:

      a)  os.system(“操作系统命令”)   返回命令执行状态码   0表示成功 :该方法只执行命令,不保存结果

      b)  os.popen(“操作系统命令”)   该命令将结果存到内存中,需要使用read()方法读取出来  例:os.popen(“命令”).read()

      c)  os.mkdir(“目录名”)  创建一个新目录

  (2)sys模块

    sys模块是Python解释器自带的使用C语言编写的模块,其常用的一些方法有:

      a)  sys.path       获取一些路径

      b)  sys.argv   获取相对路径和接受传递的参数,以列表的形式表示

      

      可以通过列表取值的方式获取相应的参数值

  (3)自定义模块

    引入自定义的模块或者第三方的模块,需要把模块放在site-packages目录下,在导入模块的时候,会从本地目录下开始找,然后去环境变量下找

    注意:自己定义模块不能与标准模块名字相同

2.什么是Pyc文件

 

 3.三元运算

语法:result = value1  if  条件  else value2

  

4.Bytes类型

Python3 最重要的特性是对文本和二进制数据作了更为清晰的区别,文本总是Unicode,由str类型表示,二进制数据则由bytes类型表示。Python3不会以任意隐式的方式混用str和bytes,正是这使得两者的区别更为清晰。你不能拼接字符串和字节包,也无法在字节包里搜索字符串(反之亦然),也不能将字符串传入参数为字节包的函数中。

字符串和二进制之间可以进行相互转化,转化方式如下:

字符串和二进制数据相互转化的例子:

字符串转成二进制场景:socket数据传输(在python3中只能传二进制)

 

5.元组和列表

 

列表:  names = [“zhangsan”,”lisi”,”wangwu”]

               通过坐标索引取值,下标从0开始 names[0]的值为zhangsan

               切片:取多个值,例取出zhangsan和lisi   names[0:2]  列表切片  不包括names[2] 

               在不知道数组长度的时候获取最后一个元素names[-1]

               知识点:从右边取值时  下标从-1开始  

    获取lisi和wangwu的值names[-2:]

           (注意:因为截止下标取不到值,省略后即可取到最后的值)

    跳着切片: 指定步长

           name[0:3:2]  2是步长

               追加:

               names.append(“zhangyong”)

               插入:

               插入到谁的前面,就写谁的坐标

               如在lisi前面插入xuzhi

               names.insert(1,”xuzhi”)

               修改:

               直接复制即可 names[2] = “其他值”

               删除:

               names.remove(“具体值”)

               或者 del names[索引]

               或者 names.pop()  如果不给参数,默认是删除最后一个元素,也可以指定具体索引删除

               根据值找下标

               names.index(“具体值”)

               names.reverse()  列表反转

        names.sort()     按照字母顺序排序

               names.extend(另一个元组)   合并另一个元组

               copy方法(浅copy,复制的是第一个列表的引用)

               复制一份元组

               Names2 = names.copy()

               注意:列表中嵌套的列表其实是存储的引用,当在names中修改第一层的值时,name2中不发生变化。  当修改names中的子列表的值时,name2中也会发生变化

               列表中可以在嵌套列表

               浅copy的三种方式:

    (1)copy.copy(names)

    (2)names[:]  (全部切片 0:-1  0可以省略  -1省略可以取到最后一个值)

    (3)list(names)  (工厂模式)

    浅copy应用实例:夫妻双方公有财产  (创建联合账号)

    Person = [“name”,[“saving”,100]]   模板

    Man = person[:]

    Woman = person[:]

    Man[0] = “zhangsan”

    Woman[0] = “lisi”

    二者有着共同的子列表

               copy模块(可以使用该模块中的深copy)

               import copy

               name2 = copy.deepcopy(names)

               列表循环:

               for i in names :

                      print(i)

               enumerate方法:可以将获取列表元素对应的索引:

               如列表为:a = [“1”,”2”,”3”]

               则enumerate(a) 为[(0,”1”),(1,”2”),(2,”3”)]

               在列表循环的时候,可以使用该方法获取到索引信息

               for index,value in enumerate(a):
                      print(index,value)

元组:和列表类似,但是一旦创建便不能修改,称为只读列表,只能用于查

          格式:names = (“zhangsan”,”lisi”,”wangwu”)

          只有两个方法:

          count:

          index:

6.字符串常用操作

   Str = “zhangyong”

        Str.capitalize()  首字母大写

        Str.count(“a”)   统计某个子串的个数,可以指定起始位置

        Str.center(50,”-”)  一共打印50个字符,不够的用-填充,str在中间

        Str.endswith(“”)  判断字符串以什么结尾  比如判断邮箱以什么结尾

        Str.find(“”)  查找字符或字符串首字母所在的索引

        Str.format()  和str.format_map(“传字典”) 功能类似

        Str.isalnum()  判断是否只有字母和阿拉伯数字

        Str.isalpha()   判断只有英文字母

        Str.isdigit()    判断是否只有数字

        Str.isidentifier()  判断是不是一个合法的标识符

        Str.islower()是否是小写

        Str.issupper()是否是大写

        “+”.join([“”,””,””])   将列表转换成字符串,以+号间隔

        Str.ljust(50,“*”)  50个字符,str不够的地方在右侧用*补全

        Str.rjust(50,”*”) 50个字符,str不够的地方在左侧用*补全

        Str.lower()  str.upper()   大写转小写  小写转大写

        lstrip() 和 rstrip()   strip()   会去掉空格和回车

        split()   将字符串按照指定字符分割成列表

        swapcase()  大小写反转

  Str.replace(“old”,”new”,location)  替换字符   location省略表示替换所有的

  

 

7.字典

Key,value的数据类型,和json串类似

字典特性: 无序、去重

定义字典:info = {“key”:value,””:””}

取值:info[“key”]  该方法如果key不存在则会出错  另一个方法info.get(“key”)

Info[“key”] = value    key如果存在则修改值,如果不存在则添加一个

删除一个键值对:del info[“key”] or info.pop(“key”) info.popitem()随机删除一个

判断key是否在字典中:”key” in info  返回Bool类型

Info.values()  打印所有的值

Info.keys()打印所有的key

Info.setdefault(“key”,value)  如果key存在,则不变,否则添加一个新的值

Info.update(另一个字典)   批量更新或添加字典

Info.items()  把字典转成列表

Info.fromkeys([“”,””],defaultValue)   创建一个默认的字典,和info没有关系

        注意:这里defaultValue的引用是赋值给所有的key   即改变某个key的值,其他的也会变化

字典循环:

        For I in info :

               Print(i,info[i])

        另一个方法

        For k,v in info.items():

               Print(k,v)

第一个方法更高效

8.其他琐碎知识点

1.  type()

查看某一变量的数据类型

2.  两个**表示次方

3.  判断是否为数字  isdigit()

4. 高亮输出:

5. 退出程序使用exit()方法

 

三级列表练习题:

# 张永
#三级菜单程序

menu = {
    "北京":{
        "海淀":["中电15所","中关村"],
        "朝阳":["国贸","奔驰"],
        "昌平":["老男孩","尚硅谷"]
    },
    "河北":{
        "石家庄":["石家庄学院","铁道大学"],
        "邯郸":["丛台公园","龙湖公园"],
        "衡水":["衡水中学","衡水湖"]
    },
    "山东":{
        "济南":["趵突泉","山东大学"],
        "聊城":["冠县","轴承"]
    }
}
exit_flag = False
while not exit_flag:
    for i in menu:
        print(i)
    choose = input(">>>请选择:")
    if choose in menu:  #输入在字典中
        while True:
            for subMenu in menu[choose]:
                print("\t",subMenu)
            choose1 = input("\t>>>请选择:")
            if choose1 in menu[choose]:
                for th_menu in menu[choose][choose1]:
                    print("\t\t",th_menu)
                choose2 = input("\t\t>>>请选择:")
                if choose2 == "b":
                    continue
                elif choose2 == "bb":
                    break
            elif choose1 == "b":
                break
    else:
       print("所输入的省份不在列表中")

  

Copyright © 2024 我编程我快乐
Powered by .NET 9.0 on Kubernetes