python 系列(1) 变量和数据类型

Posted on Posted in python

## python 语法规则

- 统一缩进,4个空格或tab,缩进相同的语句被认为是出于同一个代码块
- 语句结尾一般不需要分号,一般来说一条语句占用一行
- 在python中也可以使用分号将两条语句写在一行。eg: print 'a';print 'b'
- 当一行很长时候,python 可以用\符号折行显示
- 标识符的第一个字符必须是字母表中的字母或者下划线,其他部分字母下划线和数字组成
- 标识符名称对大小写敏感
- python 用#注释。多行注释,""" 或者 '''
- 以 #! 开头的称为组织行,告诉 linux/unix 执行 python 程序的时候,应该运行哪个解释器。#!/usr/bin/python
- 兼容性标识, #coding=utf-8
- 标识符是电脑语言中允许作为名字的有效字符串集合

## 变量

- python是弱类型语言,无需申明变量类型
- 每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建
- 等号=运算符左边是一个变量名,右边是值
- 在程序当中随时改变变量的值,python 将记录变量的最新值
- 变量名只能包含数字字母下划线,数字不能做开头
- 变量名不能包含空格
- 大小写敏感
- 可以同时多个变量赋值
- 不要将关键字和函数名做变量名
- 变量名应该简短并具有描述性
- 慎用小写字母i 和大写字母 O,容易看成1和0

#### 变量命名

- 匈牙利命名法。基本原则:变量名=属性+类型+对象描述
- 驼峰命名。 userName
- 帕斯卡命名。UserName

## 6种标准数据类型

- number 数字
- string 字符串
- list 列表
- tuple 元祖
- sets 集合
- dictionary 字典

#### 数字number

> 可以用type(var)输出变量类型

- python2: int,long,float,bool,complex(复数)
- python3: int,float,bool,complex(复数)

1. float : 可以用e代替10。eg:1.23*10的9次方,1.23e9
2. bool : 只有Ture和False
3. 复数 :a = complex(3,4) => 3+4j, abs(a) => 5

#### 字符串

> 字符串相等的条件:长度相等,并且各个对应位置上的字符都相等。

> 单引号,双引号,三单引号,三双引号

###### 字符串函数

> dir(a) 查看属性方法

> help(a.replace) 查看帮助文档

1. join

  1. In [1]: testList = ['a','b','c']  
  2. In [2]: testStr = ',' . join(testList)  
  3. In [3]: testStr  
  4. Out[3]: 'a,b,c'  

2. replace

> 替换字符串

> 语法:str.replace(old, new[, count])

- old -- 将被替换的子字符串。
- new -- 新字符串,用于替换old子字符串。
- count -- 可选字符串, 替换不超过 count 次。不写就是全部替换

  1. In [1]: a = 'aaaaa'  
  2. In [2]: b = a.replace('a','b',3)  
  3. In [3]: b  
  4. Out[3]: 'bbbaa'  

3. capitalize

> 将字符串的第一个字母变成大写,其他字母变小写

> 语法: str.capitalize()

  1. In [1]: testStr = "this Is test String……"  
  2. In [2]: print testStr.capitalize()  
  3. This is test string……  

4. center

> 返回一个原字符串居中,并使用空格填充至长度 width 的新字符串。默认填充字符为空格。

> 语法:str.center(width[, fillchar])

- width -- 字符串的宽度
- fillchar -- 单个字符

  1. In [1]: testStr = "this is test string"  
  2. In [2]: print testStr.center(40)  
  3.           this is test string  
  4. In [3]: print testStr.center(40,'a')  
  5. aaaaaaaaaathis is test stringaaaaaaaaaaa  

5. count

> 统计字符串里某个字符出现的次数。可选参数为在字符串搜索的开始与结束位置。该方法返回子字符串在字符串中出现的次数。

> 语法 : str.count(sub, start= 0,end=len(string))

- sub -- 搜索的子字符串
- start -- 字符串开始搜索的位置。默认为第一个字符,第一个字符索引值为0。
- end -- 字符串中结束搜索的位置。字符中第一个字符的索引为 0。默认为字符串的最后一个位置。

  1. In [1]: testStr = "this is test string"  
  2. In [2]: print testStr.count('i',4,40)  
  3. 2  
  4. In [3]: print testStr.count('iii')  
  5. 0  

6. encode/decode

> 以 encoding 指定的编码格式解码字符串。默认编码为字符串编码。

> 语法 :str.decode(encoding='UTF-8',errors='strict')

- encoding -- 要使用的编码,如"UTF-8"。
- errors -- 设置不同错误的处理方案。默认为 'strict',意为编码错误引起一个UnicodeError。 其他可能得值有 'ignore', 'replace', 'xmlcharrefreplace', 'backslashreplace' 以及通过 codecs.register_error() 注册的任何值。

  1. In [1]: testStr = "this is test string"  
  2. In [2]: testStr = testStr.encode('base64','strict')  
  3. In [3]: print testStr  
  4. dGhpcyBpcyB0ZXN0IHN0cmluZw==  
  5. In [4]: print testStr.decode('base64','strict')  
  6. this is test string  

7. endswith

> 法用于判断字符串是否以指定后缀结尾,如果以指定后缀结尾返回True,否则返回False。

> str.endswith(suffix[, start[, end]])

- suffix -- 该参数可以是一个字符串或者是一个元素。
- start -- 字符串中的开始位置。
- end -- 字符中结束位置。

  1. In [1]: testStr = 'this is test string, hehe'  
  2. In [2]: print testStr.endswith('hehe')  
  3. True  

8. expandtabs

> 把字符串中的 tab 符号('\t')转为空格,tab 符号('\t')默认的空格数是 8。

> 语法:str.expandtabs(tabsize=8)

  1. In [1]: testStr = "this is \t test string"  
  2. In [2]: print testStr  
  3. this is      test string  
  4. In [3]: print testStr.expandtabs()  
  5. this is          test string  
  6. In [4]: print testStr.expandtabs(32)  
  7. this is                          test string  

9. find

> 检测字符串中是否包含子字符串 str ,如果指定 beg(开始) 和 end(结束) 范围,则检查是否包含在指定范围内,如果包含子字符串返回开始的索引值,否则返回-1

> str.find(str, beg=0, end=len(string))

- str -- 指定检索的字符串
- beg -- 开始索引,默认为0。
- end -- 结束索引,默认为字符串的长度。

  1. In [1]: testStr = "this is test string"  
  2. In [2]: print testStr.find('is')  
  3. 2  
  4. In [3]: print testStr.find('is',10)  
  5. -1  

10. format

> 格式化字符串

  1. In [1]: '{0},{1}'.format('kzc',18)   
  2. Out[1]: 'kzc,18'   
  3. In [2]: '{},{}'.format('kzc',18)   
  4. Out[2]: 'kzc,18'   
  5. In [3]: '{1},{0},{1}'.format('kzc',18)   
  6. Out[3]: '18,kzc,18'  
  7. In [5]: '{name},{age}'.format(age=18,name='kzc')   
  8. Out[5]: 'kzc,18'  

11. index

> 检测字符串中是否包含子字符串 str ,如果指定 beg(开始) 和 end(结束) 范围,则检查是否包含在指定范围内,该方法与 python find()方法一样,只不过如果str不在 string中会报一个异常。

> str.index(str, beg=0, end=len(string))

  1. In [2]: testStr = "this is test string"  
  2. In [3]: print testStr.index('is')  
  3. 2  
  4. In [4]: print testStr.index('is',10)  
  5. ---------------------------------------------------------------------------  
  6. ValueError                                Traceback (most recent call last)  
  7. <ipython-input-4-487121d16ce0> in <module>()  
  8. ----> 1 print testStr.index('is',10)  
  9.   
  10. ValueError: substring not found  

12. isalnum

> isalnum() 方法检测字符串是否由字母和数字组成。至少有一个字符并且所有字符都是字母或数字则返回 True,否则返回 False

> str.isalnum()

  1. In [1]: testStr = "this is test string"  
  2. In [2]: print testStr.isalnum()  
  3. False  
  4. In [3]: testStr = "this123"  
  5. In [4]: print testStr.isalnum()  
  6. True  

13. isalpha

> 检测字符串是否只由字母组成

> str.isalpha()

14. isdigit

> 检测字符串是否只由数字组成

> str.isdigit()

15. islower

> 检测字符串是否由小写字母组成

> str.islower()

16. isspace

> 检测字符串是否只由空格组成

> str.isspace()

17. istitle

> 检测字符串中所有的单词拼写首字母是否为大写,且其他字母为小写。

> str.istitle()

18. isupper

> 检测字符串中所有的字母是否都为大写

> str.isupper()

19. ljust

> 返回一个原字符串左对齐,并使用空格填充至指定长度的新字符串。如果指定的长度小于原字符串的长度则返回原字符串。

> str.ljust(width[, fillchar])

- width -- 指定字符串长度。
- fillchar -- 填充字符,默认为空格。

  1. In [1]: testStr = 'this is test string'  
  2. In [2]: print testStr.ljust(100,'0')  
  3. this is test string000000000000000000000000000000000000000000000000000000000000000000000000000000000  

20. lower

> 转换字符串中所有大写字符为小写

> str.lower()

21. lstrip

> 截掉字符串左边的空格或指定字符

> str.lstrip([chars])

22. partition

> 根据指定的分隔符将字符串进行分割。

> 如果字符串包含指定的分隔符,则返回一个3元的元组,第一个为分隔符左边的子串,第二个为分隔符本身,第三个为分隔符右边的子串。

> str.partition(str)

23. rfind

> 返回字符串最后一次出现的位置,如果没有匹配项则返回-1

> str.rfind(str, beg=0 end=len(string))

- str -- 查找的字符串
- beg -- 开始查找的位置,默认为0
- end -- 结束查找位置,默认为字符串的长度。

24. rindex

> 返回子字符串 str 在字符串中最后出现的位置,如果没有匹配的字符串会报异常

> str.rindex(str, beg=0 end=len(string))

- str -- 查找的字符串
- beg -- 开始查找的位置,默认为0
- end -- 结束查找位置,默认为字符串的长度。

25. rjust

> 返回一个原字符串右对齐,并使用空格填充至长度 width 的新字符串。如果指定的长度小于字符串的长度则返回原字符串。

> str.rjust(width[, fillchar])

26. split

> 通过指定分隔符对字符串进行切片,如果参数num 有指定值,则仅分隔 num 个子字符串.返回分割后的字符串列表。

> str.split(str="", num=string.count(str)).

- str -- 分隔符,默认为空格。
- num -- 分割次数。

27. rstrip

> 截掉字符串右边的空格或指定字符

> str.rstrip([chars])

28. splitlines

> 按照行('\r', '\r\n', \n')分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False,不包含换行符,如果为 True,则保留换行符。

> str.splitlines([keepends])

> keepends -- 在输出结果里是否去掉换行符('\r', '\r\n', \n'),默认为 False,不包含换行符,如果为 True,则保留换行符。

29. startswith

> 用于检查字符串是否是以指定子字符串开头,如果是则返回 True,否则返回 False。如果参数 beg 和 end 指定值,则在指定范围内检查。

> str.startswith(str, beg=0,end=len(string));

- str -- 检测的字符串。
- strbeg -- 可选参数用于设置字符串检测的起始位置。
- strend -- 可选参数用于设置字符串检测的结束位置。

30. strip

> 用于移除字符串头尾指定的字符(默认为空格)

> str.strip([chars]);

- chars -- 移除字符串头尾指定的字符。

31. swapcase

> 用于对字符串的大小写字母进行转换

> str.swapcase();

32. title

> 返回"标题化"的字符串,就是说所有单词都是以大写开始,其余字母均为小写

> str.title();

33. translate

> 根据参数table给出的表(包含 256 个字符)转换字符串的字符, 要过滤掉的字符放到 del 参数中。

> str.translate(table[, deletechars]);

- table -- 翻译表,翻译表是通过maketrans方法转换而来。
- deletechars -- 字符串中要过滤的字符列表。

  1. #!/usr/bin/python  
  2. from string import maketrans   # Required to call maketrans function.  
  3.   
  4. intab = "aeiou"  
  5. outtab = "12345"  
  6. trantab = maketrans(intab, outtab)  
  7. str = "this is string example....wow!!!";  
  8. print str.translate(trantab, 'xm');  
  9.   
  10. ==>> th3s 3s str3ng 21pl2....w4w!!!  

34. upper

> 将字符串中的小写字母转为大写字母

> str.upper()

35. zfill

> 返回指定长度的字符串,原字符串右对齐,前面填充0。

> 语法 str.zfill(width)

- width -- 指定字符串的长度。原字符串右对齐,前面填充0。

Leave a Reply

Your email address will not be published. Required fields are marked *

three × 1 =