Phython基础语法
一、基础知识
-
严格控制代码缩进,使用缩进控制代码块,不需要{}
-
一行可以显示多条语句用分号 ; 隔开。
-
字符串表示,三引号用来表示多行
str = 'hello world' str = "hello wordl" str = """hello world""" str = '''hello world'''
-
注释使用
# 注释内容
,多行注释'''多行注释内容''' 或者 """多行注释内容"""
-
变量赋值,phython变量赋值不需要声明数据类型
a = 1 b = 11.12 c = "jack" a,b,c = 1,11.12,"jack" d = e = f = 10
-
五种标准数据类型
Numbers(数字): int 、float 、complex
String(字符串)
List(列表)
Tuple(元组)
Dictionary(字典) -
字符串常用操作
str = "abcdef" print str # 输出完整字符串 print str[0] # 输出字符串中的第一个字符 print str[2:5] # 输出字符串中第三个至第六个之间的字符串 print str[2:] # 输出从第三个字符开始的字符串 print str * 2 # 输出字符串两次 print str + "TEST" # 输出连接的字符串
-
列表List
list = [ 'runoob', 786 , 2.23, 'john', 70.2 ] tinylist = [123, 'john'] print list # 输出完整列表 print list[0] # 输出列表的第一个元素 print list[1:3] # 输出第二个至第三个元素 print list[2:] # 输出从第三个开始至列表末尾的所有元素 print tinylist * 2 # 输出列表两次 print list + tinylist # 打印组合的列表
-
元组,元组只读,复制后不能更新
tuple = ( 'runoob', 786 , 2.23, 'john', 70.2 ) tinytuple = (123, 'john') print tuple # 输出完整元组 print tuple[0] # 输出元组的第一个元素 print tuple[1:3] # 输出第二个至第四个(不包含)的元素 print tuple[2:] # 输出从第三个开始至列表末尾的所有元素 print tinytuple * 2 # 输出元组两次 print tuple + tinytuple # 打印组合的元组
-
字典key-value
dict = {} dict['one'] = "This is one" dict[2] = "This is two" tinydict = {'name': 'runoob','code':6734, 'dept': 'sales'} print dict['one'] # 输出键为'one' 的值 print dict[2] # 输出键为 2 的值 print tinydict # 输出完整的字典 print tinydict.keys() # 输出所有键 print tinydict.values() # 输出所有值 dict() # 创建空字典 dict(a='a', b='b', t='t') # 传入关键字 dict(zip(['one', 'two', 'three'], [1, 2, 3])) # 映射函数方式来构造字典 dict([('one', 1), ('two', 2), ('three', 3)]) # 可迭代对象方式来构造字典
-
数据类型转换函数
int(x , base = 10) # x为整型或字符串,将x转换为int类型,base为进制数,默认为十进制
float(x)
str(s) # 将对象x转换为字符串
tuple(s) #将序列s转换为元组,序列可以是元组、List、字典
list(s) #将序列s转换为一个列表
chr(i) #将一个整数转换为一个ASCII 字符
unichr(x) # 将一个整数转换为Unicode字符
ord(x) #将一个字符转换为它的整数值
hex(x) #将一个整数转换为一个十六进制字符串
oct(x) #将一个整数转换为一个八进制字符串 -
运算符
数值运算符:+、-、*、/、**、// 其中: **为幂运算:10**20 #10的20次方 //为整除运算:9//2=4 #向下取整 位运算符:&、|、^、~、>>、<< 逻辑运算符:and、or、not #0为false,1为true x1 and x2 或者 not x1 成员运算符:in、not in a in list #判断序列中是否存在指定值,返回ture or false 身份运算符:is、is not #判断两个标识符是否引用同一个对象 x is y
-
在 python 中,strings, tuples, 和 numbers 是不可更改的对象,而 list,dict 等则是可以修改的对象。
-
参数传递中,若传递的是不可变更的对象则函数不会修改参数值,类似值传递。若传递的参数是可修改对象则类似引用传递。
二、逻辑结构
- 条件判断结构
if x == 1: xxx elif x == 2: xxx else: xxx
- 循环结构
结构一: while i==1: print "yes" if i==10: break; i++ else: # 在while正常执行结束后执行,如果是break结束则不执行 print "no" 结构二: for letter in 'Python': # 第一个实例 print '当前字母 :', letter fruits = ['banana', 'apple', 'mango'] for fruit in fruits: # 第二个实例 print '当前水果 :', fruit for num in range(10,20): # 迭代 10 到 20 之间的数字 for i in range(2,num): # 根据因子迭代 if num%i == 0: # 确定第一个因子 j=num/i # 计算第二个因子 print '%d 等于 %d * %d' % (num,i,j) break # 跳出当前循环 else: # 循环的 else 部分 print num, '是一个质数' dic = {'a': 1, 'b': 2, 'c': 3, 'd': 4} for key, value in dic.items(): print(key, value, sep=':', end=' ') for key in dic.keys(): print(key, end=' ') languages = ['Python', 'R', 'Matlab', 'C++'] for i, language in enumerate(languages, 2): print(i, 'I love', language) print('Done!')
- 函数
# 可写函数说明 def sum( arg1, arg2 ): # 返回2个参数的和." total = arg1 + arg2 print "函数内 : ", total return total total = sum( 10, 20 )
三、数学函数、随机函数
部分函数需要import math
函数 | 描述 |
---|---|
abs(x) | 返回x的绝对值 |
ceil(x) | 向上取整 |
cmp(x,y) | x<y返回-1,x==y返回0,x>y返回1 |
exp(x) | 返回e的x次幂(ex) |
floor(x) | 向下取整 |
log(x) | 如math.log(math.e)返回1.0,math.log(100,10)返回2.0 |
max(x1, x2,…) | 返回给定参数的最大值,参数可以为序列。 |
min(x1, x2,…) | 返回给定参数的最小值,参数可以为序列。 |
pow(x, y) | x**y 运算后的值。 |
round(x [,n]) | 返回浮点数x的四舍五入值,如给出n值,则代表舍入到小数点后的位数。 |
sqrt(x) | 返回数字x的平方根 |
random() | 随机生成下一个实数,它在[0,1)范围内。 |
choice(seq) | 从序列的元素中随机挑选一个元素,比如random.choice(range(10)),从0到9中随机挑选一个整数。 |
shuffle(lst) | 将序列的所有元素随机排序 |
uniform(x, y) | 随机生成下一个实数,它在[x,y]范围内。 |
cos(x) | 返回x的弧度的余弦值。 |
sin(x) | 返回的x弧度的正弦值。 |
tan(x) | 返回x弧度的正切值。 |
acos(x) | 返回x的反余弦弧度值。 |
asin(x) | 返回x的反正弦弧度值。 |
atan(x) | 返回x的反正切弧度值。 |
degrees(x) | 将弧度转换为角度,如degrees(math.pi/2) , 返回90.0 |
radians(x) | 将角度转换为弧度 |
pi | 数学常量 pi(圆周率,一般以π来表示) |
e | 数学常量 e,e即自然常数(自然常数)。 |
四、基本数据类型函数
- 列表
list.append(obj) #添加对象 list.count(obj) #统计某个元素在列表中出现的次数 list.extend(seq) #在列表末尾一次性追加另一个序列中的多个值 list.index(obj) #从列表中找出某个值第一个匹配项的索引位置 list.insert(index, obj) #将对象插入列表,index为插入位置 list.pop([index=-1]) #移除列表中的一个元素(默认最后一个元素),并且返回该元素的值 list.remove(obj) #移除列表中某个值的第一个匹配项 list.reverse() #反向列表中元素 list.sort(cmp=None, key=None, reverse=False) #对原列表进行排序
- 元组
元组合并:tup3 = tup1 + tup2 删除元组: del tup 元组迭代: for x in (1, 2, 3): print x 元素是否存在: 3 in (1, 2, 3)
- 字典
dict.clear() #删除字典内所有元素 dict.copy() #返回一个字典的浅复制 dict.fromkeys(seq[, val]) #创建一个新字典,以序列 seq 中元素做字典的键,val 为字典所有键对应的初始值 dict.get(key, default=None) #返回指定键的值,如果值不在字典中返回default值 dict.has_key(key) #如果键在字典dict里返回true,否则返回false dict.items() #以列表返回可遍历的(键, 值) 元组数组 dict.keys() #以列表返回一个字典所有的键 dict.update(dict2) #把字典dict2的键/值对更新到dict里 dict.values() #以列表返回字典中的所有值 pop(key[,default]) #删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。 popitem() #返回并删除字典中的最后一对键和值。 dict.setdefault(key, default=None) #字典中包含有给定键,则返回该键对应的值,如果键不存在于字典中,将会添加键并将值设为默认值,返回为该键设置的值。
五、推导式
1. 列表推导式
[ expr for value in collection [if condition] ]
x = [-4, -2, 0, 2, 4]
y = [a * 2 for a in x]
print(y)
# [-8, -4, 0, 4, 8]
x = [i ** 2 for i in range(1, 10)]
print(x)
# [1, 4, 9, 16, 25, 36, 49, 64, 81]
x = [(i, i ** 2) for i in range(6)]
print(x)
# [(0, 0), (1, 1), (2, 4), (3, 9), (4, 16), (5, 25)]
x = [i for i in range(100) if (i % 2) != 0 and (i % 3) == 0]
print(x)
# [3, 9, 15, 21, 27, 33, 39, 45, 51, 57, 63, 69, 75, 81, 87, 93, 99]
a = [(i, j) for i in range(0, 3) for j in range(0, 3)]
print(a)
# [(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]
a = [(i, j) for i in range(0, 3) if i < 1 for j in range(0, 3) if j > 1]
print(a)
# [(0, 2)]
2. 元组推导式
( expr for value in collection [if condition] )
a = (x for x in range(10))
print(a)
print(tuple(a))
# (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
3. 字典推导式
{ key_expr: value_expr for value in collection [if condition] }
b = {i: i % 2 == 0 for i in range(10) if i % 3 == 0}
print(b)
# {0: True, 3: False, 6: True, 9: False}
4. 集合推导式
{ expr for value in collection [if condition] }
c = {i for i in [1, 2, 3, 4, 5, 5, 6, 4, 3, 2, 1]}
print(c)
# {1, 2, 3, 4, 5, 6}
六、异常处理
try:
检测范围
except Exception[as reason]:
出现异常后的处理代码
-------------------------------------
try:
f = open('test.txt')
print(f.read())
f.close()
except OSError:
print('打开文件出错')
------------------------------------
try:
f = open('test.txt')
print(f.read())
f.close()
except OSError as error:
print('打开文件出错\n原因是:' + str(error))
--------------------------------------------
try:
int("abc")
s = 1 + '1'
f = open('test.txt')
print(f.read())
f.close()
except OSError as error:
print('打开文件出错\n原因是:' + str(error))
except TypeError as error:
print('类型出错\n原因是:' + str(error))
except ValueError as error:
print('数值出错\n原因是:' + str(error))
else:
print('error')
finally:
print("executing finally clause")
-------------------------------
try:
s = 1 + '1'
int("abc")
f = open('test.txt')
print(f.read())
f.close()
except (OSError, TypeError, ValueError) as error:
print('出错了!\n原因是:' + str(error))