Python之路——琐碎知识

一、 __future__ 模块

Guido van Rossum (Python之父)拥有一架时光机,因为在人们通常要求增加语言新特性的时候,这个特性通常都已经实现了。当然我们一般人是不允许进入这架时光机的。

Guido将时光机的一部分以__future__这个模块的形式融入了python。通过它可以导入那些在未来会成为标准Python组成部分的新特性。

二、 逻辑运算

'''x or y x True,则返回x'''

>>> print(1 or 2)
1
>>> print(2 or 1)
2
>>> print(0 or 1)
1
>>> print(2 or 0)
2

'''x and y x True,则返回y'''

>>> print(0 and 2)
0
>>> print(2 and 0)
0
>>> print(1 and 2)
2
>>> print(2 and 1)
1
# “>","<"的优先级高于not > and > or ,True 和 False 不会转化为1或0
>>> print(2 or 1<3)
2
>>> print(1<3 or 2)
True
>>> print(1>3 and 2)
False
>>> print(1<3 and 2)
2
>>> print(True or 0)
True
>>> print(True and 0)
0
>>> print(False or 2)
2
>>> print(False and 2)
False


三、 格式化输出

格式一:

 1 name = input("请输入姓名:")
 2 age = input("请输入年龄:")
 3 height = input("请输入身高:")
 4 msg = "my name is %s, my age is %s, my height is %s, my process is 80%%" %(name,age,height)
 5 print(msg)
 6 # 运行结果:
 7 # 请输入姓名:liuyankui
 8 # 请输入年龄:25
 9 # 请输入身高:175
10 # my name is liuyankui, my age is 25, my height is 175, my process is 80%
View Code


格式二:

 1 name = input("请输入姓名:")
 2 age = input("请输入年龄:")
 3 job = input('请输入工作:')
 4 hobbie = input('请输入爱好:')
 5 msg = '''------------ info of %s -----------
 6 Name  : %s
 7 Age   : %d
 8 job   : %s
 9 Hobbie: %s
10 ------------- end -----------------''' %(name,name,int(age),job,hobbie)
11 print(msg)
12 # 输出结果
13 # 请输入姓名:liuyankui
14 # 请输入年龄:25
15 # 请输入工作:IT
16 # 请输入爱好:PingPong
17 # ------------ info of liuyankui -----------
18 # Name  : liuyankui
19 # Age   : 25
20 # job   : IT
21 # Hobbie: PingPong
22 # ------------- end -----------------


格式三:

 1 name = input("请输入姓名:")
 2 age = input("请输入年龄:")
 3 job = input('请输入工作:')
 4 hobbie = input('请输入爱好:')
 5 msg = '''------------ info of {0} -----------
 6 Name  :{0}
 7 Age   : {1}
 8 job   : {2}
 9 Hobbie: {3}
10 ------------- end -----------------''' .format(name,age,job,hobbie)
11 print(msg)
12 
13 # 运行结果:
14 # 请输入姓名:liuyankui
15 # 请输入年龄:25
16 # 请输入工作:IT
17 # 请输入爱好:PingPong
18 # ------------ info of liuyankui -----------
19 # Name  :liuyankui
20 # Age   : 25
21 # job   : IT
22 # Hobbie: PingPong
23 # ------------- end -----------------

四、 int 和bool值互相转换

int  ----> bool   非零转换成bool True   0 转换成bool 是False

 1 >>> print(bool(2))
 2 True
 3 >>> print(bool(1))
 4 True
 5 >>> print(bool(0))
 6 False
 7 >>> print(bool(-2))
 8 True
 9 # bool ----> int   False ----> 0; True ----> 1
10 >>> print(int(False))
11 0
12 >>> print(int(True))
13 1

五、 while...else...语句

count = 0
while count <= 5:
    count += 1
    if count == 3:break
    print("Loop",count)
else:   # 当break打断while循环,else的内容就不再执行
    print("循环正常执行了")
print("------------------")

六、 Python字符串

 1 # 字符串
 2 
 3 # 字符串索引
 4 a = 'abcdefghijklmn'
 5 print(a[0])  # a
 6 print(a[3])  # d
 7 print(a[-1]) # n
 8 print(a[-5]) # j
 9 
10 # 字符串切片
11 # 切片是通过索引(索引:索引:步长)截取字符串的一段,形成新的字符串,
12 # 原则就是顾头不顾腚
13 a = 'abcdefghijklmn'
14 print(a[0:3])   # abc
15 print(a[2:5])   # cde
16 print(a[0:])    # abcdefghijklmn
17 print(a[0:-1])  # abcdefghijklm
18 print(a[0:5:2]) # ace
19 print(a[5:0:-2])# fdb
20 
21 # 字符串常用方法
22 name = 'liu-yan*kui LIU'
23 # 首字母大写
24 print(name.capitalize())    # Liu-yan*kui liu
25 # 大小写翻转
26 print(name.swapcase())      # LIU-YAN*KUI liu
27 #每个单词的首字母大写
28 print(name.title())         # Liu-Yan*Kui Liu
29 
30 # 内同居中,总长度,空白处填充
31 ret = name.center(30,'-')
32 print(ret)
33 # 输出:
34 # -------liu-yan*kui LIU--------
35 
36 
37 
38 # 数字符串中元素出现的个数
39 a1 = 'liuyankuiliuyankui'
40 print(a1.count('i'))    # 4
41 print(a1.count('liu'))  # 2
42 print(a1.count('l',0,12))# 2
43 
44 # 	前面的补全,默认将一个tab键变成8个空格,如果tab前面的字符不足8个,则补全8个,
45 # 如果tab键前面的字符长度超过8个不足16个,则补全16个,以此类推
46 a2 = 'hfdgdjjlk	lkj	lk'
47 ret3 = a2.expandtabs()
48 print(ret3) # hfdgdjjlk       lkj     lk
49 
50 a4 = 'jgklajlkajioufgakljsakj'
51 # startswith: 判断是否以...开头
52 # endswith: 判断是否以...结尾
53 ret4 = a4.endswith('ajlk',2,8)  # 顾头不顾腚
54 print(ret4) # True
55 ret41 = a4.startswith('la',3,9)
56 print(ret41)    # True
57 
58 # 寻找字符串中的元素是否存在
59 ret5 = a4.find('kl',2,10) # 返回的是找到的元素的索引,如果找不到返回-1
60 print(ret5) # 2
61 
62 ret51 = a4.index('aj',4,13) # 返回找到元素的索引,找不到报错
63 print(ret51)    # 4
64 
65 # split 以什么分割,最终形成一个列表,此列表不含有这个分割的元素
66 ret6 = a4.split('a')
67 print(ret6) # ['jgkl', 'jlk', 'jioufg', 'kljs', 'kj']
68 ret91 = 'title,Tilte,atre,'.rsplit('t',1) # 从右边开始分割,分割一次
69 print(ret91)    # ['title,Tilte,a', 're,']
70 
71 ret92 = 'title,Tilte,atre,'.rsplit('t',3) # 从右边开始分割,分割3次
72 print(ret92)    # ['ti', 'le,Til', 'e,a', 're,']
73 
74 
75 # format的三种玩法,格式化输出
76 print('{} {} {}'.format('egon',18,'male'))  # egon 18 male
77 print('{1} {0} {1}'.format('egon',18,'male'))    # 18 egon 18
78 print('{name} {age} {sex}'.format(sex = 'male',name = 'liuyk',age = 18))    # liuyk 18 male
79 
80 # strip
81 b1 = '--   ***liuyankuih*****   --'
82 print(b1.strip('- *'))  # liuyankuih
83 print(b1.lstrip(' *-'))  # liuyankuih*****   --
84 print(b1.rstrip('* -'))  # --   ***liuyankuih
85 
86 # replace
87 name2 = 'alex say: i have one tesla, my name i alex'
88 print(name2.replace('alex','SB',1)) # 1 是只替换一次
89 
90 name3 = 'liuyankui163'
91 print(name3.isalnum())  # 字符串由字母或数字组成
92 print(name3.isalpha())  # 字符串只由字母组成
93 print(name3.isdigit())   # 字符串只由数字组成
View Code

 

七、 for循环

t1 = 'sdkslflggjad'
for i in t1:
    print(i)

 八、 小数据池

 1 #数字,字符串,小数据池
 2 #数字的范围 -5 -- 256
 3 #字符串:1,不能含有特殊字符;
 4 #        2. s*20 还是同一个内存地址,超过则两个
 5 # i1 = 2
 6 # i2 = 2
 7 # print(i1 is i2) # True
 8 
 9 # s1 = 'a'*20
10 # s2 = 'a'*20
11 # print(s1 is s2)   # True

九、is

1 # = 赋值 == 比较值是否相等   is 比较,比较的是内存地址  id(内容)
2 # li1 = [1,2,3]
3 # li2 = li1
4 # li3 = li2
5 # print(id(li1),id(li2))
原文地址:https://www.cnblogs.com/liuyankui163/p/8041157.html