Python入门小知识-2
操作符
Python中支持 + - * / % 这样的操作符. 并且它们的行为都和C语言一样.
/ 是 "精确除法"
a = 1 b = 2 print(a/b) #0.5
// 是 "整除". 会对结果进行取整
- Python2 中 / 是传统除法(即1/2 = 0) // 是地板除法, 和 Python3 的语义截然不同.
a = 1 b = 2 print(a//b) #0
** 表示乘方运算(记得Python的数据无上限) a**b <==> a的b次方
a = 100 b = 10 print(a**b) #100000000000000000000
Python也支持标准的比较运算符. > < >= <= == != 这些运算符的表达式的结果, 是一个布尔值
a = 2 < 4 print(type(a)) #<class 'bool'>
Python也支持逻辑运算符. and or not(相当于 与 或 非 ) 注意:符合短路原则
短路原则:
and:左边为False 就不看右边
or : 左边为True,就不看右边了
a = 2<4 and 2 == 4 print(a) #False a = 2<4 or 2 == 4 print(a) #True
Python中, 3 < 4 < 5 等价于 3 < 4 and 4 < 5 这一点和其他大多数编程语言都不太一样.
运算符之间有高低优先级的区分. 应该合理使用括号来增加代码的可读性.
字符串和字符串之间也可以使用运算符进行操作,
- 例如前面使用 + 进行字符串连接
print('hehe' + 'haha') #hehehaha
字符串之间可以使用
==
!=
来判定字符串的内容是否相同print('hehe' != 'haha') #True print('hehe' == 'haha') #False
字符串之间也可以比较大小. 这个大小的结果取决于字符串的 "字典序"
C,C++,Java都是按字典序进行比较字符串
print('hehe' < 'haha') #False print('mango' > 'Mango') #True
列表,元组,字典
列表和元组
列表和元组类似于C语言中的数组.
使用 [] 来表示列表
list
, 使用 () 来表示元组tuple
alist = [1,2,3,4] #列表 print(alist) #[1, 2, 3, 4] print(len(alist)) #4 print(alist[1:-1]) #[2,3] 左闭右开 print(alist[1]) #2 print(alist[-1]) #4 atuple = (1,2,3,4) #元组 print(atuple) #(1, 2, 3, 4)
列表和元组能保存任意数量, 任意类型的Python对象
a = [1,'list'] print(a) #[1, 'list']
可以使用下标来访问里面的元素, 下标从0开始. 最后一个下标为-1
a = [1,'list'] print(a[0]) #1 print(a[1]) #list print(a[1][2]) #s
可以使用[A:B]切片操作得到列表或元组的子集. 这个动作和字符串操作是一样的.注意:切片切出来的也是列表或元组
a = [1,'list'] print(a[:]) #[1, 'list'] print(a[0:1]) #[1]
列表和元组唯一的区别是, 列表中的元素可以修改, 但是元组中的元素不能修改.
- 本质区别:列表:可变对象 元组:不可变对象
a = [1,2,3,4] a[0] = 100 #列表可变 a = (1,2,3,4) a[0] = 100 #元组不可变 error
字典
- 字典是Python中的映射数据类型. 存储键值对(key-value).
- 几乎所有类型的Python对象都可以用作键. 不过一般还是数字和字符串最常用.
- 使用
{}
表示字典.
例子
键是怎么样,访问就怎么样.不同的键值对用逗号分割
键和值用:
分割 键要用''
括起来
a = {'ip':'127.0.0.1' , '1':'2'} #字典 print(a['ip']) #取字典中的元素 执行结果:127.0.0.1 a['port'] = 80 #插入新的键值对 print(a) #{'ip': '127.0.0.1', 'port': 80}
引用
内建函数id
Python中可以用 id 这个内建函数, 查看变量的 "地址"
- 地址只是身份标识
a = 100 print(id(a)) #140****89684720 a = 200 #给a重新赋值成200, 相当于新创建了一个200这样的对象, 然后将变量名a重新绑定到200这个对象上 print(id(a)) #140****89687920 b = a #将a赋值给b, 其实相当于又创建了一个变量名b, 并将b这个名字和200这个对象绑定到一起. print(id(b)) #140****89687920 b = 300 # print(id(b)) #2642453910960
像创建 a, b 这样的变量名, 其实只是一个对象的别名. 或者叫做变量的 "引用",这个变量真正在内存开辟空间,但是a和b并不开辟空间,a和b相当于贴在这个变量身上的标签
代码块及缩进
- Python中使用缩进来表示代码块. 相当于天然从语法的角度规定了代码风格.
- Python是独一无二的使用缩进而不是{}的, 这就避免了一场党派之争~
党派1:
if (a > b) { do_something() }
党派2
if (a > b){ do_something() }
python:并不存在大括号. 因此也就不需要考虑大括号放在哪里了.
if a > b: do_something()
if语句
如果表达式的值非0或者为布尔值True, 则执行 do_something, 否则执行下一跳语句.
注意:判断语句后面要加:
if expression: do_something1 do_something2 next_something
Python也支持else语句
if expression: do_something1 else: do_something2
Python里还有神奇的的elif(意思是else-if)
if expression: do_something1 elif expression2: do_something2 else: do_something3
Python并不支持switch/case这样的语句. 也没有必要支持. 实际上 switch/case 语法并不优雅.
while语句
while循环语句和if语句语法类似. 只要表达式的值非0或者为True, 就会循环执行do_something
注意:判断语句后面要加:
while expection: do_something
例子:循环三次打印
count = 0 while count < 3: print('loop %d' %count) count+=1 #不可以用count++ #执行结果 loop 0 loop 1 loop 2
for循环
Python中的for循环和传统的for循环不太一样.
注意:判断语句后面要加:
- for循环接收可迭代对象(序列或者迭代器)作为参数, 每次迭代其中的一个元素.
#遍历打印字符串的每个字符 a = 'hehe' for c in a: print(c) #执行结果 h e h e #遍历列表的每个元素 a =[1,2,3,4] for item in a: print(item) #执行结果 1 2 3 4 #遍历字典中的所有key-value a = {'ip':"198.168.1.1",'tel':'12345'} for key in a: print(a[key]) #打印键对应的值 print(key,a[key]) #打印键和值 #执行结果 198.168.1.1 ip 198.168.1.1 12345 tel 12345#Python#