Day1补充部分

模块初识

模块就是由其他人写好的功能,在程序需要的时候进行导入,直接使用,也叫库。

库有标准库和第三方库,所谓标准库,就是不需要安装就可以直接使用的,自带的;第三方库,就是需要进行下载安装才可以使用。

Python之所以强大是因为其中不仅支持标准库和还支持第三方库,目前先了解一下简单的两个库:sys和os。

文件名不能命名为与模块的名相同的名字,import在寻找模块的时会在当前的目录下寻找,所以如果同名的话会报错,但在p3中会出现不报错的情况。

Sys

Sys.path打印出来是一堆路径,全是python的全局环境变量,存python的内部调用的文件或者是模块的路径,如果不在就会出错。

 import sys

 print(sys.path )

标准库库存放在lib目录下,第三方库存放在sit_packages目录下。

argv,打印相对路径,但在pychame中会显示是绝对路径;还可以添加参数。

 import sys
print(sys.argv) 输出结果 e:\Private\私人文件\python\day2>py -3 sys_mod.py ['sys_mod.py'] 在输入的时候加入参数: e:\Private\私人文件\python\day2>py -3 sys_mod.py 1 2 3 ['sys_mod.py', '', '', ''] import sys
print(sys.argv[2]) e:\Private\私人文件\python\day2>py -3 sys_mod.py 1 2 3 2

Os

和操作系统进行交互。调用命令,查看文件,查看文件大小等

.System(”dir”)dir是Windows查看当前目录下的文件,如果存入变量中,输出结果会变成0,因为输出是直接输出到屏幕上,输出完就没了,这里的0是代表输出成功,1是输出错误。执行命令不保存结果。

 import os
cmd_res = os.system("dir")
print("--->",cmd_res)#执行命令不保存结果 结果返回: ---> 0

.popen(”dir”)同样存入变量,打印出的时候是内存地址,需要把结果读出来的时候需要加入read,加入的原因,可以理解命令存在内存中,需要用read来取出,如果不取就只是地址。

 import os

 cmd_res = os.popen("dir").read() #取结果
print("--->",cmd_res) .mkdir当前目录下创建目录 os.mkdir("new_dir") 创建名字为new_dir的目录

.pyc

PyCodeObject和pyc文件。

我们在硬盘上看到的pyc自然不必多说,而其实PyCodeObject则是Python编译器真正编译成的结果。我们先简单知道就可以了,继续向下看。

当python程序运行时,编译的结果则是保存在位于内存中的PyCodeObject中,当Python程序运行结束时,Python解释器则将PyCodeObject写回到pyc文件中。

当python程序第二次运行时,首先程序会在硬盘中寻找pyc文件,如果找到,则直接载入,否则就重复上面的过程。

所以我们应该这样来定位PyCodeObject和pyc文件,我们说pyc文件其实是PyCodeObject的一种持久化保存方式。

bytes类型

py中文本和二进制分开表示,前者用str表示,后者这bytes表示,p3中两者分的很清晰,不能混合,无法再字节包里面搜索字符串,也不能在字符包里面搜索字节,两者但又可以相互转换(解码decode和编码encode)。

 msg = "人工智能"

 print(msg)

 print(msg.encode(encoding= "utf-8") )

 print(msg.encode(encoding= "utf-8") .decode(encoding= "utf-8") )

在p3中不加入encoding = “utf-8”也不会出错,但最好还是规范点,加上改句。

列表

列表也同样可以进行类似range的步长的输出:

 names =["LuFei","SuoLong",["Luo","JiDe"],"XiangJiShi","QiaoBa"]
print(names [0:-1:2])
print(names [::2])
#range (1,10,2) 起始,结束,步长
for i in names :
print(i)

切片

顾首不顾尾,[1:3]第一个代表起始位置,第二个代表结束位置,但不包括在内

在不知道列表多大的情况下,可以用-1代表最后一个列表位置。排序是从左到右,如果需要取末尾的位置可以用负数,需要取到最后一个可以省略如:[-3:]。

 names =["LuFei","SuoLong",["Luo","JiDe"],"XiangJiShi","QiaoBa"]

 print(names[1:3])#切片
print(names[2:-1])
print(names[-2:])
print(names[:3])

追加

变量名前加入.append("”),只能在最末尾的追加

names .append("WuSuoPu")#追加

插入

.insert(1,””)1代表的是需要插入的位置

names.insert(1,"BuLuKe")#插入
names.insert(3,"ShenPing")

更改

N[n]=””,N为列表名,n代表需要更改的位置

names[2] = "LuBing"#替换
print(names)

删除

N.remove("”)直接移除

del N[n],n为删除的位置

N.pop(n)没有输入下标n默认删除最后一个,如果有下标n则删除下标位置的。

#delete
names.remove("QiaoBa")
del names[1] = names.pop(1)
names.pop(1)

查找位置

N.index(“”)

print(names.index("QiaoBa") )#查找下标
print(names[names.index("QiaoBa") ]) #根据下标打印

统计

用法类似:N.count(“”)对某元素的统计。

print(names.count("QiaoBa") )#统计

排序

Sort优先级高到低为:特殊符号,数,大写,小写

names.sort()#排序

倒序

列表的原本的顺序颠倒。

names.reverse()#倒序

扩展

两个列表合并在一起:extend,被合并的还是会存在

names2 = [1,2,3,4]
names.extend(names2)#扩展合并 如果删除后者的话:运行的过程会出错。 del names2
print(names,names2 )

复制

复制中有分两种,一种是深复制,一种是浅复制,前者是会进行完整对修改进行的复制,后者只是复制第一层,如果出现嵌套的情况是对嵌套的内容地址的内容进行修改的也会复制。

import copy  #需要完整复制的时候需要加入这句

names2 = copy.deepcopy(names)#深copy,慎用
#names2 = copy.copy(names) #和浅copy一样
#names2 = names .copy() #只是copy第一层,浅层的,内嵌的的时候,内层的列表是指针内容被修改,属于第二层的内容,修改会同步进行复制
print(names)
print(names2)
names[0] = "路飞"#列表里面填写的是下标!!
names[2][0] = "罗"#= name2[2][0] = "罗"
print(names)
print(names2)

元组

一旦创建就不能修改,只读列表,小括号,只有两个用法,count和index。

names = ('JC','jc')

print(names.count("JC") )

print(names.index("JC")  )

程序练习。

结合列表和判断语句写出

程序:购物车程序

需求:

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

2.允许用户根据商品编号购买商品

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

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

字符串操作

name = 'my name is jc'
print(name.capitalize()) .format()格式输出 .format_map()字典用法格式输出 .isalnum()阿拉伯数字加英文字母,其他的输出都不可以 .isalpha()纯英文字母 .isadecimal()十进制数 .isdigit()是不是整数 .isidentifier()是不是一个合法的标识符(变量名) .isnumeric()是不是一个只有数字在里面 .isspace()是不是空格 .istitle()是不是每个首字母大写 .isprinable()字符串不存在这个,tty file,drive file这类文件不能打印的 .isupper()是不是大写 p = str.maketrans("abcdefen",'123$@456')
print("j chen".translate(p) ) print('My Name Is '.isupper())
print('+'.join( ['','','']) ) print('a 1A'.isidentifier()) #判读是不是一个合法的标识符
print('33A'.isnumeric())

。。。

等等,可以逐个进行试验,一般经常用到的指令都不多,有些指令只可意会不可言传~~

字典

字典一种key - value 的数据类型,和平时学习使用的字典类似

特性:

字典没有顺序(下标),列表有序(下标)

Key是唯一的,如果相同的key会自动覆盖(去重)

 # Author: JC

 info = {

     'stu1101': "HaiZeiWang",

     'stu1102': "HuoYingRenZhe",

     'stu1103': "DaoJian",

 }

 print(info['stu1101'])      #打印

 #add

 info ['stu1104'] = "小鬼杀手"   #如果存在就查找不存在就增加

 print(info)

 #修改

 info ['stu1101'] = "海贼王"

 print(info)

 #del

 #info.pop("stu1101")

 #del info ["stu1103"]

 info.popitem()  #随机删除

 print(info)

 #查找

 print(info .get("stu1101"))#没有的话就就会返回none

 info ["stu1102"]#不存在的情况会报错

 print("stu1102" in info) #info.has_key("1102")在py2中存在

三级菜单

程序: 三级菜单

要求:

打印省、市、县三级菜单

可返回上一级

可随时退出程序

Homework:

购物车优化

用户入口

1.商品信息存入文件里

2.已购商品,余额记录

商家入口

1.可以添加商品,修改商品价格

python 自学之路-Day Two的更多相关文章

  1. Python自学之路---Day13

    目录 Python自学之路---Day13 常用的三个方法 匹配单个字符 边界匹配 数量匹配 逻辑与分组 编译正则表达式 其他方法 Python自学之路---Day13 常用的三个方法 1.re.ma ...

  2. Python自学之路---Day01

    目录 Python自学之路---Day01 注释 单行注释 多行注释 print()函数 语法 参数 实例 input()函数 语法 参数 实例 查看Python的关键字 代码 变量与常量 变量 如何 ...

  3. Python自学之路

    2020年春节,受新型冠状病毒影响,整个春节假期,全国人民都在恐慌之中,为了避免大家上班相互传染,公司号召国家政策,开始上班日期延迟,在家呆的实在太无聊,突然感觉自己不能浪费这美好的时光,决定学习Py ...

  4. 我的Python自学之路-003 字符串的知识

    '''字符串是以引号或者单引号括起来的任意文本,例如"123","asdfjk",'adfa'引号或者单引号,只是一种表示方法,并不是字符串的一部分如果字符串本 ...

  5. python 自学之路-Day one

    一.Python介绍 创始人吉多范罗苏姆(龟叔),脚本解释程序 应用领域广,数据分析.组件集成.网络服务.图像处理.数值计算和科学计算等. 主要应用领域: 云计算:OpenStack: WEB开发:经 ...

  6. Python自学之路——自定义简单装饰器

    看了微信公众号推送的一道面试题,发现了闭包的问题,学习时间短,从来没有遇到过这种问题,研究一下. Python函数作用域 global:全局作用域 local:函数内部作用域 enclosing:函数 ...

  7. 我的Python自学之路-002 字典的知识

    '''字典是python中唯一的验证类型,采用键值对(key-value)的形式存储数据.python对key进行哈希函数运算.根据计算的结果决定value的存储地址.所以字典是无序存储的.且key必 ...

  8. 我的Python自学之路-001 列表的知识

    #_date_:2020/9/11 '''列表和字典是python中用的最多的数据类型 假如要存储一个班级的人名,需要怎么做?有这么几种方法:1.定义很多个变量: name0 = 'wucaho' n ...

  9. 全面进攻python之前回顾下自己近三个月的自学之路

    人生是在一直试错的过程中成长起来的.这句话貌似很有道理,但回顾了下自己近三个月python自学学习之路,又觉得自己对这句话又有了新的看法------行动之前必须要有正确的选择,这样做错了才能成长. 2 ...

随机推荐

  1. EasyUI集成Kindeditor使用

    在实际的项目中,我们需要在项目中集成富文本编辑器,而kindeditor作为一款优良的编辑器,在项目中或多或少都会用到! 实际效果图     使用方法: 1.首先下载Kindeditor编辑器,我这里 ...

  2. java并发之DelayQueue实际运用示例

    在学习Java 多线程并发开发过程中,了解到DelayQueue类的主要作用:是一个无界的BlockingQueue,用于放置实现了Delayed接口的对象,其中的对象只能在其到期时才能从队列中取走. ...

  3. JVM-01:类的加载机制

    本文从 纯洁的微笑的博客 转载 原地址:http://www.ityouknow.com/jvm.html 类的加载机制 1.什么是类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内 ...

  4. Java开源生鲜电商平台-账单模块的设计与架构(源码可下载)

    Java开源生鲜电商平台-账单模块的设计与架构(源码可下载) 补充说明:Java开源生鲜电商平台-账单模块的设计与架构,即用户的账单形成过程. 由于系统存在一个押账功能的需求,(何为押账,就是形成公司 ...

  5. MIT KIT OpenID Connect Demo Client

    Hello world! You are NOT currently logged in. This example application is configured with several pa ...

  6. 这样入门asp.net core,如何

    本文章主要说明asp.net core的创建和简单使用. 一.使用到的命令 dotnet new :创建项目(解决方案,类库,单元测试等),如:dotnet new web dotnet add pa ...

  7. Spark2.1.0——运行环境准备

    学习一个工具的最好途径,就是使用它.这就好比<极品飞车>玩得好的同学,未必真的会开车,要学习车的驾驶技能,就必须用手触摸方向盘.用脚感受刹车与油门的力道.在IT领域,在深入了解一个系统的原 ...

  8. elementui+vuejs如何添加表格操作按钮

    <el-table :data="tableData" stripe border style="width:100%" highlight-curren ...

  9. git学习(持续踩坑中🤣)

    https://segmentfault.com/q/1010000002457936 常见指令: 一.创建版本库 $ mkdir learngit 创建文件夹 $ cd learngit 进入文件夹 ...

  10. Android UI性能优化实战 识别绘制中的性能问题

    转载请标明出处: http://blog.csdn.net/lmj623565791/article/details/45556391: 本文出自:[张鸿洋的博客] 1.概述 2015年初google ...