一: 数学用两点来定义直线 ,python 也有公理 :变量都是指针
1.注释 # crtl+l
2.变量 --是指针,指向地址 : (应该是这个底层逻辑,较小的数字启动时已经分配好内存)
myvar= 'abc'/‘7’ : (myvar)□--->> □->>'abc'♦ ;(系统先创建一个abc)
(特殊)myvar1 =7 : (myvar)□ --->> 7♦ 系统内本来就有7作为内存
3.赋值语句: # a,b = (1,2)
4.程序顶格写不能随便加空格
5.调用函数是() ,切片索引是[] : eg:a =list(3,5,7)
二、字符串
基本概念
1. 引号{ ‘’ , "" , ‘“ ”’ } 括起来的就是字符串。# ‘7’与7 不同
2. 字符串有下标 ,可以用下标访问 (在结构语句 for i in str)
3. 字符串内部是不可修改类型,(不能用下标访问修改)#不能修改的还有 tuple,set,dict的key ,range()
10.*转义字符--必须用引号括起来, ‘\n ,\t(ab) , ’ ; 10.2 r" str" 取消机制*
拼接操作
4.“+”可以用来连接字符 : (’abc‘+’12‘ >> 'abc12') #4与5 很像辨析
5.字符串和数的转换: str(’123‘) ; **eval(" '1'+'2' )** --把计算结果返回 12(三引号是'12') ,不是3,*并且只能数字加(??) , eval(‘ab’+‘f’) 会报错*
6.字符串拼接格式:
1)%s 一个字符 %d 整数 %f %.nf(保留n位小数,四舍六入)
print( "%d%s" % (18 , 'hello') ) >> 18hello #str
2) -mystr.format() -mystr.format() {序号: 宽度(> < ^ 左、右、中对齐) .精度 类型 }
eg:mystr = 'Hello {0}{1: >5 }。 '.format(‘Mr’ , '13 ') >> Hellp Mr 13
逻辑判断操作
7.用 in not in 判断子串 : ## "+" in 【+,-,x,%】 >> print >> True
分割操作与切片操作
8.字符串割成列表 : mystr.split()-- 每一个元素都是str类型 *两个相邻的分隔符之间会有一个空串*
9.高级分隔符 (nlp) :impore re re.split(x,mystr) eg: re.split('' ;| | \“ | " , MyBook)
11.切片 : ① a【2 : y】 >>【2,y)
② a【2:】 >>【2 : end】
③ a【 : :-1】
字符串函数
s.find('ab') ,s.find('ab',6) , s.rfind('ab')
s.strip() # return 去头尾空白字串
s.
str.eval,exec,locals,compile -- 函数
三、列表与元组与range()(list 添加元素的各种辨析)
一、元组
二、列表
0. a = [] or a =list() #a=[1,2,'3']
1.可以增删元素,可以修改,每个元素可以是任何类型 # del b[1] 下标访问
2.列表增加元素的几种方式辨析: # a =[ 1,2,3 ]
i) a.append( (7,10 ) # a=[1,2,(7,10)] list.append() takes exactly one argument(自变)
ii) “= +” : x = a , a = a+[3,7] # x指向a(a time0 指向存储空间x903871 [1,2,3]) ,step2 是先创建一个新的列表 [1,2,3,3,7] x905876 ,, a(a time1 指向了x905876)
iii)“+=” :x = a , a +=[3,7] # x指向a , a在原列表上修改
#ii) iii)的辨析可理解为 2 是赋值(地址值) ,3 是算术运算
iv) 用“x”法扩充列表 ,x = a *3 # x=[(list)a, (list)a,(list)a]
3.列表切片 # return 一个新列表和存储地址 ,修改子列表,不影响母列表
b =a [::-1] ; b =a [:7:-1] ;b=a[2::] # [,)
4.列表元素遍历 和下标遍历
for x in lst:
for x in range(len(lst))
5.对列表的函数操作都会改变原始的list,索引test时最好新建一个 或拷贝一下
b = sort(a, reverse = True)
b =a[:]# 浅拷贝 只拷贝指针
b = copy.deepcopy(a)# 深拷贝, 需import copy
6.序列运算: 用索引 list[3]
7.列表解析式: sqlist = [x*x for x in range(1, 11)]
obj_upper = [ch.upper() for ch in 'comprehension' if ch not in 'aeiou']
三、range([start=0],stop,[step=1])
1.range()不可变数据类型,必须指定stop
四、字典(映射)与集合(快速查找)
五、I/O factor
Input:
辨析
s=input() #str
l=input().split() #list s=input().split(',')#以逗号空格
>> 输入19 *
print(s[0]) >> 1
print(l[0]) >>19
对于数字型输入:
calc = eval(input('请输入一个数字:'))
print(f"结果:{calc}")
Output:
print 控制格式
1.% 和format 函数
print("%s的年龄是%d岁,收入是%f每年"%(name,age,money)) #name,age,money -- 变量
print("{}的年龄是{}岁,收入为{}每年".format(name,age,money))
2.在""前面加f,在字符串里面使用用花括号括起来的变量和表达式。如果需要标准化输出,在变量后加:和控制字符就行。
print(f'{name}的年龄是{age}岁,收入为{money}万元每月')
print(f'{name}的年龄是{age}岁,收入为{money}万元每月')
print(f"人生苦短\n我用Python") #直接加里面
六、文件、文件夹相关读取操作(os、shutil库)
1.直接用吧:(当然可以封装成一个class来用)
with open (r:'C:\\...' , 'r', encoding = 'uft-8') as f:
lines = f.readlines()
2.理论基础
{ f = open()
{ f.close() 得要一起用
f.read() #读取全部并保存为一个字符串
f.readlines() # 返回一个list ,每行是一个str (结尾是换行符),
文件夹操作: import os,shutil 库
os.getcwd() >>print(*) --获取当前文件夹
os.listdir() >>print(*) --获取当前工作路径下所有文件
os.chdir(r'C:\\') -- 改变路径
os.remove(*) --删除文件
七、局部变量与全局变量(目前遇到实用的内容
1.你需要通过循环处理但要保存的变量设为全局变量
2.为了避免部分全局变量修改,你如何通过局部变量temp 很重要
#浙大pat 时间沙漏的部分
l = input().split()
s1, s2 = int(l[0]), l[1]
Yu =s1+1 #配平
Hang = 1 #其实无所谓 0或者1
# 结构 N-1 /2 还有剩下没用的
# 先确定有几层
maxI = (s1 - 1) // 2
for i in range(maxI): #range(固定住了初始的maxI)
#零时变量
maxI -= (2*i+1)
if maxI >= 0:
Hang = 2*i+1
Yu -= 2*(2*i+1)
else:
break
print(Hang)
print(Yu)
#print(maxI)被修改了
2.但这样temp占了一个全局变量 ?? how to solve
l = input().split()
s1, s2 = int(l[0]), l[1]
Yu =s1+1 #配平
Hang = 1 #其实无所谓 0或者1
# 结构 N-1 /2 还有剩下没用的
# 先确定有几层
temp =maxI = (s1 - 1) // 2
for i in range(maxI): #range(固定住了初始的maxI)
#零时变量
temp -= (2*i+1)
if temp >= 0:
Hang = 2*i+1
Yu -= 2*(2*i+1)
else:
break
print(Hang)
print(Yu)
#print(maxI)
八、类
1.概括类事物:
属性: eg:三维实体 , 长宽高
方法,操作,用function: 求周长(三维) ,求体积
2.继承与派生:B有A的所有属性和function(可以不用,可以修改)
3.static 属性、方法 是全局变量
初始化:
class <类名>:
def __init__(self,<参表>): # 两个下划线
# eg :self.item
self.fx
九、其他杂项
- 绝大多时候迭代语句用符合条件来控制(代码的简洁性 # 也不用第一次就写的完美)
while my_counter <= 10 and not done:
1.概括类事物:
属性: eg:三维实体 , 长宽高
方法,操作,用function: 求周长(三维) ,求体积2.继承与派生:B有A的所有属性和function(可以不用,可以修改)
3.static 属性、方法 是全局变量