python可以使用缩进来代表代码块不需要{},d但同一个代码块的缩进空格必须保持一致。
在python里,所见的一切皆为对象,皆为对对象的引用。
我们创建变量时,在python里是这样运行的:举例a=3,python首先创建变量a,其次创建一个对象存储3,最后通过指针将变量a和存储3的对象连接起来即为引用
变量类型标准数据类型
number、string、list、tuple、dictionary、set(数字、字符串、列表、元组、字典、集合)
数字NUMBERint、float、bool、complex(整形(包含了长整型)、浮点、布尔、复数)
复数由实部和虚部组成表象形式=a+bj,虚部用j或者J进行表示
数字类型转换int(x) float(x) complex(x) complex(x,y)#转换到复数,x为实部y为虚部运算
#除法运算可以丢弃浮点部分 print(17//3) #此结果数据类型与分母分子的数据类型有关系
#在只读模式里_变量被用户视为只读变量运算函数(math)
随机数(random) 基础#取整 math.ceil()#上取整 math.floor() #运算 math.exp(2**3)#返回2 math.fabs()#返回数字绝对值 math.log()#返回幂次math.log(100,10) =2 math.log10() #math.modf() print(math.modf(2.1))#返回整数和小数部分,类型是元组 print(type(math.modf(2.4))) math.round()#浮点数四舍五入,参数两个,浮点数x和取整位数 #math.round(math.pi,3) 3.141 math.sqrt()#返回平方根
import random
#使用随机数必定导入
#建议使用所有随机数前调用seed重新生成种子
print(random.choice([1,2,3,4,5,6,7,8,9]))
print(random.choice(range(10000)))
print(random.choice("runcosnb"))
print(random.choice((1,2,"jkl","23","ll")))
#返回随机列表、集合、元组,字符串里字符或者范围内随机数
#print(random.choice({'ui':0,'iii':9}))好像不能随机字典
random.randrange(x,y,z)#三个参数,依次为x随机数起始位置,随机数结束位置y,递增计数z
print(random.randrange(1,10,3))#用白话讲,可以理解为生成满足y%z=x的范围内的随机数
#随机生成实数 吧
random.uniform(x,y)
#将序列元素随机排列
list2=[1,2,4,555,644,34]
random.shuffle(list2)
print(random.shuffle(list2),type(list2),type(random.shuffle(list2)))#random.shuffle(list2),是在序列内部排序自己不做存储没有返回值
print(list2)
#None
#[1, 34, 4, 555, 644, 2]
shuffles序列所有元素排列
#shuffles具有破坏性,需要每次重置列表,这导致在同一个种子下随机出来的序列是不相同 import random list2=[1,2,4,555,644,34] random.seed(100) random.shuffle(list2) print(random.shuffle(list2),type(list2),type(random.shuffle(list2))) print(list2) random.seed(100) random.shuffle(list2) print(random.shuffle(list2),type(list2),type(random.shuffle(list2))) print(list2) random.seed(100) random.shuffle(list2) print(random.shuffle(list2),type(list2),type(random.shuffle(list2))) print(list2) #目前在pcgram里可以通过将当前的list转存给另外一个list2,用list2展示打乱后结果是可以相同的字符串STRING
python里字符串是通过索引查找对应字符
假设当前runoob为字符串,拿取其中字符有两种,索引或截取
从前面索引是0-5,从后面索引是-6到-1.
从前面截取是1-5,后面截取是-5到-1
str="runoob" #后面索引 -6 -5 -4 -3 -2 -1 #前面索引 0 1 2 3 4 5 #前面截取 :1 2 3 4 5 : #后面截取 :-5 -4 -3 -2 -1 : print(str,str[0],str[-5],str[1:5],str[-5:-1]) print (str * 2) # 输出字符串两次,也可以写成 print (2 * str) #str[-6:],从第一个开始截取 #字符串,字符串第一个字符,字符串索引第二个字符,字符串前面截取通过第1字符到第五个字符,字符串后面截取通过第5字符到第1个字符
python没有其余的字符类型,一个字符就算一个长度为1的字符串
str="runoob" print(str[0],str[5],str[-6],str[-1])格式化字符串%
print("fuck the %s %d years" % ('python',3))
print("fuck the %s %d years %d" % ('python',3,0x26f))
#参考C语言输出
| 符 号 | 描述 |
|---|---|
| %c | 格式化字符及其ASCII码 |
| %s | 格式化字符串 |
| %d | 格式化整数 |
| %u | 格式化无符号整型 |
| %o | 格式化无符号八进制数 |
| %x | 格式化无符号十六进制数 |
| %X | 格式化无符号十六进制数(大写) |
| %f | 格式化浮点数字,可指定小数点后的精度 |
| %e | 用科学计数法格式化浮点数 |
| %E | 作用同%e,用科学计数法格式化浮点数 |
| %g | %f和%e的简写 |
| %G | %f 和 %E 的简写 |
| %p | 用十六进制数格式化变量的地 |
所以这个针对跨行的测试代码超级实用(sqlhtml)
str="""jkkkk shjhdjf ksakhj a shjd' dhhjkfhsjth jkhsjkhjn absdhsdjka""" print(str) #jkkkk #shjhdjf ksakhj shjd' dhhjkfhsj h jkhsjkhj # #absdhsdjka新特性f-string格式化字符串
#!/usr/bin/python
#_*_coding: UTF-8 _*_
name = 'test01'
print(f'hello python fstring {name}')
x = 1
print(f'{x+1=}') # Python 3.8
x+1=2
内嵌函数
str="shdjk"
print(str.capitalize())#首字母转换为大写
#str.center(width,'填充字符') 指定宽度,返回一个宽度居中的字符串,填充字符只能为单个字符不能为字符串.填充规则,不能完全居中的,右边多
str.center(10,'*') #**shdjk***
#查找某个字符串或字符出现次数count,三个参数,搜索字符串,搜索起始位置,搜索结束位置.搜索字符串必须是在被搜索字符串内是连接,不能有其他字符打断
str="shdjk"
print(str.count('k',4,5))#输出1
print(str.count('dk',0,5))#输出0
print(str.count('jk',0,5))#1
#检测某个字符串是否在某个字符串内(可以指的那个范围)
str="shdjk"
print(str.find("hhd",0,5))
print(str.find("hd",0,5))#找到返回1,输出1,没找到返回-1输出-1
#str.index()与find用法一致,但是他找不到回报异常
print(str.index("jjj",0,5))
#Traceback (most recent call last):
#File "C:ProgramEditpythonProject202112245_03test02.py", line 29, in
# print(str.index("jjj",0,5))
# ValueError: substring not found
#修改编码的bytes.decode(),参数以此为要使用的编码,以及编码错误的处理方式
str="时间很紧"
uncode1="utf-8"
uncode2="gbk"
uncode3="us-ascii"
u1=str.encode(uncode1)
u2=str.encode(uncode2)
#u3=str.enco de(uncode3)
u3=u2.decode(uncode3,'strict')
print(u1,u2,u3) #执行会报错u3超范围,因为是ascii
#字符检查函数
#检查字符串是否由纯数字或字母组成 str.isalnum(),返回类型boolean
#检查字符串是否由纯文字(中文法文?)或字母str.isalpha().返回类型boolean
#检查字符串是否由纯数字str.isdigit().返回类型boolean
#字符串中若有字母,检查字母是否都是小写str.islower().返回类型boolean
#字符串中只含有数字或者数字字符,str.isnumeric().返回类型boolean
#检查字符串是否只空白,str.isspace().返回类型boolean
#指定分割字符,通过此字符进行连接
s=" "
str=['a','b','c','d','l',' ','5']
print(s.join(str))#a b c d l 5
#lower转换所有字符变成小写
print(str.lower())
#截取分隔符对字符串切片str.split()
#参数一分隔符,参数二分割次数,不传递分割次数就默认全部分开
str = "this is string example....wow!!!"
print (str.split( )) # 以空格为分隔符 ['this', 'is', 'string', 'example....wow!!!']
print (str.split('i',1)) # 以 i 为分隔符['th', 's is string example....wow!!!']
print (str.split('w')) # 以 w 为分隔符['this is string example....', 'o', '!!!']
#转换函数
str.swapcase()#字符转换函数
列表list(有序对象的集合)
与字符串一样可以被索引或者截取,但需要用逗号分隔开元素列表。
支持三个参数,第三个参数为步长:如当前我要索引1到4之间步长为2的值,则str[1:4:2]
可以通过+连接运算符,*重复操作
list =['12','2','3','4'] list2=['23','34','56'] print(list2[2:]*2+list,list) #['56', '56', '12', '2', '3', '4'] ['12', '2', '3', '4']
def function_fullback(input):
input2 = input.split(" ")
#以某一个字符为基准,拆分字符串为列表
input2=input2[-1::-1]
#列表截取从最后一个开始到第一个结束,步进-1,逆向读取截取
print(input2)
out =' '.join(input2)
#join以某一个字符将列表链接成字符串,这里用' '进行连接
return out
if True :
input = 'fuck python alright'
rw = function_fullback(input)
print(rw)
#列表元素操纵函数
del list[0]
#末尾添加列表、元组、集合
#添加一个对象元素list.append()
#添加多个对象元素list.extend()
list1=['1',2,3]
tuple2=(4,5,6,7)
set2={8,9,10,11}
list1.extend(tuple2)
print(list1)
list1.extend(set2)
print(list1)
#['1', 2, 3, 4, 5, 6, 7]
#['1', 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
#移除元素
#移除位置上元素对象,然后返回移除的值
list1 = ['90hjhjk', 2, 3]
print(list1.pop(0))#90hjhjk
#移除指定元素del list[0]
list1 = ['90hjhjk', 2, 3]
del list1[0]
print(list1.pop(0))#是将对象直接删除,第一位置指针指向第二位置
#清空列表 list.clear()
#list.copy() 复制列表
元组tuple
元组区别去列表list,用()进行分割,而不是[],且元组内元素不能修改,用法与列表一样可以索引,截取,步进+和*等
元组无法删除元素,所以只能通过删除整个元组来进行删除操作
tuple01=()#创建空元组
#元组中只包含一个元素时,需要再加一个逗号否则对当作运算符使用
tuple3= (50)
tuple4 = (50,)
tuple5 = ('jkl',)
tuple6 =('jkl')
print(type(tuple3),type(tuple4),type(tuple5),type(tuple6))
print(5+tuple3,'45'+tuple6)
#
#55 45jkl
#内嵌函数
#将其余迭代系列转换为元组 tuple()
集合set(无序不重复元素序列)
使用{}创建集合,空集合必须使用set(),而非set{},否则创建的是一个字典,集合会自动去重
sites = {'Google', 'Taobao', 'Runoob', 'Facebook', 'Zhihu', 'Baidu'}
print(sites)
#实际观察sites集合输出时,每次输出的不一样,是随机的
元素添加site.add(元素)#添加的元素已存在则不进行任何操作
#update 也可以进行添加元素,不限于元组、字典、列表等
str.update(x,[],(),{})
#remove移除元素,将元素从x中移除,移除元素不存在会发生报错
#len计算元素个数
#clear清楚所有元素
#判断元素是否在集合中 x in set1字典dictionary(无序对象的集合)
两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。键值对
字典支持更新键值对的值
同样支持单个删除字典内容
del dict['name']
dict={}
dict['ome'] = "1--ioioi"
dict['jkl'] = "2-duizi"
dictionary ={'name':1,'name2':2,'name3':3}
print(dictionary.keys())
print(dictionary.vlaues())
#输出结果 name name2 name3
#1 2 3
#创建字典
dict{a='a',b='b',c='c'}
#查询字典长度 dict.len()
#内嵌函数
#clear()清楚字典元素的函数
#拷贝函数copy,这里的拷贝与直接赋值不一样。一般字典的赋值是直接引用,即源字典发生变化,引用的也发生变化;而使用的copy则不会发生改变,还是原来的值,即为深拷贝
dict01 = {1:1,'1':22,3:'jhkl','565':22}
dict02=dict01
dict03=dict01.copy()
print(dict01)
del dict01[1]
print(dict01)
print(dict02)
print(dict03)
#{1: 1, '1': 22, 3: 'jhkl', '565': 22}
#{'1': 22, 3: 'jhkl', '565': 22}
#{'1': 22, 3: 'jhkl', '565': 22}
#{1: 1, '1': 22, 3: 'jhkl', '565': 22}
查询变量类型函数
isinstance(变量名,比较的变量类型)与type(变量名)
#isinstance返回值是boolean类型,type直接返回变量类型名称
#区别
#isinstance会认为当前变量是某一个父类的子类类型;type会认为当前变量自己就是一个父类,所以type不能判断变量是否其余类的子类
class A:
pass
class B(A):
pass
print(isinstance(A(),A),isinstance(B(),A))
print(type(A()),type(B()))
#结果
#True True
#
进制转换函数
oct()#8进制转换 print(oct(8))#012 hex()#16进制转换 print(hex(255))#0xff
类型实际属于对象,而非变量
a=1 a=10.0 a='asd' #这里看着是是a类型发生改变,但实际是创建了三个对象,而a的指针最后指向了存储asd的对象,不删除对象的话1和10.0的对象是不会消失的 #python自带对象垃圾回收装置,当存储值的某一个对象不被引用后,此对象空间自动放入自由空间池等待后来对象使用
在python里,所见的一切皆为对象,皆为对对象的引用。
我们创建变量时,在python里是这样运行的:举例a=3,python首先创建变量a,其次创建一个对象存储3,最后通过指针将变量a和存储3的对象连接起来即为引用
https://www.cnblogs.com/my_captain/p/9063224.html
转义字符/t 空格
print(hellotworld) print(hellooootworld) #是有不同的空格,实际观察第一空3格,第二个空四格 #字表位是四个为一位置,第一个hellotworld中,hello占一个字表位,而o占了一个字表位中的一个位置,而剩下的3个位置被t所取代 #第二个hell、oooo各自占据一个字表位,空格t没有位置了所以单独占据一个字表位的所有位置
r覆盖(回车)
print('hellorworld')
#hello会被world覆盖掉,准确说是r之前的全被wrold覆盖.光标置会开头,重新输入
b退格()
print('hellobworld')
print('hello123123bbbbbworld23')
#输出hellworld,o被干掉了.光标前移一位
\ 输出斜线
print('http:\\')
#同理
'
"
取消转义字符
print(r'hellorworld') #输出前+r可以取消转义字符
python字符串背后不能用反斜线,会报错
print(r'hellorworld') #下面可以,还是因为转义字符 print(r'hellorworld'')
a 电脑执行后有响声


