python用缩进(四个空格,不是teble)来区分代码块
1.
coding=utf-8 字符编码,支持汉字
#!/usr/bin/env python
# coding=utf-8
print "hello world"
print "你好 世界"
2.
字面常量:顾名思义,就是看到是什么就是什么
变量命名:字母或者下划线或者数字组成,不过数字不能作为开头,关键字不能作为变量名(例如for,if等)
3.
数据类型:强类型(不允许非同类数据之间进行运算)
type(变量名) 输出变量类型 例如:
>>> v1 = 1
>>> v2 = 2
>>> v1 + v2
3
>>> v3 = "This is 3"
--整型v1和字符型v3相加报错
>>> v1 + v3
Traceback (most recent call last):
File "<pyshell#4>", line 1, in <module>
v1 + v3
TypeError: unsupported operand type(s) for +: 'int' and 'str'
>>> type(v3)
<type 'str'>
>>> type(v1)
<type 'int'>
--输出字符串某个字符,数组方式
>>> v3[0]
'T'
>>> v3[1]
'h'
py中单引号和双引号是等价的,例如:
>>> 'ture'=="ture"
True
4.
类型转换:
int|float(需要转换的值或者变量),例如:
>>> v1=1
>>> float(v1)
1.0
这里v1本来是整型1,转换后为1.0
5.对象,py中万物皆对象
6.运算表达式
6-1.数学运算符:+
整型相除得到的依然是整型,而不是浮点型
而整型与浮点数相除,得到的就是浮点型,不过依然会损失一部分精度,例如
--除法运算/
>>> 10 / 3
3
>>> 10 / float(3)
3.3333333333333335
--取整运算//
>>> 10 // float(3)
3.0
--取模运算
>>> 10 % 3
1
--乘方运算
>>> 10 ** 3
1000
--加法运算(单独存在是正号)
>>> 10 + 3
13
--减法运算(单独存在是负号)
>>> 10 - 3
7
6-2.位操作运算符
--左移运算符<<,意思就是将值转为二进制,并且向左移动三位,并将移动的三位用0补全,例如:2的二进制是10,左移3位是10000,即16.
>>> 2 << 3
16
--右移运算符>>,和左移解法一样,只不过是移动几位就删除几位.
>>> 16 >> 2
--按位与运算&,将值转为二进制,然后两个二进制同位进行与运算
>>> 3 & 2
2
--或运算|
>>> 3 | 2
3
--异或运算^
>>> 3 ^ 2
1
--取反运算~,将值转为二进制,然后+1,取反,例如:3的二进制是11,那么转化的式子-->-(11+1)=-(100)=-4
>>>~3
-4
--例如:~1-~3=(~1)-(~3)=(-2)-(-4)=2
>>> ~1-~3
2
6-3.比较运算符 < > <= >= == !=
6-4.逻辑运算符 and or not
6-5.赋值运算符 =
6-6.其他运算符
6-7.运算符优先级
单目运算符高于双目运算符,not是例外
算数运算符高于位运算符,~是例外
>>> 1+2<<2
12
>>> 2<<2+1
16
位运算符高于比较运算符
比较运算符高于逻辑运算符
建议用()来强制划分优先级,便于代码易理解
7.分支结构
7-1.if语句
基本格式:if condition:
expression
if 3<5:
print "This is 3"
This is 3
7-2. else子句
py中一定要注意语句级别,每个级别的间隔都是4个空格,例如第二个
if 3<5:
print "ture"
else:
print "false"
ture
>>> if 3<5:
if 3>2:
print "ture"
else:
print "false"
ture
7-3.elif语句
elif语句会在条件判定成功的那一刻停止,不会继续执行之后的elif,例如:这里只输出了一个ture
if 3>5:
print "false"
elif 3>2:
print "ture"
elif 3>1:
print "ture"
ture
8.循环体
8-1.while语句
>>> a=3
>>> while a <= 10:
print a
a += 1 #a = a + 1
3
4
5
6
7
8
9
10
8-2.for语句,和c语言差别比较大
格式如下:
for 变量 in 迭代器
迭代器是什么,就是一个函数,例如range()
range(1,10)
[1, 2, 3, 4, 5, 6, 7, 8, 9]
range(10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
range(0,10,2)
[0, 2, 4, 6, 8]
#一个完整的for循环例子:
for x in range(10):
print x
0
1
2
3
4
5
6
7
8
9
另外,迭代器不要轻易进行修改,否则会出现意想不到的问题,例如:在下面这个例子中,li充当了迭代器的作用,在第一次循环中后,我们赋予了li=[1,2,3],但是之后却发现x依然获取的是0~9[即10次迭代],而并不是1~3[3次迭代].
li = range(10)
for x in li:
print x
print li
li=[1,2,3]
0
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
1
[1, 2, 3]
2
[1, 2, 3]
3
[1, 2, 3]
4
[1, 2, 3]
5
[1, 2, 3]
6
[1, 2, 3]
7
[1, 2, 3]
8
[1, 2, 3]
9
[1, 2, 3]
8-3.break语句,跳出整个迭代循环,不影响外部迭代循环
for x in li:
print x
if x == 5:
break
0
1
2
3
4
5
例子2:
x第一次循环体中[y进行10次循环+换行],但是在第5次循环被中断,故输出0-5,那么x的10次循环就是输出10次0-5
print 后加,可以将换行改为空格,print后什么都不跟,则输出换行
for x in range(10):
for y in range(10):
print y,
if y == 5:
break
print
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
8-4.continue子句,跳过当前循环,不影响整个迭代循环的其他循环
例如:当x等于5时,跳出本次x=5的循环,但是不影响之后的迭代循环.
for x in range(10):
if x == 5:
continue
print x
for y in range(10):
print y,
print
0
0 1 2 3 4 5 6 7 8 9
1
0 1 2 3 4 5 6 7 8 9
2
0 1 2 3 4 5 6 7 8 9
3
0 1 2 3 4 5 6 7 8 9
4
0 1 2 3 4 5 6 7 8 9
6
0 1 2 3 4 5 6 7 8 9
7
0 1 2 3 4 5 6 7 8 9
8
0 1 2 3 4 5 6 7 8 9
9
0 1 2 3 4 5 6 7 8 9
8-5.循环体中的else子句
for x in range(10):
if x > 10:
break
else:
print "x > 10"
x > 10
9.小例子1:
预先设定一个数字,判定用户输入数字与预设数字的区别,并输出对应信息
raw_input()和input()最大的区别在于,前者会将所有输入类型改变为字符串类型,后者则认为自己需要一个合法的表达式,比如说输入字符串,则必须加引号(获取abc,则需要输入"abc")
#!/usr/bin/env python
# coding=utf-8
numA = 100
numB = input("请输入一个数字:")
if numA == numB:
print "你获得胜利!"
elif numB > numA:
print "你的数字大于预设数字!"
elif numB < numA:
print "你的数字小于预设数字!"