行和缩进
python的代码块不用{}
控制类。而是用缩进来写模块。
缩进的空白数量是可变的,一般缩进4个空格。但是所有代码块必须包含相同的缩进空白数量。
没有严格缩进就会报错!!
错误示范python空行
函数之间或类的方法之间用空行分隔,表示一段新的代码的开始。类和函数入口之间也用一行空行分隔,以突出函数入口的开始。
空行与代码缩进不同,空行并不是Python语法的一部分。书写时不插入空行,Python解释器运行也不会出错。但是空行的作用在于分隔两段不同功能或含义的代码,便于日后代码的维护或重构。
记住:空行也是程序代码的一部分。
Python标识符
标识符由字母,数字,下划线组成。但不能以数字开头。并且区分大小写。
python可以在同一行显示多条语句,只要用;
隔开就好了。
下面的列表显示了在Python中的保留字。这些保留字不能用作常数或变数,或任何其他标识符名称。
关键字
通常用全部大写的变量名表示常量.
变量名必须是大小写英文、数字和_的组合,且不能用数字开头
python注释
单行注释以#
号开头
多行注释使用三个单引号'''
或三个双引号"""
。
python能直接处理的数据类型
-
整性
任意大小的整数,包括负整数。也可用十六进制表示、 -
浮点数
也就是小数。浮点数可以用数学写法也可以用科学计数法。eg:1.2324,-2.564
对于很大或者很小的浮点数,就必须要用科学记数法表示,把10用e代替。1.23x109就是1.23e9
,或者12.3e8
,0.000012可以写成1.2e-5
-
字符串
字符串是以单引号'或双引号"括起来的任意文本,eg:'abc',"xyz"等等。字符串'abc'只有a,b,c这3个字符。如果'本身也是一个字符,那就可以用""括起来,比如"I'm OK"包含的字符是I,',m,空格,O,K这6个字符。
如果字符串内部既包含'又包含"怎么办?可以用转义字符\来标识
'I\'m \"OK\"!'
效果图
转义字符
\
可以转义很多字符,比如\n
表示换行,\t
表示制表符,字符\
本身也要转义,所以\\
表示的字符就是\
转义字符
如果转移的字符太多,可以用
r''
表示''
内部的字符串默认不转义转义字符
如果字符串内部有很多需要换行的地方,可以用
'''...'''
的格式表示多行内容换行
python对单个字符的编码
获取字符的整数表示
ord()
获取字符的整数表示
把编码转换为对应的字符
chr()
把编码转换为对应的字符
计算字符数len()
计算str的字符数
如果换成bytes,len()函数就计算字节数
-
布尔值
布尔值只有True
、False
两种值,要么是True
,要么是False
。在python中可以直接用True
、False
表示布尔值 -
空值
空值是Python里一个特殊的值,用None
表示。None
不能理解为0,因为0是有意义的,而None
是一个特殊的空值。 -
常量
/法
常量就是不能变的变量
python有两种除法一种是/
,另一种是//
称为地板除
/
除法计算结果是浮点数
地板除永远是整数,即使除不尽也只会截取整数部分。
地板除
还有一个余数运算,可以得到两个整数相除的余数
计算余数
- 变量
在计算机程序中,变量不仅可以是数字,还可以是任意数据类型。
变量名必须是大小写英文、数字和_的组合,且不能用数字开头。
变量在计算机内存中的表示:
a='abc'
Python解释器干了两件事情:
1.内存中创建了一个'abc'的字符串;
2.在内存中创建了一个名为a的变量,并把它指向'abc'。
编码
因为python的源文件也是一个文本文件,所以当源代码包含中文的时候,在保存源代码时,就要保存成utf-8编码。当python解析器读取源代码时,为了让它按照utf-8编码读取,通常在开头写
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
第一行注释时告诉linux/OS X系统,这是一个python可执行程序,Windows系统会忽略这个注释。
第二行注释是为了告诉python解释器,按照utf-8编码读取源代码,否则,在源代码中写的中文输出可能会乱码。
申明了UTF-8编码并不意味着你的.py文件就是UTF-8编码的,必须并且要确保文本编辑器正在使用UTF-8 without BOM编码
格式化
最后一个常见的问题是如何输出格式化的字符串。我们经常会输出类似亲爱的xxx你好!你xx月的话费是xx,余额是xx之类的字符串,而xxx的内容都是根据变量变化的,所以,需要一种简便的格式化字符串的方式。
在python中,采用格式化的方式和C一样,用%
实现
常见的占位符:
如果你不太确定应该用什么,%s
永远起作用,它会把任何数据类型转换为字符串
有些时候,字符串里面的%是一个普通字符怎么办?这个时候就需要转义,用%%
来表示一个%
format方法格式化format()
传入的参数依次替换字符串内的占位符{0}、{1}……
list
python内置的一种数据类型
list是一种有序的集合,可以随时添加和删除其中的元素。
eg:
classmates = ['Michael', 'Bob', 'Tracy']
存放学生姓名
计算list的长度
计算list的长度访问list中每个位置的元素,从0开始索引
索引元素索引超出范围,就会报IndexError错误。
你可以用len(classmates)-1
确定最后一个元素的索引。
如果要用最后一个元素,可以直接classmates[-1]
直接获取最后一个元素。
以此类推,也可以获取倒数第二个,第三个元素……
往list中增加元素
- 往list中末尾追加元素
classmates.append('Adam')
list末尾追加元素
- 往指定位置增加元素
classmates.insert(1,'LELE')
指定位置添加元素
删除元素
- 删除list末尾的元素
classmates.pop()
删除末尾元素
- 删除指定位置元素
classmates.pop(i)
删除指定位置元素
替换元素
- 直接赋值给对应的索引位置
classmates[0] = 'lele'
替换元素
替换的元素是一个list
元素排序
用sort()
函数
tuple
这是一个有序列表——元祖。
classmates = ('Michael', 'Bob', 'Tracy')
元祖
一旦初始化就不可以修改
你可以索引元素,但不能删除,添加,赋值。
因为tuple不能变,所以代码更安全。
list和tuple是Python内置的有序集合,一个可变,一个不可变。根据需要来选择使用它们。
条件判断
Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块。
Python程序语言指定任何非0和非空(null)值为true,0 或者 null为false。
if语句的形式
if 判断条件:
执行语句……
else:
执行语句……
eg:
age = 3
if age >= 18:
print('your age is', age)
print('adult')
else:
print('your age is', age)
print('teenager')
当判断的条件为多个值的时候,可以用:
if 判断条件1:
执行语句1……
elif 判断条件2:
执行语句2……
elif 判断条件3:
执行语句3……
else:
执行语句4……
eg:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
h = input('input your height:')
w = input('input your weight:')
height = float(h)
weight = float(w)
bmi = weight / (height * height)
if bmi < 18.5:
print('过轻')
elif bmi > 18.5 and bmi < 25:
print('正常')
elif bmi > 25 and bmi < 28:
print('过重')
elif bmi > 28 and bmi < 32:
print('肥胖')
else:
print('严重肥胖')
运行结果
循环语句
- for循环
在给定的判断条件为true时执行循环体,否则退出循环体。
语法:
for iterating_var in sequence:
statements(s)
eg:打印1-9三角形阵列
#!/usr/bin/python
# -*- coding: UTF-8 -*-
for i in range(1,11):
for k in range(1,i):
print k,
print "\n"
运行结果:
1
1 2
1 2 3
1 2 3 4
1 2 3 4 5
1 2 3 4 5 6
1 2 3 4 5 6 7
1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 8 9
eg:
sum = 0
for x in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]:
sum = sum + x
print(sum)
计算1-100的和:
用range()
函数
sum = 0
for x in range(101):
sum = sum + x
print(sum)
- while循环
重复执行语句
while 判断条件:
执行语句……
执行语句可以是单个语句或语句块。
while循环eg:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import random
while 1:
s = int(random.randint(1, 3))
if s == 1:
ind = "石头"
elif s == 2:
ind = "剪子"
elif s == 3:
ind = "布"
m = raw_input('输入 石头、剪子、布,输入"end"结束游戏:')
blist = ['石头', "剪子", "布"]
if (m not in blist) and (m != 'end'):
print "输入错误,请重新输入!"
elif (m not in blist) and (m == 'end'):
print "\n游戏退出中..."
break
elif m == ind :
print "电脑出了: " + ind + ",平局!"
elif (m == '石头' and ind =='剪子') or (m == '剪子' and ind =='布') or (m == '布' and ind =='石头'):
print "电脑出了: " + ind +",你赢了!"
elif (m == '石头' and ind =='布') or (m == '剪子' and ind =='石头') or (m == '布' and ind =='剪子'):
print "电脑出了: " + ind +",你输了!"
运行结果
输入 石头、剪子、布,输入"end"结束游戏:石头
电脑出了: 石头,平局!
输入 石头、剪子、布,输入"end"结束游戏:石头
电脑出了: 剪子,你赢了!
输入 石头、剪子、布,输入"end"结束游戏:
循环控制语句
- break语句
在语句块执行过程中终止循环,并且跳出整个循环。
break语句用在while和for循环中。
eg:
n = 1
while n <= 100:
if n > 10: # 当n = 11时,条件满足,执行break语句
break # break语句会结束当前循环
print(n)
n = n + 1
print('END')
- continue语句
在语句块执行过程中终止当前循环,跳过当前的这次循环,直接开始下一次循环。
eg:
n = 0
while n < 10:
n = n + 1
if n % 2 == 0: # 如果n是偶数,执行continue语句
continue # continue语句会直接继续下一轮循环,后续的print()语句不会执行
print(n)
- pass语句
空语句,为了保持程序结构的完整性。
python内置字典
- dict
使用键-值(key-value)存储,具有极快的查找速度。
把数据放入dict的方法,除了初始化时指定外,还可以通过key放入:
将值放入dict由于一个key只能对应一个value,所以,多次对一个key放入value,后面的值会把前面的值冲掉。
如果key不存在,dict就会报错
可以用in
判断key是否存在
也可以通过dict提供的get()
方法,如果key不存在,可以返回None,或者自己指定的value
返回None的时候Python的交互环境不显示结果。
要删除一个key
,用pop(key)
方法,对应的value
也会从dict
中删除:
dict
的key
必须是不可变对象。
- set
set
和dict
类似,也是一组key
的集合,但不存储value
。由于key
不能重复,所以,在set
中,没有重复的key
。
要创建一个set
,需要提供一个list
作为输入集合
重复元素在set
中自动被过滤:
通过add(key)
方法可以添加元素到set中,可以重复添加,但不会有效果:
通过remove(key)
方法可以删除元素:
set可以看成数学意义上的无序和无重复元素的集合,因此,两个set可以做数学意义上的交集、并集等操作
set应用
网友评论