1.python数值计算
注意type()——查看变量类型
类型转换
tang2 = int(tang)
type(int(tang))
int
tang_str = 'tang'
type(tang_str)
str
tang_str = '123'
type(tang_str)
str
float(tang_str)
123.0
只有字符串内容是数值时,才能转换为float。
转换为字符串使用str()。
计算先后顺序
- ()
- [**]
- */
- ±
基本数值操作
已经定义好的函数:
abs()—取绝对值;round()—四舍五入取整;min()/max()—最小/大值(逗号分隔);科学计数法—e相当于10 的几次幂(eg:1.3e5==130000.0)
;16进制—0xFF==255
布尔类型(bool)
可以连续比较
tang = 3
1<tang <5
True
2.python字符串
用+号—连接字符串(注意结果无空格)
用*号—重复(注意结果无空格)
用len()—得出字符串大小
字符串操作
假设tang = ‘1 2 3 4 5’
切分:tang.split()—[‘1’, ‘2’, ‘3’, ‘4’, ‘5’]
tang = tang.split(‘,’)—[‘1’, ‘2’, ‘3’, ‘4’, ‘5’]
合并:与tang_str = ’ '合并
tang_str.join(tang)—‘1 2 3 4 5’
替换:tang = ‘hello python’
tang.replace(‘python’,‘world’)—‘hello world’
注意此时:tang—‘hello python’,如果要替换后结果可以定义新变量 tang2 = tang.replace(‘python’,‘world’)
大写:tang2.upper()
小写:tang2.lower()
去掉空格:tang.strip()
去掉左边空格:tang.lstrip()
去掉右边空格:tang.rstrip()
打印字符串,可以使用.format()传参
‘{} {} {}’.format(‘t’,‘y’,‘i’)—‘t y i’
定义顺序—‘{2} {1} {0}’.format(‘t’,‘y’,‘i’)—‘i y t’
指定参数—‘{t} {y} {i}’.format(t = 10, y =5, i = 1)—‘10 5 1’
使用%方式:
tang = 't y i:'
b = 456.0
c = 789
result = '%s %f %d' % (tang,b,c)
't y i: 456.000000 789'
3.python索引
索引—注意索引不能越界
- 从前面是0开始
- 从后面是-1开始
tang = ‘tang yu di’
tang[0]—‘t’;tang[-1]—‘i’;tang[-5]—‘y’
切片:(:表示从哪到哪 左闭右开的区间)
tang[0:4]—‘tang’(4是空格,开区间不取);tang[5:]—‘yu di’;tang[-3:]—’ di’
全部:tang[:]—‘tang yu di’
隔几个:tang[::2]—‘tn ud’
4.python List结构
列表
- 通过[]来创建一个list结构
- 里面放任何类型都可以的,没有一个长度限制
tang = [1,‘tangyudi’,3.5];tang = list([1,2,3])
list操作
假设a = [123,456] b = [‘tang’,‘yudi’]
+:a + b—[123, 456, ‘tang’, ‘yudi’]
*:a * 3—[123, 456, 123, 456, 123, 456]
更改:a[0] = 789 a—[789, 456];a[:] = [‘tang’,‘yudi’] a—[‘tang’, ‘yudi’]
求长度:len()
假设 a = [1,2,3,4,5,6,7,8,9]
删除:del a[0] a—[2, 3, 4, 5, 6, 7, 8, 9];del a[3:] a—[2, 3, 4]
判断列表是否存在某元素:8 in a—True
list中也可以添加list(任何类型):a = [1,2,[3,4]];a[2][1]—4
记数:.count()—判断列表中某元素有多少个
求索引:.index()—得出某元素的索引
列表添加
添加:.append()依次添加
插入:.insert(索引,元素)
移除:.remove(某元素)若元素有多个重复,从索引低的开始移除
弹出:.pop(索引)
排序:.sort()改变原始list;不改变原始list:t2=sorted(t);
倒序:.reverse()
5.python 字典
字典结构
定义:tang = {};tang = dict()
字典结构操作 key-value 没有先后顺序
tang[key] = value;
查找:tang[key];用key值索引
字典里可以嵌套字典:
tang = {}
d1 = {'tang':123,'yudi':456}
d2 = {'tang2':456,'yudi2':789}
tang['test1'] = d1
tang['test2'] = d2
tang
{'test1': {'tang': 123, 'yudi': 456}, 'test2': {'tang2': 456, 'yudi2': 789}}
tang = dict([(‘tang’,123),(‘yudi’,456)])—{‘tang’: 123, ‘yudi’: 456}
改变value值:tang[‘tang’] += 1—{‘tang’: 124, ‘yudi’: 456}
get方法:tang.get(‘fengzi’,‘meiyou’)—‘meiyou’
弹出:tang.pop(‘tang’)—124
删除:del tang[‘yudi’] tang—{}
更新:旧字典.update(新字典)
判断字典中是否存在某key—key in 字典—true/false
调用key集—tang.keys()
调用value集—tang.values()
调用全部—tang.items()
6.python 集合—唯一性
会保留下来唯一的那些元素
tang = set([123,123,123,456,456,456,789]) tang—{123, 456, 789}
集合操作
a,b调换顺序无影响
并集:a.union(b) ;a|b
交集:a.intersection(b);a&b
a,b调换顺序结果不一样
差集:a.difference(b);a - b;b-a
包含:b.issubset(a)—a包含b?;b <= a;b > a
添加元素:a.add(4);
更改集合:a.update([4,5,6])—增添没有的元素
删除元素:a.remove(1)
弹出元素:a.pop()—按照顺序(从头开始)
7.赋值机制
t = 1000
y = t
id(t)
2683811812688
id(y)
2683811812688
t is y
True
y = 123456
id(y)
2683811812976
t is y
False
并且,在python中,如果定义两个较大的数(数值相同),分配两个不同的单元,小数值则分配到同一单元。—提高内存运行效率。
8.python—判断结构
t = 50
if t >200:
print ('200')
elif t < 100:
print ('100')
else:
print ('100-200')
100
注意:缩进
tang = {'t':123,'y':456}
if 't' in tang:
print ('ok')
ok
9.python—循环
while循环
t = 0
while t < 10:
print (t)
t += 1
0
1
2
3
4
5
6
7
8
9
ts = set(['tang','yu','di'])
while ts:
t = ts.pop()
print (t)
yu
tang
di
for循环
t = [123,435,1234,513245,11243,1234,1234,534,346]
for i in range(len(t)):
print (t[i])
123
435
1234
513245
11243
1234
1234
534
346
tang = [10,11,12,13,14,15]
for i in tang:
if i%2 == 0:
print (i)
else:
continue
print (i)
10
10
12
12
14
14
10.python 函数
def add_ab(a,b):
return (a+b)
tang = add_ab(3,5)
tang
8
def add_number(a,*args):#接收不限个数的参数
b = 0
for i in args:
a += i
b += a
return a,b
a,b = add_number(1,2,3)
print (a,b)
6 9
def add_number2(a,**kwargs):#参数只能是键值对(字典)
for arg,value in kwargs.items():
print (arg,value)
add_number2(1,x=2,y=3)
x 2
y 3
11.python 包
脚本文件的执行
%%writefile tang.py
tang_v = 10
def tang_add(tang_list):
tang_sum = 0
for i in range(len(tang_list)):
tang_sum += tang_list[i]
return tang_sum
tang_list = [1,2,3,4,5]
print (tang_add(tang_list))
Writing tang.py
%run tang.py
15
print (tang.tang_v)—10;
更改模块内变量:tang.tang_v = 100
调用:tang_list = [10,11,12] tang.tang_add(tang_list)—33
导入:import tang as tg 可以使用变量以及函数(tg.tang_v;tg.tang_add(tang_list))
—导入部分:from tang import tang_v,tang_add (tang_v;tang_add(tang_list))
—导入全部:from tang import * (tang_v;tang_add(tang_list))
12.异常处理模块
捕捉异常
try:
模块
except 错误名:
print(错误原因)
import math
for i in range(10):
try:
input_number = input('write a number')
if input_number[0] == 'q':
break
result = 1/math.log(float(input_number))#log a>0
print (result)
except ValueError:
print ('ValueError: input must > 0')
write a number4
0.7213475204444817
write a number0
ValueError: input must > 0
write a numberq
import math
for i in range(10):
try:
input_number = input('write a number')
if input_number == 'q':
break
result = 1/math.log(float(input_number))#分母不为0
print (result)
except ValueError:
print ('ValueError: input must > 0')
except ZeroDivisionError:
print ('log(value) must != 0')
except Exception:
print ('ubknow error')
write a number2
1.4426950408889634
write a number3
0.9102392266268373
write a number-1
ValueError: input must > 0
write a number1
log(value) must != 0
write a numberq
自定义异常
class TangError(ValueError):
pass
cur_list = ['tang','yu','di']
while True:
cur_input = input()#输入
if cur_input not in cur_list:
raise TangError('Invalid input: %s' %cur_input)#提出一个错误
tang
up
---------------------------------------------------------------------------
TangError Traceback (most recent call last)
<ipython-input-3-5fb5bf1bf40e> in <module>()
6 cur_input = input()#输入
7 if cur_input not in cur_list:
----> 8 raise TangError('Invalid input: %s' %cur_input)#提出一个错误
TangError: Invalid input: up
关键字finally
无论try的模块中有无异常,最后都可以打印出finally命令行
try:
1/0
except:
print ('==0')
finally:
print ('finally')
==0
finally
使python程序遇到某些危险的情况时可以提前终止
13.文件操作
%%writefile tang.txt
hello python
打开:txt = open(‘./tang.txt’)
阅读:txt_read = txt.read()
单行读:lines = txt.readlines()
关闭:txt.close()
写:txt = open(‘tang_write.txt’,‘w’) ;txt.write(‘jin tian tian qi bu cuo’);txt.close() 注意‘w’模式会覆盖原文—‘a’是追加模式
注意:
写完之后必须关闭,未关闭可能没写上。
with open('tang_write.txt','w') as f:
f.write('jin tian tian qi bu cuo')
with方法可以不加close()
14.类:面向对象
class people:
'帮助信息:XXXXXX'
#所有实力都会共享
number = 100
#构造函数,初始化的方法,当创建一个类的时候,首先会调用它
def __init__(self,name,age):#初始化
self.name = name
self.age = age
def display(self):
print ('number = :',people.number)
def display_name(self):
print (self.name)
people.__doc__
'帮助信息:XXXXXX'
调用类
p1 = people('tdi',30)
p2 = people('python','40')
p2.name
'python'
p1.display()
number = : 100
修改:p2.name = ‘hello’
删除:del p2.name
查看某个对象是否有某个属性:hasattr(p1,‘name’)—True
得到某个对象的某个属性:getattr(p1,‘name’)
设置某个对象的某个属性:setattr(p1,‘name’,‘yTang’)
删除某个对象的某个属性:delattr(p1,‘name’)
继承
class Parent: #定义父类
number = 100
def __init__(self):
print ('调用父类构造函数')
def parentM(self):
print ('调用父类方法')
def setAttr(self,attr):
Parent.parentAttr = attr
def getAttr(self):
print ('父类属性:',Parent.parentAttr)
def newM(self):
print ('父类要被重新的方法')
class child(Parent): #定义子类
def __init__(self):
print ('调用子类构造函数')
def childM(self):
print ('调用子类方法')
def newM(self):
print ('子类给它改掉了')
c = child()
c.childM()
c.parentM()
c.setAttr(100)
c.getAttr()
c.newM()
调用子类构造函数
调用子类方法
调用父类方法
父类属性: 100
子类给它改掉了
15.时间—import time
当前时间:print (time.time())—一般使用两个时间的差异值
易观察的当前时间:print (time.localtime(time.time()))
time.struct_time(tm_year=2022, tm_mon=4, tm_mday=13, tm_hour=21, tm_min=21, tm_sec=21, tm_wday=2, tm_yday=103, tm_isdst=0)
格式化时间类型
print (time.asctime(time.localtime(time.time())))
Wed Apr 13 21:23:03 2022
print (time.strftime('%Y-%m-%d %H:%M:%S',time.localtime()))
2022-04-13 21:23:00
日历:
import calendar
print (calendar.month(2022,4))
#print (help(calendar.month))
April 2022
Mo Tu We Th Fr Sa Su
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30