python3学习第二周

1.python目录认识

python中的Lib目录一般存放标准模块或者库

python中的Lib\site-packages目录一般存放第三方模块或者库

2.初识模块

sys模块

用法举例:

import sys

print(sys.path)  #打印环境变量。

print(sys.argv)  #打印当前脚本的绝对路径。#dos打印脚本的相对路径

print(sys.argv[2])  #打印出第二个参数

os模块

用法举例:

import os

os_res = os.system("dir")   #显示当前目录下的目录和文件。执行命令不保存结果。

print("-->",os.res)

cmd_res = os.popen("dir").read()  #显示当前目录下的目录和文件。执行命令保存结果。

print(cmd_res)

找模块的顺序:

默认从当前目录找,如果找不到就从全局环境变量中找。

导入的模块在当前目录中和全局环境变量中都找不到的解决办法:

方法一 把该模块放到site-packages目录中即可

3.数据类型(待续)

a.数字

int(整型),25

float(浮点型),2.0

long(长整型),大一些的整数python3中没有长整型这个数据类型,

complex(复数),在python3中用complex(5,1)来表示复数5+j

b.布尔型

0和1,真和假

c.字符串

字符串"i am lili" 由str表示

d.bytes类型

二进制数1110由bytes表示

python3中文本和bytes是两种不同的数据类型,二者可以用函数进行互相转换。

例如:

msg="我爱西安"

print(msg.encode(encoding="utf-8"))   #字符串转二进制(bytes)类型,python3中写不写utf-8无所谓

print(msg.encode(encoding="utf-8").decode(encoding="utf-8"))   #二进制(bytes)类型转字符串

python3中数据传输只能传输二进制

4.三元运算

结构:d=a if a>b else c

如果a>b那么d=a,如果a<b 那么d=c

例如:a,b,c, = 2,4,6

d=a if a>b else c的结果是d=2

5.各种进制数

a.二进制数  由01组成

b.八进制数  由01234567组成

c.十进制数   由0123456789组成

d.十六进制数  由0123456789ABCDEF组成

十六进制与二进制数互相转换,先找到十六进制数0123456789ABCDEF中的每个数对应二进制

例如:F对应的二进制数为1111

      0对应的二进制数为0000

      1对应的二进制数为0001

6.列表,元组操作

列表

names = []             #定义空列表
names = ["zhenghao","liuchen","luohong","weixiao"]     #定义列表
print(names)
print(names[0])            #取值
print(names[0],names[1])   #取值
print(names[-1])           #取最后一个元素
print(names[0:3])          #切片,顾头不顾尾,打印下标0,1,2的元素
print(names[:3])           #切片,顾头不顾尾

# print(names[:])          #相当于print(names)
print(names[-3:-1])        #切片,顾头不顾尾
names.append("wjb")        #在列表后面追加一个
names.insert(1,"wjb")      #在列表中下标为1的位置插入一个元素,原位置的元素后移
names[0] = "pengxiao"      #把列表中下标为0的元素改为pengxiao
names.remove("luohong")    #删除列表中的luohong
del names[3]               #删除列表中的下标为3的元素
names.pop()                  #不加下标默认删除最后一个
names.pop(0)                 #加下标后,删除下标为0的元素
print(names.count("wjb"))         #打印列表中元素wjb的个数
print(names.index("weixiao"))      #打印列表中weixiao的下标
print(names[names.index("weixiao")])
names2 = ["1","2","3"]
names.extend(names2)               #列表扩展
names2.clear()                 #清空列表
del names2                    #删除列表
names.reverse()                 #反转列表
names.sort()                    #排序
print(names2)
print(names)
names = ["zhenghao","liuchen","luohong","weixiao"]
import copy                     #导入copy类,用于深复制列表
names = ["zhenghao","liuchen",["yun","li"],"luohong","weixiao"]
# names2 = names.copy()            #复制列表(浅复制)也就是说names和names2没完全独立
names2 = copy.deepcopy(names)      #复制列表(深复制)也就是说names和names2完全独立开
names[1] = "刘晨"
names[2][0] = "云"
print(names)
print(names2)
#循环
for i in names:
    print(i)
#跳着打印
for i in range(1,10,2):
    print(i)
#跳着切片
print(names[0:-1:2])

print(names[::2])

补充浅copy三种方式
import copy

p = ["a",["save",100]]
p1 = copy.copy(person)
p2 = list(person)
p3 = person[:]
print(p3)

浅copy可用于夫妻联合账户

元组

元组创建后就不能改变,可以说元组是一个只读列表

t = ("a","b","c","a")      #定义元组
print(t.count("a"))         #打印元组t中元素a的个数
print(t.index("c"))         #打印元组t中元素a的下标

print(t[0])               #打印元组t中下标为0的元素

print(len(t))             #打印元组t中元素的个数

python中列表和字典用的最多!

购物车练习要求

a.启动程序后,让用户输入工资,软后打印商品列表

b.允许用户根据商品标号购买商品

c.用于选择商品后,检测余额是否够,够就直接扣款,不够就提醒

d.可随时退出,退出时,打印已购买商品和余额

购物车练习代码

product_list = [
    ("iphone",5800),
    ("honor",3000),
    ("vivo",2500),
    ("zte",2800),
    ("oppo",3300)
]
shopping_list = []
salary = input("请输入你的工资:")
if salary.isdigit():
    salary = int(salary)
    while True:
        #输出编号和商品的第一种方法
        # for i in product_list:
        #     print(product_list.index(i),i)
        # 输出编号和商品的第二种方法
        for index,i in enumerate(product_list):     #enumerate()方法输出列表的元素下标和下标对应的元素
            print(index,i)
        user_choice = input("你买啥?")
        if user_choice.isdigit():
            user_choice = int(user_choice)
            if user_choice >= 0 and user_choice < len(product_list):
                user_choiced_product = product_list[user_choice]
                if salary >= user_choiced_product[1]:
                    salary = salary - user_choiced_product[1]
                    shopping_list.append(product_list[user_choice])
                    print("\033[32;1m%s\033[0m已经加入到购物车,账户余额为:\033[31;1m%s\033[0m"%(user_choiced_product[0],salary))
                else:
                    print("\033[31;1m金额不够,请充值!\033[0m")
            else:
                print("编号不存在!")
        elif user_choice =="q":
            print("----------已够商品清单-----------")
            for index,j in enumerate(shopping_list):
                print("\033[32;1m%s\033[0m \033[32;1m%s\033[0m"%(index,j))
            print("--------------------------------")
            print("账户余额为:\033[31;1m%s\033[0m"%(salary))
            print("欢迎下次光临!")
            exit()
        else:
            print("请输入商品编号或者q退出!")
else:
    print("工资输入不合法!")

7.字符串操作

name = "han jia peng"
name2 = "我是{_name},今年{_age}"
name3 = "312"
name4 = "HAN"

print(name.capitalize()) #把字符串的首字母转为大写
print(name.count("a"))   #打印字符串中a个数
print(name.center(60,"-")) #共打印60个字符不够的用-补上
print(name.encode()) #字符串转换为二进制
print(name.endswith("ng")) #判断字符串是否以ng结尾
print(name.find("a"))     #查找字符串a的下标
print(name[name.find("a"):5])  #字符串也可以进行切片
print(name2.format(_name = "jim",_age = 25 ))         #格式化输出
print(name3.isdigit())          #判断字符串是否是整数
print(name3.isnumeric())        #判断字符串是否只有数字
print(name4.isupper())          #判断字符串是否是大写
print('+'.join(['1','2','3']))  #用+号把字符连接
print(name.ljust(20,'*'))       #输出20个字符不够右边用*号补充
print(name.rjust(20,'*'))       #输出20个字符不够左边用*号补充
print("HA".lower())             #大写转小写
print("ha".upper())             #小写转大写
print("ha\n".rstrip())          #去掉右边回车
print("\nha".lstrip())           #去掉左边回车
print("\nha\n".strip())          #去掉两边回车

p = str.maketrans("abcdefg","1234567")  #构建abcdefg和1234567的对应关系
print("zbang".translate(p))              #用这种对应关系转换zhang,结果为:z21n7

print("zhang zi".replace("z","Z"))      #替换
print("zhang zi".replace("z","Z",1))    #替换一个z
print("zhang zi".rfind("z"))            #找最右边的z
print("zh+ang+zi".split("+"))           #按+号分割成列表,默认按空格分割
print("Zhang zh".swapcase())             #把字符串中的小字母写转为大写
print("zhang zhong".title())             #把每个单词的第一个字母转为大写

 

8.字典操作

字典是key-value 数据类型

字典定义

dic = {"stu101" : "zhao kai",

      "stu102" : "wang dong",

      "stu103" : "liu sheng"

}

字典特性

a.无序的

b.key必须是唯一的

dic = {"stu101" : "zhao kai",
      "stu102" : "wang dong",
      "stu103" : "liu sheng"
}
print(dic)
# print(dic["stu101"])   #查找,找不到会报错
# dic["stu101"] = "赵凯" #更改
# dic["stu104"] = "zhen zi dan" #没有添加,如果有更改
# del dic["stu104"]       #删除
# dic.pop("stu103")        #删除
print(dic.get("stu103"))  #查找,找不到不会报错,建议用此方法
print("stu103" in dic)    #判断字典中是否存在某个key
print(dic)

多级字典的嵌套及操作

av_catalog = {

    "欧美":{

        "www.youporn.com": ["很多免费的,世界最大的","质量一般"],

        "www.pornhub.com": ["很多免费的,也很大","质量比yourporn高点"],

        "letmedothistoyou.com": ["多是自拍,高质量图片很多","资源不多,更新慢"],

        "x-art.com":["质量很高,真的很高","全部收费,屌比请绕过"]

    },

    "日韩":{

        "tokyo-hot":["质量怎样不清楚,个人已经不喜欢日韩范了","听说是收费的"]

    },

    "大陆":{

        "1024":["全部免费,真好,好人一生平安","服务器在国外,慢"]

    }

}

av_catalog["大陆"]["1024"][1] = "可以做镜像"  #改值
print(av_catalog["大陆"]["1024"])

print(av_catalog)

print(info.keys())    #输出字典的key
print(info.values())  #输出字典的value
info.setdefault("stu104","123")
info2 = {"stu101":"bbb","1":"1"}
info.update(info2)
print(info.items())   #字典转换成列表
print(info)

循环打印出字典中的key和value

for i in info:    #建议用
    print(i,info[i])

for k,v in info.items(): #不建议用
    print(k,v)

三级菜单练习

data = {"陕西" : {"西安":{"碑林区":{"soo":{},
                                      "tuu":{},
                                      "iii":{}},
                          "雁塔区":{"aaa":{},
                                     "bbb":{},
                                     "ccc":{}},
                          "长安区":{"ddd":{},
                                     "eee":{},
                                     "fff":{}
                              }},
                   "咸阳":{"淳化":{"城关镇":{},
                                    "官庄镇":{},
                                    "马家镇":{}},
                            "礼泉":{"烟霞":{},
                                     "阡东":{},
                                    "西张部":{}},
                            "乾县":{"姜村镇":{},
                                     "马连镇":{},
                                     "梁山镇":{}
                                  }},
                   "宝鸡":{"凤翔县":{"城关镇":{},
                                      "彪角镇":{},
                                      "横水镇":{}},
                            "扶风县":{"天度镇":{},
                                       "午井镇":{},
                                       "绛帐镇":{}},
                            "太白县":{"咀头镇":{},
                                       "桃川镇":{},
                                       "太白河镇":{}}}
                },
    "江苏" : {"南京":{"玄武区":{},
                       "秦淮区":{},
                       "鼓楼区":{}},
               "无锡":{"梁溪区":{},
                        "滨湖区":{},
                        "惠山区":{}},
               "徐州":{"铜山区":{},
                        "鼓楼区":{},
                        "泉山区":{}}},
    "四川" : {"成都市":{"锦江区":{},
                         "青羊区":{},
                         "金牛区":{}},
               "绵阳市":{"涪城区":{},
                          "游仙区":{},
                          "安州区":{}},
               "自贡市":{"贡井区":{},
                          "大安区":{},
                          "沿滩区":{}}}
}

exit_flag = False
while not exit_flag:
    #打印一级菜单
    for i in data:
        print(i)
    choice = input("请选择1:")
    if choice in data:
        while not exit_flag:
            # 打印二级菜单
            for i2 in data[choice]:
                print(i2)
            choice2 = input("请选择2:")
            if choice2 in data[choice]:
                while not exit_flag:
                    # 打印三级菜单
                    for i3 in data[choice][choice2]:
                         print(i3)
                    choice3 = input("请选择3:")
                    if choice3 in data[choice][choice2]:
                        # 打印四级菜单
                        for i4 in data[choice][choice2][choice3]:
                            print(i4)
                        choice4 = input("最后一层,按b退出!")
                        #判断四级菜单处的操作(退出还是返回)
                        if choice4=="b":
                            pass     #pass什么都不做,回到打印三级菜单
                        elif choice4=="q":
                            exit_flag=True
                    # 判断三级菜单处的操作(退出还是返回)
                    if choice3 == "b":
                        break
                    elif choice3 == "q":
                        exit_flag = True
            # 判断二级菜单处的操作(退出还是返回)
            if choice2 == "b":
                break
            elif choice2 == "q":
                exit_flag = True

猜你喜欢

转载自www.cnblogs.com/zhangpo/p/9030763.html