【python快速入门】—唐宇迪课程笔记

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
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值