• Python 3 学习笔记(二)----数据类型


    一、初识模块2

    标准库:

    • sys模块:
    1 import sys      
    2             
    3 print(sys.path) #新建文件名不能与导入的模块名相同
    4 print(sys.argv)
    • os模块:
    1 import os
    2             
    3 cmd_res = os.system("dir")#执行命令,不保存结果
    4 cmd_res = os.popen("dir").read()
    5 print("-->",cmd_res)
    6             
    7 os.mkdir("new_dir")#新建目录

    第三方库:

    例如自行写一个login.py的模块用以将来使用时调用

     1 import getpass
     2 
     3 _username = 'Irlo'
     4 _password = 'abc123'
     5 username = input("username:")
     6 password = getpass.getpass("password:")  #pycharm中getpass不可用
     7 
     8 if _username == username and _password == password:
     9     print("Welcome user {name} login...".format(name=username))
    10 else:
    11     print("Invalid username or password!")

    以后想要使用这个模块时直接调用“import login”即可。调用这个模块时要确保login.py与应用文件在同一目录下,或者将login.py存放在site-packages文件夹中。

    在调用login.py的模块时会自动生成一个login.pyc文件,python在第一次执行代码的时候先预编译一次存为.pyc,下一次运行的时候查找与运行文件同名的.pyc文件,比较两个文件的修改时间,如果.py文件比较新,则重新创建一个.pyc,反之则直接执行。

    二、数据类型

    数字:

    • int(整型)

      在32位机器上,整数的位数为32位,取值范围为-2**31~2**31-1;

      在64位机器上,整数的位数为64位,取值范围为-2**63~2**63-1.

    • long(长整型)

      在python3里没有长整形,python3会帮你自动转换

    • float(浮点型)

      3.14和314.1592E-4是浮点数的例子,E标记表示10的幂

    • complex(复数)

      复数由实数部分和虚数部分组成,一般形式为x+yj。基本用不上,物理工程类能用上

    布尔值:

    真或假

    1或0------>True or False

    字符串:

    用"内容"表示。万恶的字符串拼接不要用

    字符串格式化输出:

    name = "Irlo"
    
    print("My name is %s" % name)
    
    #输出"My name is Irlo

    字符串操作:

     1 name = "My name is Irlo"
     2     
     3 print(name.capitalize())
     4 print(name.count("m"))
     5 print(name.center(50,"-"))
     6 print(name.endswith("lo"))
     7 print(name.find("s"))
     8 print(name.format(name="Irlo",year=26))
     9 print(name.isalnum())
    10 print("234".isdecimal())#判断是否为十进制
    11 print("1A".isdigit())#判断是否为数字
    12 print("1A".isidentifier())#判断是否为一个合法的标识符
    13 print("33.2".isnumeric())#判断是否只有数字
    14 print("My Name Is   ".istitle())#判断是否是标题,如果首字母都是大写就算是
    15 print("+".join(["1","2","3"]))#把列表按照适当的方式变成字符串
    16 print(name.ljust(50,"*"))
    17 print("Irlo/n".lstrip())#strip会去除两边的空格和回车,lstrip会去除左边的空格和回车
    18 print(name.maketrans())
    str operation

    列表:

    1 name = ["Irlo","Xiaoxiao","Dali"]
    2 
    3 name_list = list(["Irlo","Xiaoxiao","Dali"])

    列表操作:索引、增加、删除、修改、切片、循环、包含

     1 names = ["ChenXiaojie","JiYuchi","YuTao","XiaoXiao","LiYuhan"]
     2 names2 = ["1","2","3","4","5","6"]
     3 #print(names[2])#切片
     4 #print(names[-1])#切片
     5 #print(names[:3])#切片
     6 #print(names[-3:])#切片
     7 names.append("KangKai")#添加
     8 names.insert(1,"DengKai")#插入
     9 names.insert(3,"XiaoXiao")#插入
    10 names.remove("YuTao")#移除
    11 del names [0]#删除数据
    12 #print(names.count("XiaoXiao"))#计数
    13 #print(names.index("JiYuchi"))#获取下标
    14 names.reverse()#倒转顺序
    15 #del names2  #删除变量
    16 names.extend(names2)#扩展
    17 names.sort()#排序
    18 print(names)

    列表的操作中copy比较特殊

     1 import copy#完全复制需要导入模块copy
     2 names = ["JiYuchi","YuTao",["XiaoXiao","LiuSijia"],"DengKai","ChenXiaojie"]
     3 name2 = copy.deepcopy(names) #深copy(完全复制)尽量不用,因为会占用很大的内存
     4 names[1] = "于涛"
     5 names[2][0] = "XIAOXIAO"
     6 print(names)
     7 print(name2)
     8             
     9 names = ["JiYuchi","YuTao",["XiaoXiao","LiuSijia"],"DengKai","ChenXiaojie"]
    10 name1 = names.copy()#浅copy,只copy第一层
    11 names[1] = "于涛"
    12 names[2][0] = "XIAOXIAO"
    13 print(names)
    14 print(name1)
    15 names = ["JiYuchi","YuTao",["XiaoXiao","LiuSijia"],"DengKai","ChenXiaojie"]    
    16 for i in names:
    17     print(i)
    18 #range(1:10:2)
    19 print(names[0:-1:2])#选中范围头和尾,步长为2,打印偶数的人名
    20 print(names[::2])#当0和-1时可以省略
    21 print(names[:])#表示从头全部打印
    copy

    元组:

    元组就是不可以修改的列表,用“()”表示,只有两种操作,一个是count(统计),一个是index(获取下标)

    字典:

    字典中可以包含多个层级,由key和value组成

    info = {
        "snis1701":'mingrihua',
        "snis1702":'tongxuehui',
        "snis1703":'heidaodage',
        "snis1704":'guanggao',
    }

    字典的常用操作:索引、新增、删除、"键、值、键值对"、循环、长度

     1 info = {
     2     "snis1701":'mingrihua',
     3     "snis1702":'tongxuehui',
     4     "snis1703":'heidaodage',
     5     "snis1704":'guanggao',
     6 }
     7 print(info) #字典是无序的,它没有下标
     8 #print(info["snis1701"])#取出,用这种方式查找如果字典中不存在的话会报错,不推荐
     9 info["snis1701"] = "明日花"#修改
    10 info["snis1705"] = "shuicaili"# 如果原字典中没有则添加
    11 del info["snis1701"] #python自带的删除方式
    12 info.pop("snis1702") #字典的删除方式
    13 print(info)
    14 print(info.get("snis1706"))#字典中常用的取出、查询方式
    15 print("snis1703" in info) #判断字典中是否有这一项;在python 2.x中写作info.has_key("1703")

    多重字典:

     1 game_catalog = {
     2     "Europe and American":{
     3         "BlizzCon":["WOW","Diablo","OverWatch"],
     4         "Ubisoft":["Assassin","Rainbow Six","Tom Clancy's Ghost Recon"],
     5         "Frontier Development":["Elite Dangerous","Planet Coaster","Screamride"],
     6     },
     7     "Japan":{
     8         "Capcom":["Resident Evil","Street Fighter","Asura's Wrath"],
     9         "Square Enix":["Final Fantasy","Dragon Quest","NieR Automata"],
    10         "Namco":["Pac-Man","Ace Combat","Tekken"],
    11     },
    12     "China":{
    13         "Tencent":["LOL","King of Glory","CrossFire"],
    14         "Netease Games":["HearthStone","Heroes of the Storm","StarCraft"],
    15     }
    16 }
    17 
    18 '''
    19 game_catalog["China"]["Tencent"][2] = "Alliance of Valiant Arms"
    20 
    21 game_catalog.setdefault("Korea",{                        #setdefult会看你新建字典的key是否已经在原字典中,如果原字典中没有,那么就把新字典加入进去;如果原字典中已经有了,那么就默认原字典的key不变
    22     "Nasdaq Game":["Mir2","Aion","XCB"],
    23     "Nexon":["Crazyracing","DNF","Counter-Strike Online"],
    24 })
    25 '''
    26 add = {
    27     "Korea":{
    28         "Nasdaq Game":["Mir2","Aion","XCB"],
    29         "Nexon":["Crazyracing","DNF","Counter-Strike Online"],
    30     }
    31 }
    32 game_catalog.update(add)   #uodate用于更新字典,如果原字典中没有,则新添加进去;如果原字典中已经有了新字典中的key,则更新以新字典内容为准
    33 print(game_catalog)
    34 
    35 print(game_catalog.items())   #把字典变为列表

    字典知识点拾遗:

    info = {
        "snis1701": 'mingrihua',
        "snis1702": 'tongxuehui',
        "snis1703": 'heidaodage',
        "snis1704": 'guanggao',
    }
    b = {
        "snis1701":"Book",
        1:3,
        4:9,
    }
    info.update(b)
    print(info)
    c = dict.fromkeys([5,6,7],[2,{"ubisoft":"Rainbow Six"},"Telsa"])#初始化一个新字典(初始化与原字典无关,所以用dict),前面是key,后面是value
    print(c)
    c[7][1]["ubisoft"] = "Assassin"  #如果要修改,注意key要完全一致,不然会变成添加
    print(c) #用fromkey创建字典只能创建一层,多层的话在修改的时候只能修改一层
    
    for i in info:
        print(i,info[i])

    三、入门知识拾遗

    三元运算:

    1 a,b,c = 1,2,3
    2         
    3 d = a if a>b else c
    4 print(d)

    进制:

    二进制:0,1
    八进制:0,1,2,3,4,5,6,7
    十进制:0,1,2,3,4,5,6,7,8,9
    十六进制:0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F     #十六进制1位数对应4位二进制
    十六进制的表示方法:
    BH,后缀法,看到H表示为十六进制的B,结果为11,二进制1011
    0X53,前缀法,看到0X表示为十六进制的53,结果为83,二进制1010011(5为0101,3为0011)

    bytes:

    python3对文本和二进制数据作了更为清晰的区分。文本总是unicode,由str类型表示,二进制数据则由bytes类型表示。python3不会任意隐式的方式混用str和bytes。不能拼接字符串和字节包,也无法在字节包里搜索字符串(反之亦然),也不能将字符串传入参数为字节包的函数(反之亦然) 

    1 #str和bytes通过编码和解码的方式互相转换
    2 print("哈哈哈哈".encode("utf-8"))# str转bytes的时候要说明str的编码方式,b表示bytes
    3 b'xe5x93x88xe5x93x88xe5x93x88xe5x93x88xe5x93x88'
    4 print(b"xe5x93x88xe5x93x88xe5x93x88xe5x93x88xe5x93x88".decode("utf-8"))#bytes转str的时候要声明转换成str时用什么编码
  • 相关阅读:
    dotnet 6 使用 HttpWebRequest 进行 POST 文件将占用大量内存
    递增运算符重载
    左移运算符重载
    流程与标准
    Erp系统常用递归,查类目树,查上级,查下级
    判断一个点是否在指定的直角三角形内
    [LeetCode]2281. Sum of Total Strength of Wizards 计算公式推导详解(JavaScript版)
    Airtest+Poco常见Exception报错
    nodejs连接mysql数据库,报错Client does not support authentication protocol requested by server的解决方法
    Poco API精讲之元素树冻结freeze()
  • 原文地址:https://www.cnblogs.com/consort/p/7294630.html
Copyright © 2020-2023  润新知