1.模块
sys模块
注意:python文件的文件名一定不能和下面的要导入的模块同名,如:sys_mokuai.py

windows下的python3里直接运行:
import sys    ------------ 导入系统中的sys模块
print(sys.path)   ------------- 打印环境变量,------>模块的使用方法:模块名称.具体某型功能名称
执行结果---->
C:\Users\Administrator\AppData\Local\Programs\Python\Python36\python.exe I:/pathon合集/python工作目录/string_valiable.py
['I:\\pathon合集\\python工作目录', 'I:\\pathon合集\\python工作目录', 'C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python36\\python36.zip', 'C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python36\\DLLs', 'C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python36\\lib', 'C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python36', 'C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python36\\lib\\site-packages']
进程已结束,退出代码0

在pycharm里也是这样的,运行结果和上面的一样的。
#_*_coding:utf-8_*_
# Author:chen
import sys
print(sys.path)

---> 'E:\\PycharmProjects\\pyday1', 此时,运行这个程序后,系统会到这些Python的环境变量中去找,当所有的路径里都没有时,会报错
....... 若存在,就加载该模块进来
.......

一般第三发库的默认安装位置:E:\python\base\lib\site-packages
   标准库的.......... .... E:\python\base\lib

分类:

标准库:不需要安装,可以直接导入就可以使用的库。比如:sys模块和os模块
第三方:必需下载,安装后才可以使用的库,比如:zhanggou

自定义模块:自己编写的.py结尾的文件

2,添加默认的 utf-8 编码

当看到关于 ASCII 编码的错误,那就在你的python 脚本的最上面加入这一行:
# _*_ coding: utf-8 _*_
这样你就在脚本中使用了 unicode UTF-8 编码,这些错误就不会出现了。

使用 # 在代码每一行的前一行为自己写一个注解,说明一下这一行的作用。

3,变量可以加减

例1:

a = 4
b = 5
c = 10
print('a/c =',a/c)

例2:

my_name = 'Zed A. Shaw'
my_age = 35 #not a lie
my_weight = 74 #inches
my_height = 184 #lbs
my_eyes = 'blue'
my_teeth ='white'
my_hair = 'brown'

print('let is talk about %s.'%my_name )
print('He is %d inches tall.'%my_weight) ------------------ 用%s也可以,整个程序中都用%s都可以。
print('He is %d pounds heavy.'%my_height)
print('Actually that is not too heavy.')
print('He is got %s eyes and %s hair.'%(my_eyes,my_hair))
print('His teeth are usually %s depending on the coffee.'%my_teeth)
#this line is tricky,try to get it exactly right
print('If I add %d,%d, and %d I get %d.'%(my_age,my_height,my_weight,my_age + my_height + my_weight)) #变量可以直接算术运算,运算符前后有空格

4,变量的多重引用(变量可以引用变量)
4.1 多个变量的直接调用
x = 'There are %d types of people.'% 10    ---------------> 此处的%前后有没有空格都不影响。都可以成功。
binary = 'binary'       #binary:二进制的。双重的,由两个东西组成的
do_not = "don't"
y = 'Those who know %s and those who %s.' %(binary,do_not)
print(x)
print(y)
print('I said: %r.'%x)     #变量必需在括号内,即括号内的内容代表打印的内容。括号外就不属于print的范围了
print('I said also:"%s".'%y)

4.2 把变量当成参数,调用时再导入
hilarious = False
joke_evaluation = "Isn't that joke so funny?! %r"    -----------> 此处不传参数,等到调用时再传参数。也可以。

print(joke_evaluation % hilarious)     ------------> 调用时再传参数(%前后有无空格都可以),传入的参数是定值也可以(%'sfaf'),是变量也可以(%xxx)

4.3 变量的叠加
w = 'This is the left side of ...'
e = 'a string with a right side.'

变量的叠加形式:
print (w + e)  --------> This is the left side of ...a string with a right side.
print (w,e)  --------> This is the left side of ... a string with a right side.
注意:采用 w + e这种方式:是将w和e连接起来,所以他们之间没有空格,即前后衔接的两个字符串后合并成一个字符串
采用传统的w,e这种方式,会将两个字符串都在一行显示,同时为了暗示是两个字符串,所以他们之间有一个空格,以便于区分这是两个变量。

5,脚本里传入参数 (Linux命令行里演示)

[root@nginx1 python]# cat 5.py
import sys

print(argv)
print(sys.argv[2])     # ------ 打印传入参数的第二个参数

执行:

[root@nginx1 python]# python 5.py 1 2 3
['sys_mod.py',1,2,3]   --------- 识别参数从0号开始,一次为0,1,2,3这样的
2    ---------(第2号参数,第三个参数)

6,os模块

Linux里面演示:

[root@nginx1 python]# ls
2.py 3.py 4.py 5.py 6.py 7.py a.py

[root@nginx1 python]# cat 6.py
import os
os.system('dir')

[root@nginx1 python]# python 6.py
2.py 3.py 4.py 5.py 6.py 7.py a.py
[root@nginx1 python]# vim 6.py

[root@nginx1 python]# cat 6.py
import os
print(os.system('dir'))

[root@nginx1 python]# python 6.py
2.py 3.py 4.py 5.py 6.py 7.py a.py
0            -------------------------------------------------     print打印一个os.system('dir')运行后的退出码。

Windows下python软件里运行:
import os
os.system('dir') ------------执行后打印当前路径下目录。会出现乱码,正常的。因为Windows默认输出不是UTF-8。
该命令在cmd的命令行里就不会报错,显示出的也不会有乱码。

驱动器 C 中的卷没有标签。
卷的序列号是 A2A7-A8AC
C:\Users\Administrator\AppData\Local\Programs\Python\Python36 的目
2017/08/10 周四 上午 08:27 <DIR> .
2017/08/10 周四 上午 08:27 <DIR> ..
2017/08/10 周四 上午 08:26 <DIR> DLLs
2017/08/10 周四 上午 08:26 <DIR> Doc
2017/08/10 周四 上午 08:26 <DIR> include
2017/08/10 周四 上午 08:26 <DIR> Lib
2017/08/10 周四 上午 08:26 <DIR> libs
2017/03/21 周二 下午 06:47 30,351 LICENSE.txt
2017/03/21 周二 下午 05:48 334,939 NEWS.txt
2017/03/21 周二 下午 06:44 100,504 python.exe
2017/03/21 周二 下午 06:42 58,008 python3.dll
2017/03/21 周二 下午 06:42 3,562,648 python36.dll
2017/03/21 周二 下午 06:44 98,968 pythonw.exe
2017/08/10 周四 上午 08:27 <DIR> Scripts
2017/08/10 周四 上午 08:26 <DIR> tcl
2017/08/10 周四 上午 08:26 <DIR> Tools
2016/06/09 周四 下午 10:53 87,888 vcruntime140.dll
7 个文件 4,273,306 字节
10 个目录 61,677,092,864 可用字节
0

在pycharm中运行可以成功,但有乱码。
import os
cmd_res = os.system('dir')    ---------> 将这个模块的这个功能来给变量赋值,调用windows里的命令:dir,若为Linux系统就用ls
print(cmd_res)
在pycharm里会有未识别的字符。在
?????? I ?е???? ???
??????к??? 0005-E127

I:\pathon???\python?????? ????

2017/09/04 ??? ???? 11:37 <DIR> .
2017/09/04 ??? ???? 11:37 <DIR> ..
2017/09/04 ??? ???? 11:36 <DIR> .idea
2017/09/04 ??? ???? 11:37 69 1.py
2017/09/04 ??? ???? 09:00 0 2.py
2 ????? 69 ???
3 ???? 164,514,689,024 ???????

进程已结束,退出代码0

注意:实际情况是:
os这个命令,你一旦调用,他就执行,但他的结果只输出到屏幕,不会输出给变量。

import os
cmd_res = os.system('dir')
cmd_res = os.popen('dir')
print ('--->',cmd_res)

?????? I ?е???? ???
??????к??? 0005-E127

I:\pathon???\python?????? ????

2017/08/15 ??? ???? 09:52 <DIR> .
2017/08/15 ??? ???? 09:52 <DIR> ..
2017/08/15 ??? ???? 09:29 <DIR> .idea
2017/08/15 ??? ???? 01:45 220 3.py
2017/08/15 ??? ???? 02:16 342 4.py
2017/08/14 ??? ???? 09:02 226 input.py
2017/08/15 ??? ???? 03:06 602 more_variable.py
2017/08/15 ??? ???? 08:54 188 print.py
2017/08/15 ??? ???? 09:52 92 string_valiable.py
2017/08/15 ??? ???? 02:40 594 variable.py
7 ????? 2,264 ???
3 ???? 177,133,514,752 ??????? -------------------------上面的这么多都是print os.system('dir')的结果
---> <os._wrap_close object at 0x0000000001E8E780> --------------------print os.popen('dir')的结果,内存的对象地址

进程已结束,退出代码0

........................................................................................................................

pycharm中运行:将结果从内存里读出来:

import os
cmd_res = os.system("dir") ----------------------显示出了的有乱码
cmd_res = os.popen('dir').read()
print ('--->',cmd_res) ---------------------------显示出的是正确的代码,无乱码

运行结果如下:

?????? I ?е???? ???
??????к??? 0005-E127

I:\pathon???\python?????? ????

2017/08/15 ??? ???? 09:56 <DIR> .
2017/08/15 ??? ???? 09:56 <DIR> ..
2017/08/15 ??? ???? 09:54 <DIR> .idea
2017/08/15 ??? ???? 01:45 220 3.py
2017/08/15 ??? ???? 02:16 342 4.py
2017/08/14 ??? ???? 09:02 226 input.py
2017/08/15 ??? ???? 03:06 602 more_variable.py
2017/08/15 ??? ???? 08:54 188 print.py
2017/08/15 ??? ???? 09:56 99 string_valiable.py
2017/08/15 ??? ???? 02:40 594 variable.py
7 ????? 2,271 ???
3 ???? 177,133,514,752 ???????
---> 驱动器 I 中的卷是 软件
卷的序列号是 0005-E127

I:\pathon合集\python工作目录 的目录

2017/08/15 周二 下午 09:56 <DIR> .
2017/08/15 周二 下午 09:56 <DIR> ..
2017/08/15 周二 下午 09:54 <DIR> .idea
2017/08/15 周二 下午 01:45 220 3.py
2017/08/15 周二 下午 02:16 342 4.py
2017/08/14 周一 下午 09:02 226 input.py
2017/08/15 周二 下午 03:06 602 more_variable.py
2017/08/15 周二 上午 08:54 188 print.py
2017/08/15 周二 下午 09:56 99 string_valiable.py
2017/08/15 周二 下午 02:40 594 variable.py
7 个文件 2,271 字节
3 个目录 177,133,514,752 可用字节

进程已结束,退出代码0

..................................................
补:os模块在当前路径下创建一个目录:

import os
os.mkdir('new_dir')   ------->运行后在pycharm 的左边菜单里可以看到会多出的一个新建的目录

7.自定义模块的调用,注意,模块名尽量不用中文

7.1,先写一个自定义的模块:login.py
_username = 'alex'
_password = '123'
user = input("请输入用户名:")
pwd = input("请输入密码:")
if user = _username and pwd = _password:
print ("WELCOME USER %s login"% user)
else:
print("wrong username or password")
print(user,pwd)

7.2 ,调用方法:a.py

import login.py   -------------> 首先会在当前路径下找login.py这个模块,当没有时,会到Python的环境变量里去找。找到就执行
执行就行了,正常库的位置为:C:\python\base\lib\site-package\,若在这两个地方都找不到,就会报错。

8 .pyc是什么文件
计算机不能识别高级语言,当我们运行一个高级语言时,就需要“编译”或者“解释”,
编译语言:在程序执行之前就编译,直接执行就行了。例如c语言,快,效率高,
解释语言:在程序运行时,逐步进行解释,然后运行,例如:Ruby 和python

JAVA 是一种先编译后解释的语言。执行过程:
1,javac hello.java ----进行 预编译,完成后也不是机器语言,也是一个半成品
2,Java hello ----

执行python hello.py,第一项工作是编译,然后才是激活了python的解释器,告诉解释器,你要开始工作了,python其实也是一门先编译后解释的语言
PycodeObject 就是Python编译器真正编译成的结果。python程序运行时,编译的结果保存在内存中的PyCodeObject中。当运行结束时,解释器则把PYCodeobjiect写回到pyc文件中,当python程序第二次运行时,首先程序会到硬盘中寻找pyc文件,如果找到,直接载入,否则就重复上面的操作。
所以:pyc是PyCodeObject的一种永久化的保存方式
注意:python的会自带检查pyc。当你更新了某个程序的元代码,运行时,python会自动检查更新时间,当发现不一致时,会重新运行,重新生成pyc文件,pyc就是半成品吧,不是机器码,大概百分之15左右,

9,python的比较大小运算

python可以判断大小,返回布尔值,真就返回True,假就返回False,可以直接进行加减乘除运算。直接返回运算结果。运算符号前后是否加空格都不影响。

print('Is it greater?', 5 > -2)
print ('Is it greate?','5 > -2')
print('Is it less or equal',5 <= 2)
------->

Is it greater? True
Is it less or equal False

进程已结束,退出代码0

print(5+6+6+4)
print(5 + 45465 +5454545+6564)    ---------> 进行数据自动运算,数值前后不用加空格也可以
print(5*6352/564+5487+63541-5645)
------------>
21
5506579
63439.31205673759

进程已结束,退出代码0

10、字符串相加:直接前后衔接。
w = 'sa af a asf afasf'
e = 'aaaaaaaaa aaaaaaaaaaaaaaa'
print (w + e)

-------->
sa af a asf afasfaaaaaaaaa aaaaaaaaaaaaaaa

11,数据类型

11.1 int:数字、整数形式, int 在32位系统里:取值范围:-2**31 ~ 2**31-1 大概42亿多
                                在64位系统里:取值范围:-2**63 ~ 2**63-1
长整形,long 理论上可以无限长,在python3里好像没有了
验证:type(2**100)--运行下
浮点型,float 带有小数的实数
复数型,complex 由实数和虚数组成,一般形式:x + yi , -5 + 4j 这里的5和4为实数,j为虚数

补:52.3E-4 = 52.3 * 10**4 =523000

11.2 布尔值:

1 真 -------- True
0 假 -------- False

11.3 字符串:
Bytes类型:字节数据类型,二进制的数据类型,不同于字符串。---和字符串相互转换
msg = "我爱北京天安门"
print(msg)
print(msg.encode())---------->默认就用utf-8,进行编码后打印出来
再转回来:
print(msg.encode().decode()) ---------> 先安装默认设置编码,再解码,又成为原来的这样了

str ---->bytes:encode bytes ------> str :decode

12, 三元运算
result = 值1 if 条件 else 值2

例:

a,b,c = 995,145,5    -------->   一次性给三个变量赋值
d =a if a >b else c
print(d)   ---->如果a大于b,那d的值就是a,如果a不大于b,那d的值就是c , 此处d的值应为995。
简化了表达式:

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

13,进制
二进制: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

注意:16进制,用H做后缀或者0X做前缀,例如:BH --->12(十六进制的)
0X23 --->(十六进制的)23

14,列表

14.1,列表取值:切片
例:

name = ['zhang','hehee','guxian','hejk']
print(name)
print(name[0]) --->print(name[0],name[2])
print(name[1:3]) ----->切片:取从1开始的到3结束(不包括3)的连续的值,又叫:顾头不顾尾
print(name[-1]) ----->取最后一个位置,倒数第二个位置:[-2]
print(name[-3:-1]) ---->取出倒数第三个数,倒数第二个数
print(name[-2:])------>取出倒数两个数,不管怎么取,切片取值的都是从左往右取
print(name[0:3]) == print(name[:3])

14.2,列表追加值:
末尾追加:
names = ['a','b','c','d','e','f']
names.append('xxx')
print(names)

中间追加:(插入后是什么位置就用什么数字)
names = ['a','b','c','d','e','f']
names.insert(1,'yyy') --------------- 这里的1这个位置:就是列表中的1的位置,按照顺序数是第二个。

改某个值
names = ['a','b','c','d','e','f']
names[2] = 'xxx'
print(names) --->a xxx b c d e f

删除某个值
names = ['a','b','c','d','e','f']
names.remove('b') --------方法1
names.pop(1) ---------方法2,指定删除列表中顺序号为1的元素,不写下标,默认删除最后一个
del names[1] ---------方法3,指定删除列表中顺序号为1的元素。

查询某个值在什么位置(以数字显示的):
names = ['a','b','c','d','e','f']
print(names.index('c')) ------->2
print( names[names.index('c')] ) ---->c

统计列表中某个值的个数:
names = ['a','b','c','d','e','f','d']
print(names.count('d')) ------->2

清空列表内容:clear
names = ['a','b','c','d','e','f']
print(names)
names.clear()
print(names) ----------> []

反转列表:reverse
names = ['a','b','c','d','e','f']
print(names)
names.reverse()
print(names)

排序:sort 按照ASCII码里的规则来的,特殊字符最前面--》 数字 ---》大写字母 ---》小写字母
names = ['42a','Ab','Ac','d','#e','f']
print(names)
names.sort()
print(names)

加入别的列表:extend
names = ['a','b','c','d','e','f']
names2 = [1,2,3,4]
names.extend(names2) ---------> 在a的列表末尾再加上b的列表,会变成新的重新生成后的列表。
print(names,names2) -->[a,b,c,d,e,f,g,1,2,3,4] [1,2,3,4]

注意:extend与append的区别:append追加一次只追加一个元素(也可以将整个列表当成一个元素追加进去了),而extend是追加整个列表,将列表里的每一个元素都作为新元素追加到原列表中去。
names=['a','b','c','d','e','f','g']
names2=[1,2,3,4,5,6,7,8,9]
names.append(names2)
print(names)
执行后的情况如下:
['a', 'b', 'c', 'd', 'e', 'f', 'g', [1, 2, 3, 4, 5, 6, 7, 8, 9]]

删除变量:del
names = ['a','b','c','d','e','f']
names2 = [1,2,3,4]
del names2
print(names,names2) ---------->此时会报错,因为names2已经被删除掉了。

复制列表:copy
names = ['a','b','c','d','e','f']
name2 = names.copy()
print(names)
print(name2)
总结:清空列表用:name.clear(),列表删除用del name

names = ['a','b','c','d','e','f']
name2 = names.copy()
print(names)
print(name2)
names['2'] = '和'
print(names) -----会改
print(name2) -----不变

补充:列表中可以再添加子列表:
names =[1,2,3,4,5,['a','b','c','d','e','f']6,7,8,9]
print(names) ————》[1,2,3,4,5,['a','b','c','d','e','f']6,7,8,9] 子列表仍然被当成一个元素来处理
调取子列表的第1个元素的值:print(names[5][0])
将 子列表的第1个元素的值改为fuck:names[5][0] = 'fuck'

names =[1,2,3,4,5,['a','b','c','d','e','f']6,7,8,9]
name2 = names.copy()
print(names)
print(name2)
names[3] = 'FUCK'
names[5][0] = 'fuck' ------------- 注意:此时的写法仅限于列表中包含了子列表时的情况,因为子列表第6号位置,故第一个位置为[5],子列表里面的位置也是按照从0号开始的原则进行排列
print(names)
print(name2) ---------------此时的原列表不变,而子列表里的内容会改变。
解释:copy:浅copy,只复制了第一层,即第一层的不变,对里面的第二层的子列表。则copy不到,即一旦发生改变,则变量立即跟着改变

15,copy的三种方式:结果都一样。
person = ['name',['a',100]]
p1=person.copy()   # 直接复制
p2=person[:] --------- 无开头和无结尾,即全部copy
p3=list(person)

例:

person = ['name',['save-money',100]]
p1=person[:]
p2=person[:]
p1[0]='alex'
p2[0]='fengjie'
print(p1)
print(p2)

p1[1][1]=50
print(p1) -------->联合账号,一个变,其他的账号跟着变。
print(p2)

.................................................................................................................................................

16,元组:tuple

就是列表,跟列表一样,不同之处:元组不能增删改,一旦创建,永远就是这样。又叫只读列表,只能查。
元组的写法也由中括号降为小括号了,即小括号即为元组。
names = ('aaa','bbb','ccc')

只有两个方法:count 和index。
print(names.count('bbb')) ------>获取下标
print(names.index('ccc')) ------>获取下标
注意:当原先的元组n = ('0122',2,3,4,5,6,'098',7,8,9,99,9897)时,
print(n.index(9897)),此时的9897不能加引号,若加了会报错。因为此时默认当成数字类型,加了引号就当成了字符串类型的。所以会报错。

17,购物车程序实例:
product_list = [('iphone',5800),('mco',9800),('bike',800),('watch',10600),('coffee',31),('alex python',120)]
salary = input('Input you salary:') -------此时输入的是字符串类型的
shopping_list = []
if salary.isdigit(): ----- 如果是1 或者2等通过isdigit判断后就是真,即本质为数字,但为字符串的形式
salary = int(salary)
while True:
for item in product_list:
print(product_list.index(item),item) -------------打印商品列表
user_choice = input('wath do you want to buy: ') ------- 让用户选择买什么东西
if user_choice.isdigit(): --------判断用户输入的必需是数字类型
user_choice = int(user_choice)
if user_choice < len(product_list) and user_choice >-1:
p_item = product_list[user_choice] -------------通过下标包商品取出来
if p_item[1] <= salary: #买得起
shopping_list.append(p_item)
salary -= [p_item[1]
print('Added %s into shopping cart,you current balance is %s' %(p_item,salary)) #红色:31,绿色32,%s改为:\033[31;1m%s\033[0m
else:
print('\033[41;1m你的余额只剩[%s]',买不了了\033[0m % salary) #31为红色,41为背景红色,32为绿色,42为背景为绿色
else:
print('product code [%s] is not exist!'% user_choice)
elif user_choice == 'q':
print('-------------- shopping list------------')
for p in shopping_list:
print(p)
print('you current balance:',salary)
exit()
else:
print('invalid option')

.......................................................................................................................................................................

18,字符串的操作

name = 'alex'
print(name.capitalize()) ------- 首字母大写
print(name.count('a')) ------- 统计有几个字符“a”

print(name.center('50','-')) ----- 一共打印50个字符。不够的就两边用‘-’补上,注意:50上面不能加‘’,改成:print(name.center(50,'_'))
print(name.ljust(50,'=')) ------ 一共打印50个字符,若不够在末尾用'='补上
print(name.rjust(50,'=')) ------ ..........................前面.........

print(name.encode()) ------------ 将字符串转成二进制
print(name.endwith('ex')) ----------判断字符串是否以‘ex’结尾,判断邮件地址是否以.com结尾
print(name.find('e')) ----------字符串也可以切片,每个字符作为一个单位来切,作用同列表,命名顺序:0,1,2 ...

字符串里有变量的处理:
name = "my \t name is {name} and i am {year} old"
* print(name.format(name='alex',year=33)) ---------format :格式转换后传参数进去
--->
my name is alex and i am 23 old

* print(name.format_map({'name':'alex','year':'12'})) ---------字典用法(很少用,只用format就可以了)
---->
my name is alex and i am 12 old
* print(name.index()) ---------- 打印下标
* print(name.isalnum()) -------- 判断是不是:阿拉伯数字 + 阿拉伯字符(所有的英文字符加1到9),特殊字符就不是,[比如直接判断:print('ab123'.isalnum()) ---> True ]
————>
False (或者:True)

print('ab33'.isalpha()) ------- 是否为纯英文字符,返回值为True或者False
print('adf'.isdecimal()) -------- 是否为十进制数字, .....................用处不大。用不到

print('adb'.isdigit()) ------ 判断是否为正整数
print('adfa'.isidentifier()) ------ 用得少,标识符,判断是不是一个合法的标识符即‘是不是一个合法的变量名。’

print('adfs'.islower()) ------ 判断是否为小写
print('adf'.isupper()) ------- 是否为大写
print('ADFdfs'.lower()) ---------将字符串中的大写变成小写
print('afasf'.upper()) -----变成大写
print('Alie li'.swapcase()) -------------大小写全部相互转换

print('afad.isnumeric()) --------是否为数字,整数就返回True,小数和字母就返回False,和isdigit作用相同,用处不大
print(' '.isspace()) ----- 是否为空格,
print('af'.istitle()) ------- 字符串里的每个单词的首字母是否为大写,返回值:True 和False

print('' '+'.join(['1','2','3','4']))
-----> 1+2+3
将数组连在一起打印出来,经常用到。

print('afdf\n'.rstrip()) 去掉字符串右边的空格和回车
print('\ndfaf'.lstrip()) ...........左。。。。。。。
print(' afasf\n'.strip()) 去掉字符串中所有的空格和回车

字符串里的字母转换
p = str.maketrans('abcde','12345') -----------------> 定义转换的规则
print('alex li'.translate(p)) ------------------> 引用上面定义好的转换规则并打印出来
---->
1l5x li

name = 'my name is name,and i am year old'
p = str.maketrans('abcde','12345')
print(name.translate(p))
执行结果如下:
my n1m5 is n1m5,1n4 i 1m y51r ol4

单个字母的替换
print('alex'.replace('l','L')) ---------------->注意:中间的标点符号为. 而不是,
print('alex li'.replace('l','L',1)) --------------->仅替换第一个L字母,不指定就是所有的L字母都替换

查找单个字母的位置
print('alex li'.rfind('e')) ---> 3 找到最后一个这个字母的小标并返回

将字符串按照按照空格分割成列表:
print('alex lile'.split()) -----> ['alex','lile']
按照指定的字母分:
print('alex li'.split('l')) -----> ['a','ex','i']
按照换行符来分:
print('1+2\n+3+4'.splitlines()) -----> ['1+2','3+4']------------完全可以用.split('\n')来代替

19,enumerate用法,打印角标和元素

a=['a','b','c','d']
for i in enumerate(a):
print(i) ---------->
(, 'a')
(, 'b')
(, 'c')
(, 'd')

即顺带将列表里的角标也打印出来了。

列表和字典及几何是最长用的

20,字典

用大括号表示,字典是一种key-value的数据类型,特点:dict是无序的,因为字典是没有下标的。字典通过key去找值,所以不需要下标。

增删改查操作:

info = {
'stu001':'aaa', # ------------------ 注意:每个值的后面有逗号,分割!!!!!!
'stu002':'bbb',
'stu003':'ccc', # -------->最后一个元素的逗号可以不写。
}

查询:

print(info) ----> [ 'stu001':'aaa','stu002':'bbb','stu003':'ccc'] ----------注意,这个不一定是按照先后顺序显示的,完全是随机的顺序显示
print(info['stu001']) ----> aaa

修改

info['stu001'] =''    #  确保字典里有这个值就用这个方法。否则不要用这个方法,若没有会报语法错,exit code 1
print(info) ----> [ 'stu001':'','stu002':'bbb','stu003':'ccc']
print(info.get('stu007')) # 若没有则提示:None ,同时exit code 0

增加
向字典里添加一条健值,就是直接定义健值就可以了:

info['stu005'] =''   # --------- 添加一个健值和修改一个健值的命令相同,如果这个key存在,就修改对应的值,若不存在就是创建这个值。
print(info) --->
['stu005':'',stu001':'aaa','stu002':'bbb','stu003':'ccc']

删除

del info['stu001']
print(info)
info.pop('stu001') ---- 和del info的作用相同
del info ----> 删除整个字典

判断字典里有没有某个键或者元素

print('stu003' in info)

打印所有的值:

info.vallues()

打印所有的key

info.key

实例:多级字典的嵌套及操作

data = {
'北京': {
"昌平": {
"沙河": ["oldboy", "test"],
"天通苑": ["链家地产", "我爱我家"]
},
"朝阳": {
"望京": ["奔驰", "陌陌"],
"国贸": {"CICC", "HP"},
"东直门": {"Advent", "飞信"},
},
"海淀": {},
},
'山东': {
"德州": {},
"青岛": {},
"济南": {}
},
'广东': {
"东莞": {},
"常熟": {},
"佛山": {},
},
}
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("\t", i2)
choice2 = input("选择进入2>>:")
if choice2 in data[choice]:
while not exit_flag:
for i3 in data[choice][choice2]:
print("\t\t", i3)
choice3 = input("选择进入3>>:")
if choice3 in data[choice][choice2]:
for i4 in data[choice][choice2][choice3]:
print("\t\t", i4)
choice4 = input("最后一层,按b返回>>:")
if choice4 == "b":
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

python基础之2的更多相关文章

  1. python之最强王者(2)——python基础语法

    背景介绍:由于本人一直做java开发,也是从txt开始写hello,world,使用javac命令编译,一直到使用myeclipse,其中的道理和辛酸都懂(请容许我擦干眼角的泪水),所以对于pytho ...

  2. Python开发【第二篇】:Python基础知识

    Python基础知识 一.初识基本数据类型 类型: int(整型) 在32位机器上,整数的位数为32位,取值范围为-2**31-2**31-1,即-2147483648-2147483647 在64位 ...

  3. Python小白的发展之路之Python基础(一)

    Python基础部分1: 1.Python简介 2.Python 2 or 3,两者的主要区别 3.Python解释器 4.安装Python 5.第一个Python程序 Hello World 6.P ...

  4. Python之路3【第一篇】Python基础

    本节内容 Python简介 Python安装 第一个Python程序 编程语言的分类 Python简介 1.Python的由来 python的创始人为吉多·范罗苏姆(Guido van Rossum) ...

  5. 进击的Python【第三章】:Python基础(三)

    Python基础(三) 本章内容 集合的概念与操作 文件的操作 函数的特点与用法 参数与局部变量 return返回值的概念 递归的基本含义 函数式编程介绍 高阶函数的概念 一.集合的概念与操作 集合( ...

  6. 进击的Python【第二章】:Python基础(二)

    Python基础(二) 本章内容 数据类型 数据运算 列表与元组的基本操作 字典的基本操作 字符编码与转码 模块初探 练习:购物车程序 一.数据类型 Python有五个标准的数据类型: Numbers ...

  7. Python之路【第一篇】python基础

    一.python开发 1.开发: 1)高级语言:python .Java .PHP. C#  Go ruby  c++  ===>字节码 2)低级语言:c .汇编 2.语言之间的对比: 1)py ...

  8. python基础之day1

    Python 简介 Python是著名的“龟叔”Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言. Python为我们提供了非常完善的基础代码库,覆盖了 ...

  9. python基础之文件读写

    python基础之文件读写 本节内容 os模块中文件以及目录的一些方法 文件的操作 目录的操作 1.os模块中文件以及目录的一些方法 python操作文件以及目录可以使用os模块的一些方法如下: 得到 ...

  10. python基础之编码问题

    python基础之编码问题 本节内容 字符串编码问题由来 字符串编码解决方案 1.字符串编码问题由来 由于字符串编码是从ascii--->unicode--->utf-8(utf-16和u ...

随机推荐

  1. HDU 4280Island Transport(网络流之最大流)

    题目地址:pid=4280">http://acm.hdu.edu.cn/showproblem.php? pid=4280 这个题是一个纯最大流模板题..就是用来卡时间的.. 还好我 ...

  2. 【Arduino】超声波模块(HC-SR04)

    还好,这个模块有现成的库能够用: https://github.com/bosgood/arduino-playground/tree/master/lib/HCSR04Ultrasonic 下面仅仅 ...

  3. atitit.资源释放机制--attilax总结

    atitit.资源释放机制--attilax总结 1. .全手工, 1 2. 引用计数, 1 2.1. 成本也显而易见. 1 2.2. 循环引用的问题, 2 2.3. 引用计数方式事实上也有经典的卡顿 ...

  4. centos7下mysqldump+crontab自动备份数据库

    1.创建文件夹(存放备份数据) mkdir /bak mkdir /bak/mysqldata 2.编写脚本 vi /usr/sbin/bakmysql.sh 脚本内容如下 DATE=`date +% ...

  5. AutoFac文档5(转载)

    目录 开始 Registering components 控制范围和生命周期 用模块结构化Autofac xml配置 与.net集成 深入理解Autofac 指导 关于 词汇表 扫描 autofac可 ...

  6. php 不等待返回的实现方法(异步调用)

    PHP异步执行的常用方式常见的有以下几种,可以根据各自优缺点进行选择: 1.客户端页面采用AJAX技术请求服务器优点:最简单,也最快,就是在返回给客户端的HTML代码中,嵌入AJAX调用,或者,嵌入一 ...

  7. JUC组件扩展(三):BlockingQueue(阻塞队列)详解

    一. 前言 在新增的Concurrent包中,BlockingQueue很好的解决了多线程中,如何高效安全“传输”数据的问题.通过这些高效并且线程安全的队列类,为我们快速搭建高质量的多线程程序带来极大 ...

  8. ubuntu16.04安装jekyll 3.3.1

    本次安装的ekyll为最新的3.3.1版本. 一.预备工作,因位jekyll需要很多软件的支持,所以准备工作要做足. Ruby (including development headers, v1.9 ...

  9. Atitit.异步编程 java .net php python js 的比较

    Atitit.异步编程 java .net php python js 的比较 1. 1.异步任务,异步模式,  APM模式,,  EAP模式, TAP 1 1.1.       APM模式: Beg ...

  10. 每日英语:Dishing the Dirt on Hand-Washing Guidelines

    Americans aren't washing their hands nearly as often and as thoroughly as they should, according to ...