- vim main.py:
若要运行首先要在第一行加上#! /user/bin/env python3
第二行加上# -- coding:utf-8 --
```
```
2.运行:python3 main.py这行命令直接就可以运行main.py。或者也可以先加可执行权限:chmod +x main.py,然后 ./main.py直接运行。
3.在命令行中可以直接输入python3 然后就进入了python3的环境中,可以先试着运行下面的代码:print(“Hello World”) 退出,则执行exit()命令即可。
—>也可以ipython3(这个命令python3支持高亮语法)
4.也可以作为计算器(ipython3不用print 回车直接输出)
1).其中/(除法) 默认结果为浮点型,其余加0则为浮点型,其余为整型。
2).如果要实现整除,则需要用//(两个斜杠)。【注意,python3默认向下取整,而C++默认向0取整)】
3).两个为乘方,也可以支持小数,如2.5**3
4).下划线_ 为上一个运算结果。如:如果想让下划线乘以2,则直接*2即可
5).round(x,2) :保留2位小数
5.如果不希望转义:print(r” ‘’) 加上r即可
6.print(“”“\
usage……
……
……
“”“)
功能是实现了三行 。其中三引号”“”输出字符串(\为转义回车)
7.字符串切片:word[0:2] 为[0,2]区间 ,word[-2:]则是倒着往回数。如:word=[abcdefg] 则word[-2:]则为fg
而如果前面的序号在后面的后面 如:a[4:1] 则返回’ ‘空串
8.python字符串不可修改。若要修改,则’J’+word[1:] =>‘Jython’
word[:2]+’py’ => ‘Pypy’
9.python中数组(list) 如:a=[1,4,9,16,25]
=>a output:[1,4,9,16,25]
数组中数据类型可以不同,如:a=[1,2.0,’yxc’] 如:a=[1,2.0,’yxc’,[1,2,3]]
10.浅拷贝:
=> x=[1,2]
=> y=[3,4]
=> a=[x,y]
=> b=a
=>b[0]=’abc’
然后输出a 发现:[‘abc’,[3,4]] (a也跟着变)
11.数组的相加:
=>x=[1,5]
=>y=[3,4]
=>x+y
结果为[1,5,3,4]
如果想要在x尾添加元素? x.append(6)或者x+=[7]
12.清空数组:x[:]=[]
改变数组(长度):x[1,3]=[5.5]
13.x=[[1,2],[3,4]] 可理解为二维数组
14.复合赋值:a,b=0,1
15.print(a,b) 输出1 0(为空格非逗号)
16.a,b=b,a(相当于swap(a,b))
17.循环:while a<10: (无括号带冒号)
print(a)
a,b=b,a+b
则输出0 1 1 2 3 5 8(注意每个都换了行)
18.不希望末尾为换行?
print(a,end=’,’) 则末尾为,+空格
19.将读入转化为整型:x=int(input(“please enter an integer”)) 【注意此处int为函数,不是类型名
20.遍历:
words=[‘cat’,’window’,’defenestrate’]
for word in words:
print(word)
21.users={‘Hans’:’active’, ‘Elenore’:’inactive’, ‘景太郎’:’active}
for user,status in users.copy().items():
if status==’inactive’:
del users[user]
(原键值对不可修改,但可通过浅拷贝修改)
22.range函数:
list(range(9,0,-1)) :返回9~1的等差数列
list(range(9,-1,-1)):返回9~0的等差数列
23.函数
def f(a,b):
print(a+b)
24.函数可以有默认参数
如:def f(a,b,c,d=’yxc’): 若d不传值 默认则为yxc
然后若要赋值,则需要赋一连串的连续的值(如:bcd,不能bd)
25.a=[1,2,3,4]
f(*a) [解包:把a中的四个值传给f当四个参数]
26.a={‘b’:3, ‘a’:2, ‘d’:5, ‘c’:4}
然后g(**a) 则相当于g(b=3,a=2,d=5,c=4) [注意这里的a,b,c,d不代表相对位置,代表绝对位置]
27.def f(x,y):
return x+y
等价于 g=lambda x,y:x+y(lambda表达式)
28.元组:(内部元素不可被修改,不可修改,也不可append或remove) 如:b=(1,2,3)
也可省略小括号:b=1,2,3
也可用元素变量接收元组: x,y,z=b
29.交换元组:a,b=b,a
30.字符串:a,b=”123 321”.split(‘ ‘)
31.集合:
a=set()
a.add(1)
a.add(2)
若再加2 a.add(2) 则不执行
32.{}(大括号既可以表示集合也可以表示字典,区别在于看{}内存的是值还是键值对(类map) )
33.去重 :
=>a=[1,3,1,2,3]
=>set(a) 则去重成功
34.字典:
tel={‘jack’:4098,’sape’:4139}
字典可以修改 如:tel[‘jack’]=8888
35.对数组进行排序?
a=[3,2,1]
sorted(a) (注意sorted方法不会修改原数组的值)
如果想:则a=sorted(a) (将值再赋回去) 或者直接a.sort()
36.zip() 捆绑操作:
a=[1,2,3]
b=[‘a’,’b’,’c’]
for i in range(len(a)): print(a[i],b[i])
<=>for x,y in zip(a,b): print(x,y)
37.a=[1,2,3] 反转a?
1).a[::-1]
2).a.reverse()
38.关于导包
若文件结构
=>tree .
python_lesson
-model_1
–model_a.py
-model_2
则想用python_lesson里的函数?
一).第一种方法:
=>ipython3
=>from python_lesson.model_1 import model_a
下面就可以直接调用了
model_a.fib(10)
model_a.fib(10)
二) . 第二种方法:
=>from python_lesson.model_1.model_a import fib,fib2 (可 以直接导入函数) 【凡是不清楚就直接. 就可以了】
39.调用时起别名:
from python_lesson.model_1.model_a import fib as fib3,fib2
40.其他函数
from random import randint
randint(1,10) (返回从l到r的任何一个随机数)
41.格式化字符串
s=”%04d %.2lf %s” % (2,3.4,”abc”)
这只要后面加上% 就可以像C++里使用printf一样格式化了
42.写文件:
一).
fout=open(‘test.txt’,’w’)
fout.write(“111\n”)
for i in range(10):
fout.write(str(i)+’\n’)
fout.close() 【注意一定要close 不然写道的东西就无法刷新到文件缓存区中)
二).
with open(‘test.txt’,’w’) as fout:
for i in range(10):
fout.write(str(i)+’\n’)
[此函数较强,能防止中途退出导致无法写入或内存泄漏的问题 【注意不用写fout.close()了】]
43.cat命令也可以在ipython3中运行
44.若用with open 则再写fout.write()不管用,因为已经关闭文件了
45.with open(‘test.txt’,’r’) as fin: print(fin.read()) #功能:读取文件的所有内容
也可以:print(fin.readlines()) #返回所有行(是一个个列表)
读入每一行还可写作:
with ……
for line in fin:
print(line,end=’ ‘)
46.异常:
def divide(x,y):
try:
res=x/y
except Exception as e:
print(str(e))
else : print(“result is”,res)
finally: print(“executing finally clause”)
1.若divide(1,0) 则执行except
2.divide(1,1) 执行else
3.finally是无论是否发生异常都会执行的语句
47.
类:
class Car:
static_a=[] (若定义再内部则为静态变量) 即所有该类的对象都会去调用的
如:
=>a=Car()
=>b=Car()
a.static_a.append(1)
b.static_a.append(1)
则调用a.static_a 发现输出了[1,1]
48.
加公有构造函数 init(两个下划线 注意必须这么写)
class Car:
def init(self):
print(“created!!”)
self.a=[]
则调用:
=>a=Car()
=>b=Car()
a.a为[]
a.a.append(1)为[1]
b.a.append(2)为[2] 互不干扰
49.类内定义其他成员函数
class Car:
def init(self):
print(“Created!!”)
self.a=[]
def update(self):
for i in range(len(self.a)):
self.a[i]*=2
调用时:
a=Car()
a.a+=[1,2,3]
a.a输出[1,2,3]
a.update()
a.a输出[2,4,6]
50.class Car:
def init(self,x,y):
print(“created!!”)
self.a=[x,y]
则
a=Car(1,2)
a.a输出[1,2]
51.类的继承:
class Tool(Car): [继承了Car]
def init(self):
print(“create tool!”)
super().init(1,2) [注意必须要显示调用才能使用父类]