• Python的注释及乱码
    1. 单行注释:以#开头,#右边的所有东西当做说明,而不是真正要执行的程序,起辅助说明作用
    2. 多行注释:’’’多行注释’’’可以写多行的功能说明
    3. Python乱码问题 由于Python源代码也是一个文本文件,所以,当你的源代码中包含中文的时候,在保存源代码时,就需要务必指定保存为UTF-8编码。当Python解释器读取源代码时,为了让它按UTF-8编码读取,我们通常在文件开头写上这两行:
	# -*- coding:utf-8 -*-
	# coding=utf-8

整数

Python可以处理任意大小的整数,当然包括负整数,在程序中的表示方法和数学上的写法一模一样,例如:1,100,-8080,0,等等。 计算机由于使用二进制,所以,有时候用十六进制表示整数比较方便,十六进制用0x前缀和0-9,a-f表示,例如:0xff00,0xa5b4c3d2,等等。

浮点数

浮点数也就是小数,之所以称为浮点数,是因为按照科学记数法表示时,一个浮点数的小数点位置是可变的,比如,1.23x109和12.3x108是完全相等的。浮点数可以用数学写法,如1.23,3.14,-9.01,等等。但是对于很大或很小的浮点数,就必须用科学计数法表示,把10用e替代,1.23x109就是1.23e9,或者12.3e8,0.000012可以写成1.2e-5,等等。 整数和浮点数在计算机内部存储的方式是不同的,整数运算永远是精确的(除法难道也是精确的?是的!),而浮点数运算则可能会有四舍五入的误差。 字符串 字符串是以单引号'或双引号"括起来的任意文本,比如'abc',"xyz"等等。请注意,''或""本身只是一种表示方式,不是字符串的一部分,因此,字符串'abc'只有a,b,c这3个字符。如果'本身也是一个字符,那就可以用""括起来,比如"I'm OK"包含的字符是I,',m,空格,O,K这6个字符。 如果字符串内部既包含'又包含"怎么办?可以用转义字符\来标识,比如: 'I'm "OK"!' 表示的字符串内容是: I'm "OK"! 转义字符\可以转义很多字符,比如\n表示换行,\t表示制表符,字符\本身也要转义,所以\表示的字符就是\,可以在Python的交互式命令行用print()打印字符串看看: 如果字符串里面有很多字符都需要转义,就需要加很多\,为了简化,Python还允许用r''表示''内部的字符串默认不转义,可以自己试试: 如果字符串内部有很多换行,用\n写在一行里不好阅读,为了简化,Python允许用'''...'''的格式表示多行内容, print('''line1 line2 line3''')

布尔值

布尔值和布尔代数的表示完全一致,一个布尔值只有True、False两种值,要么是True,要么是False,在Python中,可以直接用True、False表示布尔值(请注意大小写),也可以通过布尔运算计算出来 布尔值可以用and、or和not运算。 and运算是与运算,只有所有都为True,and运算结果才是True:

空值

空值是Python里一个特殊的值,用None表示。None不能理解为0,因为0是有意义的,而None是一个特殊的空值。 此外,Python还提供了列表、字典等多种数据类型,还允许创建自定义数据类型,我们后面会继续讲到。 怎样知道一个变量的类型呢? 在python中,只要定义了一个变量,而且它有数据,那么它的类型就已经确定了,不需要咱们开发者主动的去说明它的类型,系统会自动辨别 可以使用type(变量的名字),来查看变量的类型

函数 说明 int(x [,base ]) 将x转换为一个整数 long(x [,base ]) 将x转换为一个长整数 float(x ) 将x转换到一个浮点数 complex(real [,imag ]) 创建一个复数 str(x ) 将对象 x 转换为字符串 repr(x ) 将对象 x 转换为表达式字符串 eval(str ) 用来计算在字符串中的有效Python表达式,并返回一个对象 tuple(s ) 将序列 s 转换为一个元组 list(s ) 将序列 s 转换为一个列表 chr(x ) 将一个整数转换为一个字符 unichr(x ) 将一个整数转换为Unicode字符 ord(x ) 将一个字符转换为它的整数值 hex(x ) 将一个整数转换为一个十六进制字符串 oct(x ) 将一个整数转换为一个八进制字符串

在Python中,采用的格式化方式和C语言是一致的,用%实现,举例如下:

>>> 'Hello, %s' % 'world'
'Hello, world'
>>> 'Hi, %s, you have $%d.' % ('Michael', 1000000)
'Hi, Michael, you have $1000000.'

你可能猜到了,%运算符就是用来格式化字符串的。在字符串内部,%s表示用字符串替换,%d表示用整数替换,有几个%?占位符,后面就跟几个变量或者值,顺序要对应好。如果只有一个%?,括号可以省略。

常见的占位符

%d 整数 %f 浮点数 %s 字符串 %x 十六进制整数

其中,格式化整数和浮点数还可以指定是否补0和整数与小数的位数:

>>> '%2d-%02d' % (3, 1)
' 3-01'
>>> '%.2f' % 3.1415926
'3.14'
如果你不太确定应该用什么,%s永远起作用,它会把任何数据类型转换为字符串:
>>> 'Age: %s. Gender: %s' % (25, True)
'Age: 25. Gender: True'
有些时候,字符串里面的%是一个普通字符怎么办?这个时候就需要转义,用%%来表示一个%>>> 'growth rate: %d %%' % 7
'growth rate: 7 %'

输入

如果要让用户从电脑输入一些字符怎么办?Python提供了一个input(),可以让用户输入字符串,并存放到一个变量里

  1. python2版本中 1.1 raw_input() 在Python中,获取键盘输入的数据的方法是采用 raw_input 函数。 看如下示例: 注意: raw_input()的小括号中放入的是,提示信息,用来在获取数据之前给用户的一个简单提示 raw_input()在从键盘获取了数据以后,会存放到等号右边的变量中 raw_input()会把用户输入的任何值都作为字符串来对待 1.2 input() input()函数与raw_input()类似,但其接受的输入作为是表达式。 input()接受表达式输入,并把表达式的结果赋值给等号左边的变量 raw_input()输入的都当成字符串(和Python3的input功能一样)
  2. python3版本中 没有raw_input()函数,只有input() 并且 python3中的input与python2中的raw_input()功能一样

逻辑运算符

  • 运算符 逻辑表达式 描述 实例
  • and  x and y 布尔"与" - 如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值。 (a and b) 返回 20。
  • or x or y 布尔"或" - 如果 x 是 True,它返回 True,否则它返回 y 的计算值。 (a or b) 返回 10。
  • not not x 布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。 not(a and b) 返回 False

5、比较(关系)运算符

运算符描述示例
==检查两个操作数的值是否相等,如果是则条件变为真。如a=3,b=3则(a == b) 为 true.
!=检查两个操作数的值是否相等,如果值不相等,则条件变为真。如a=1,b=3则(a != b) 为 true.
<>检查两个操作数的值是否相等,如果值不相等,则条件变为真。如a=1,b=3则(a <> b) 为 true。这个类似于 != 运算符
>检查左操作数的值是否大于右操作数的值,如果是,则条件成立。如a=7,b=3则(a > b) 为 true.
<检查左操作数的值是否小于右操作数的值,如果是,则条件成立。如a=7,b=3则(a < b) 为 false.
>=检查左操作数的值是否大于或等于右操作数的值,如果是,则条件成立。如a=3,b=3则(a >= b) 为 true.
<=检查左操作数的值是否小于或等于右操作数的值,如果是,则条件成立。如a=3,b=3则(a <= b) 为 true.

Python的逻辑判断和循环 1、if elif else条件判断 计算机之所以能做很多自动化的任务,因为它可以自己做条件判断。 elif是else if的缩写,完全可以有多个elif,所以if语句的完整形式就是:

if <条件判断1>:
    <执行1>
elif <条件判断2>:
    <执行2>
elif <条件判断3>:
    <执行3>
else:
    <执行4>

比如,输入用户年龄,根据年龄打印不同的内容,在Python程序中,用if语句实现:

age = 20
if age >= 18:
    print('your age is', age)
    print('adult')

根据Python的缩进规则,如果if语句判断是True,就把缩进的两行print语句执行了,否则,什么也不做。

字符串常见操作

下标索引 所谓下标,就是编号,就好比超市中的存储柜的编号,通过这个编号就能找到相应的存储空间 字符串实际上就是字符的数组,所以也支持下标索引。 如果有字符串:name = 'abcdef',在内存中的实际存储如下:

如果想取出部分字符,那么可以通过下标的方法,(注意python中下标从 0 开始)

   name = 'abcdef'
   print(name[0])
   print(name[1])
   print(name[-2])

切片(分片)

切片是指对操作的对象截取其中一部分的操作。字符串、列表、元组都支持切片操作。 切片的语法:[起始:结束:步长] 步长:表示下标变化的规律。 注意:选取的区间属于左闭右开型,即从"起始"位开始,到"结束"位的前一位结束不包含结束位本身

name = 'abcdef'
print(name[0:3]) # 取 下标0~2 的字符
name = 'abcdef'
print(name[0:5]) # 取 下标为0~4 的字符
name = 'abcdef'
print(name[3:5]) # 取 下标为3、4 的字符
name = 'abcdef'
print(name[2:]) # 取 下标为2开始到最后的字符
name = 'abcdef'
print(name[1:-1]) # 取 下标为1开始 到 最后第2个  之间的字符
>>> a = "abcdef"
>>> a[:3]
'abc'
>>> a[::2]
'ace'
>>> a[5:1:2] 
''
>>> a[1:5:2]
'bd'
>>> a[::-2]
'fdb' 
>>> a[5:1:-2]
'fd'

如有字符串 mystr = 'hello world and hhhzzzqqq yunshuxueyuan osvee beijing' 以下是常见的操作

  1. find == java Indexof方法 检测 str 是否包含在 mystr中,如果是返回开始的索引值,否则返回-1 mystr.find(str, start=0, end=len(mystr))
  2. index 跟find()方法一样,只不过如果str不在 mystr中会报一个异常. mystr.index(str, start=0, end=len(mystr))
  3. count 返回 str在start和end之间 在 mystr里面出现的次数 mystr.count(str, start=0, end=len(mystr))
  4. replace 把 mystr 中的 str1 替换成 str2,如果 count 指定,则替换不超过 count 次. mystr.replace(str1, str2, mystr.count(str1))
  5. split 以 str 为分隔符切片 mystr,如果 maxsplit有指定值,则仅分隔 maxsplit 个子字符串 mystr.split(str=" ", 2)
  6. capitalize 把字符串的第一个字符大写 mystr.capitalize()
  7. title 把字符串的每个单词首字母大写
  8. startswith 检查字符串是否是以 obj 开头, 是则返回 True,否则返回 False mystr.startswith(obj)
  9. endswith 检查字符串是否以obj结束,如果是返回True,否则返回 False. mystr.endswith(obj)
  10. lower 转换 mystr 中所有大写字符为小写 mystr.lower()
  11. upper 转换 mystr 中的小写字母为大写 mystr.upper()
  12. ljust 返回一个原字符串左对齐,并使用空格填充至长度 width 的新字符串 mystr.ljust(width)
  13. rjust 返回一个原字符串右对齐,并使用空格填充至长度 width 的新字符串 mystr.rjust(width)
  14. center 返回一个原字符串居中,并使用空格填充至长度 width 的新字符串 mystr.center(width)
  15. lstrip 删除 mystr 左边的空白字符 mystr.lstrip()
  16. rstrip 删除 mystr 字符串末尾的空白字符 mystr.rstrip()
  17. strip ---java trim 删除mystr字符串两端的空白字符
  18. rfind 类似于 find()函数,不过是从右边开始查找. mystr.rfind(str, start=0,end=len(mystr) )
  19. rindex 类似于 index(),不过是从右边开始. mystr.rindex( str, start=0,end=len(mystr))
  20. partition 把mystr以str分割成三部分,str前,str和str后 mystr.partition(str)
  21. rpartition 类似于 partition()函数,不过是从右边开始. mystr.rpartition(str)
  22. splitlines 按照换行符分隔,返回一个包含各行作为元素的列表 mystr.splitlines()
  23. isalpha 如果 mystr 所有字符都是字母 则返回 True,否则返回 False mystr.isalpha()
  24. isdigit 如果 mystr 只包含数字则返回 True 否则返回 False. mystr.isdigit()
  25. isalnum 如果 mystr 所有字符都是字母或数字则返回 True,否则返回 False mystr.isalnum()
  26. isspace 如果 mystr 中只包含空格,则返回 True,否则返回 False. mystr.isspace()
  27. join mystr 中每个字符后面插入list的每个元素后面,构造出一个新的字符串 mystr.join(list)
str.join() 元素序列是列表
>>> a = '!@'.join(['Fusion', 'Sphere', 'Cloud'])
>>> a
'Fusion!@Sphere!@Cloud'
2. 元素序列是元组
>>> " ".join(('China', 'Japan', 'USA', 'UK'))
'China Japan USA UK'
3. 元素序列是集合
>>> ''.join({'C', 'h', 'i', 'n', 'a'})
'ahCni'
可以看出,输出的字符顺序与集合中元素的顺序不是保持一致的。

4. 元素序列是字典
>>> ' ~ '.join({'Asia':'China', 'Europe':'UK'})
'Asia ~ Europe'
可以看出,如果序列是字典,拼接的字符是字典的键。

5. 元素序列是字符串
当元素序列仅仅是字符串时,join函数会将字符串中的每一个单个字符抽取出来,与连接符组合。

>>> ', '.join('happy')
'h, a, p, p, y'
注意事项
1. 要连接的字符串序列(参数)必须是字符串
join函数的参数应该是全部由字符串构成的可迭代对象。当可迭代对象不全是由字符串构成的时,Python会报错TypeError。 

总结: 查找字符串: find:找不到返回-1 ,都是从左边找,右边查找r index:找不到报错

循环结构

Python的循环有两种,一种是for...in循环,另外一种是while循环。

for循环的格式

for 临时变量 in 列表或者字符串等: 循环满足条件时执行的代码 else: 循环不满足条件时执行的代码

列表的相关操作

列表中存放的数据是可以进行修改的,比如"增"、"删"、"改""

  • 添加元素("增"append, extend, insert) append 通过append可以向列表添加元素 extend(+) 通过extend可以将另一个集合中的元素逐一添加到列表中
>>> a = [1, 2]
>>> b = [3, 4]
>>> a.append(b)
>>> a
[1, 2, [3, 4]]
>>> a.extend(b)
>>> a
[1, 2, [3, 4], 3, 4]

insert insert(index, object) 在指定位置index前插入元素object

>>> a = [0, 1, 2]
>>> a.insert(1, 3)
>>> a
[0, 3, 1, 2]
  1. 修改元素("改") 修改元素的时候,要通过下标来确定要修改的是哪个元素,然后才能进行修改
  2. 查找元素("查"in, not in, index, count) 所谓的查找,就是看看指定的元素是否存在

in, not in

python中查找的常用方法为: in(存在),如果存在那么结果为true,否则为false not in(不存在),如果不存在那么结果为true,否则false #查找是否存在if findName in nameList: print('在字典中找到了相同的名字') else: print('没有找到') 说明: in的方法只要会用了,那么not in也是同样的用法,只不过not in判断的是不存在

index, count

index和count与字符串中的用法相同

>>> a = ['a', 'b', 'c', 'a', 'b']
>>> a.index('a', 1, 3) # 注意是左闭右开区间
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: 'a'isnotin list
>>> a.index('a', 1, 4)
3>>> a.count('b')
2>>> a.count('d')
0
  • 删除元素 ("删"del, pop, remove) 类比现实生活中,如果某位同学调班了,那么就应该把这个条走后的学生的姓名删除掉;在开发中经常会用到删除这种功能。 列表元素的常用删除方法有: del:根据下标进行删除,其实可以删除所有变量 pop:默认删除最后一个元素 remove:根据元素的值进行删除第一个
>>> l
['abcdef', ['aaa', 'bb', 'ccc'], 'ddd', 'fff']
>>> del  l[0]
>>> l
[['aaa', 'bb', 'ccc'], 'ddd', 'fff']
  • 排序(sort, reverse) sort方法是将list按特定顺序重新排列,默认为由小到大,参数reverse=True可改为倒序,由大到小。 reverse方法是将list逆置。
>>> a = [1, 4, 2, 3]
>>> a
[1, 4, 2, 3]
>>> a.reverse()
>>> a
[3, 2, 4, 1]
>>> a.sort()
>>> a
[1, 2, 3, 4]
>>> a.sort(reverse=True)
>>> a
[4, 3, 2, 1]
<6>enumerate()
>>> chars = ['a', 'b', 'c', 'd']
>>> for i, chr in enumerate(chars):
...     print i, chr
...
0 a
1 b
2 c
3 d