python学习提纲
Python 学习提纲
1. 关于注释
用#创建注释
2. 数据类型
- 字符串用单引号或双引号
- 字符
- 整型数据
- 浮点数据
3. 常量和变量
增加与减少,x += 1或者 x -= 1
变量名命名规则有四个要求:
- 不能有空格,可能和连接下划线
- 只能使用数字、字母、下划线
- 不能以数字开头,尽量不用下划线,因为下划线开头的变量有特殊的用途
- 不能使用python的关键字。这里可以查关键字
4.语法错误与异常
python有两种错误,一是语法错误,二如果不是语法错误的错误称为异常。
当碰到语法错误时,先找到出问题的那行代码,然后仔细查找并找到解决办法。如果没有头绪,可以上网查。
5. 算术操作符
指数运算:**
取模运算: %
整除运算://
除法:/
乘法:*
加法: +
减法: -
操作符两边的值称为操作数,两个操作数和一个操作符共同构成一个表达式
运算顺序:PEMDAS 。括号parentheses、指数exponents、乘法multiplication、除法division、加法addition、减法substraction
6. 比较操作符
< > >= <= == !=
7. 逻辑操作符
and、or、not
8. 语句
语句可以有简单语句和复合语句。复合句由一个或多个从句构成,从句包括两行或多行代码:代码头 (header)及其随后的配套代码(suite)。代码头指从句中包括关键字 的那行代码,之后是一个冒号:,然后是一行或多行带缩进的代码。
-
条件语句。
if somethign == "something": print("something") else: print("something") if something == "something" : print("something") elif something == "something": print("something") elif something == "something": print("something") else: print("something")语句之间是可以有空行的,不会影响代码的执行,但有时候可以提高代码的可读性。
9. 函数
定义函数:
def [函数名]([逗号分隔开的参数])
def function1(p1,p2,p3):
print("somethign")
return something
内置函数:(builtin function)
复用函数:
函数的必选及可选参数(optional parameter):
def function1(p1,p2=something):
return something
10. 作用域
全局变量(blobal variable) 全局作用域(global scope) 和 局部变量 局部作用域(local scope)
11. 异常处理
python中的每一个异常都是一个对象,查看所有内置异常,如果你认为代码可能会报错,可以用try和except来捕获
a = input("please input a number")
b = input("please input another number")
a = int(a)
b = int(b)
try:
print(a/b)
except ZeroDivisionError:
print("b can not be zero")
try:
a = input("please input a number")
b = input("please input another number")
a = int(a) #如果输入的a不是数字而是字符串,如"hangbu",int(a)会出错。所以把整个语句都放到了tyr中
b = int(b)
print(a/b)
except (ZeroDivisionError,ValueError):
print("invalid input")
不要在except语句中使用在try中定义的变量,因为可能在你定义这个变量之前,异常就发生了。
try:
a = 10/0
b = "我还没有被定义"
except ZeroDivisionError:
print(b)
#这个print(b)执行不了,因为在b变量定义前ZeroDivisionError异常就已经发生了,还没来得及执行b的定义语句。
12. 文档字符串(docstring)
文档字符串用于注释函数的功能。注释每个参数应该使用哪一种数据类型。通常放在函数的顶部。
def function1(x,y):
"""
本函数的功能是什么什么什么东西
:parameter x:int.
:parameter y:int.
:return: int , 值为x和y之和
"""
return x+y
我们在编码时,尽可能都要加上文档字符串,有助于开发者快速编程,也供其它开发者以后阅读。
13. 有需要才使用变量
后面的程序中确需要用到的数据,才有必要将其保存至变量。不要仅仅为了打印数据值就将其保存到变量中。
14. 容器
”愚者困惑,智者提问“
学习三个容器:列表、元组、字典
学习三个容器之前,了解一个概念,即对象的方法。万物皆对象。
列表:
第一种方法使用list()创建。
fruit = list()
第二种方法,将希望放到列表中的所有对象填入到方括号中,用逗号分开,列表中元素可以是任何数据类型。
fruit = ["apple","orange","pear"]
列表中元素是有序的,可以使用append方法向列表中添加一个新元素,添加的元素在列表的末尾。
fruit = ["apple","pear","orange"]
fruit.append("banana")
fruit.append("Peach")
可以用Pop方法移去列表中最后一个元素。
colors = ["black","red","yellow"]
colors1 = colors.pop()
可以使用+号来合并两个列表
color1 = ["red"]
color2 = ["black"]
color3 = color1 + color2
用in检查某个元素是不是在列表中,not in检查是不是不在列表中
colors = ["red","yellow","black"]
"white" not in colors #结果为True
"red" in colors #结果为True
使用len可获得列表的大小(元素的个数)
len(colors)
注意 : 字符串、列表、元组都是可迭代的 (iterable)。如果一个对象中的每一个元素可以使用循环访问的话,那么这个对象就是可迭代的,这样的对象称为可迭代对象,可迭代对象中每个元素都有一个索引(index),即表示元素在可迭代对象中的位置的数字。第一个元素的索引值为0,而不是1。
可以使用 【列表名】【【索引】】获取一个元素。(用英文的方括号,会显示为链接,所以此处用中文的方括号,是不对的)
可以使用[列表名][[索引]]获取一个元素。(加一个\转义符就可以了,自己瞎摸的)
fruit = ["apple","peach","orange"]
fruit[0]
fruit[1]
列表是可变的(mutable),如果一个容器是可变的,那么可以向容器中增、删、修改对象。
colors = ["red","green","yellow"]
colors[1]="black" #修改第二个元素值
元组:(tuple)
元组是不可变的,这一点与列表是不同的。用园括号表示元组,元素用逗号分开。有两种方式可以创建元组。
tuple1 = tuple()
tuple2 = ()
tuple3 = ("hellow",23,True)
注意:如果元组中只有一个元素,后面也需要加上逗号的。不然计算机认不出来是不是元组。
("self_taughte",) # 这是一个元组
(9)+1 #这不是元组
type(("9")) # str
type(("9",)) # tuple
索引、in 、not in等在元组中一样使用。
字典
字典是存储对象的容器,是内置容器。用来连接两个对象。一个对象叫健(key),一个对象叫值(value)。这个连接叫映射,映射的结果就产生了一个健值对。可以通过键来查值,但不能通过值来键。
字典中存储的对象元素是无序的。字典的值可以是任意对象,键是不可变的。字符串或元组可以作为键,但列表或字典不可以
字典的价值在于健与值之间的关联。
用{}来创建字典。有两种方式创建。
dict1 = dict()
dict1 = dict({"bill Gates":"charitable"})
dict2 = {}
dict3 ={"apple":"red","banana":"yellow"}
dict3["dog"] = "black" # 添加 键-值对
dict3["age"] = 51
可以使用in查看某个健是不是在字典中,但不能用于检查某个值是不是在字典中。not in也可以用的
可以使用del删除字典中的键值对
books = {"a":"b","d":"e","f":"g"}
del books["d"]
容器的嵌套
list1 = []
list2 =["a","b"]
list3 = ["c","d"]
list1.append(list2)
list1.append(list3)
# 结果 list 1 = [["a","b"],["c","d"]]
#list1[0] 就是 ["a","b"]
慢慢学吧,有点绕头。
15. 字符串操作
”理论上来说,理论和实践没有区别。但实践上来说,是有区别的“
三引号字符串
字符串跨越一行以上的可以用三引号
""" 第一行
第二行
第三行
"""
索引、负索引
str1 = "abcdefg"
str1[0]
str[-1]
字符串的拼接
"cat"+"dog"
字符串的乘法
"cat"*3
字符串改变大小写
"dog".upper()
"DOG".lower()
字符串的格式化
"{}strs{}strs{}".format("x","y","z") # 结果为"xstrsystrsz"
分割
分割的结果是列表。
>>> "my name is zkx,what is your name?".split(",")
['my name is zkx', 'what is your name?']
>>> "my name is zkx,your name is liwang,his name is wange".split(",")
['my name is zkx', 'your name is liwang', 'his name is wange']
连接
>>> "**".join("abc")
'a**b**c'
>>> "好人".join("你我他")
'你好人我好人他'
>>> "+".join("abc")
'a+b+c'
>>> str1="abc"
>>> "=".join(str1)
'a=b=c'
"".join(字符串列表) 空字符串“”。或者" ".join(字符串列表)
>>> list1 = ["a","b","c","d"]
>>> "".join(list1)
'abcd'
>>> "".join(["zkx","is","a","good","man"])
'zkxisagoodman'
>>> " ".join(["zkx","is","a","good","man"])
'zkx is a good man'
去除空格
去除开关或末尾的空格
>>> " zkx ".strip()
'zkx'
替换
>>> "zkx is a bad man".replace("bad","good")
'zkx is a good man'
>>> "zkx".replace("z","k")
'kkx'
查找索引
查找字符第一次在字符串出现的索引
>>> "animal".index("m")
3
>>> "zkx,zkx,zkx".index("zkx")
0
>>> "zkx,wangli,liwang".index("wang")
4
如果查不到会报异常,可以用try .. except处理
try:
"zkx".index("w")
except:
print("w not found")
in的使用
判断一个字符串是不是在另一个字符串中,返回结果为False 或者 True
字符串转义
>>> "zkx say: "good morning.""
SyntaxError: invalid syntax
>>> "zkx say:\"good morning\""
'zkx say:"good morning"'
python中用\来转义(escaping)。上面的例子也可以用单引号和双引号轮流用来解决。
换行符
字符串中加\n表示换行
切片
slicing(切片),可以将可迭代对象中元素的子集,创建为一个新的可迭代对象。切片时顾头不顾尾。
>>> ["zkx","is","a","good","man"][:3]
['zkx', 'is', 'a']
["zkx","is","a","good","man"][:4]
['zkx', 'is', 'a', 'good']
注意:[0:4]=[:4]
[2:5]=[2:] 一直到末尾
头和尾的索引可以省略,如果均空,表示返回原可迭代对像
有一点奇怪["zkx","is","a","good","man"][2:100]好像也没有报错。
浙公网安备 33010602011771号