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 1695 GCD(容斥定理)

    GCD Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submis ...

  2. 温度测量【RTD】

    原理 温度是表征物体冷热程度的物理量,它可以通过物体随温度变化的某些特性(如电阻.电压变化等特性)来间接测量,通过研究发现,金属铂(Pt) 的阻值跟温度的变化成正比,并且具有很好的重现性和稳定性,利用 ...

  3. js--在页面元素上(移动到或获取焦点)、鼠标离开(或失去焦点)

    1.onfocus() 和 onblur() 是一对相反的事件 但是他们只支持一部分标签 W3C关于onblur的描述:http://www.w3school.com.cn/jsref/event_o ...

  4. 从JSON数据中取出相关数据

    参考: http://www.cnblogs.com/shuilangyizu/p/6019561.html JSON数据如下: { "total": 1, "rows& ...

  5. unity, AnimatorCullingMode的一个bug

    我在一个fbx节点上添加了一个Animator,CullingMode设置为Cull Update Transforms(即如果没有激活的SkinnedRenderer就不更新骨骼动画),然后我将这个 ...

  6. linux下C++的man文件安装

    GCC提供了一份c++的man文档,地址:ftp://gcc.gnu.org/pub/gcc/libstdc++/doxygen/ 下载最新版的文档,比如:libstdc++-api.20140403 ...

  7. Atitit.国际化中的日期与钱符号问题

    Atitit.国际化中的日期与钱符号问题 1. 用户名注册的问题 1 1.1. 不能限制用户名长度与特殊符号 1 2. 2.8月7号未必总写成8/7,有时也用7/8 2 3. 5.$未必总是指美元 3 ...

  8. [Objective C]super dealloc 调用时机

    转自:http://dcm19872007.blog.163.com/blog/static/86519374201311953739818/ objective-c 语言中最头疼的事就是内存释放,申 ...

  9. 高性能网络 | 你所不知道的TIME_WAIT和CLOSE_WAIT

    你遇到过TIME_WAIT的问题吗?   我相信很多都遇到过这个问题.一旦有用户在喊:网络变慢了.第一件事情就是,netstat -a | grep TIME_WAIT | wc -l 一下.哎呀妈呀 ...

  10. linux 清内存

    注意:首先我们需要使用sync指令,将所有未写的系统缓冲区写到磁盘中,包含已修改的 i-node.已延迟的块 I/O 和读写映射文件.否则在释放缓存的过程中,可能会丢失未保存的文件. 的值可以为0~3 ...