基础语法
# coding: utf-8
#!/usr/bin/env #很少用,py解释器路径
'''
注释一般正文和头描述空2行 #
'''
import sys, os
from sys import argv,path
sys.path.append(r"C:\Users\Pwcong\Desktop\python")
import mokuai #mokuai文件夹在上面路径(__init__.py)中定义函数
#数据类型
x16number = int('123abc', 16) #生成16进制整型数字
zstra = "你好"
zstrb = "世界pygood008"
zstr = zstra + zstrb
zbool = true
znone = None
zlist = [1,2,3,('a','b'),('c',)] #列表可以修改,列表中的元组不可修改
nlist = [1,2,3,4,5,6,7,8,9,10]
ztuple = tuple((1,2,3,(1.1,2.2,"test"),[123,456])) #元组不可修改,只有一个元素时候需要加逗号
zdict = dict() #字典每个元素都有一对
zdict2 = {'name':'zhangsan','age':30,1:'one',(1,2,3):[1,2,3]}
info = ('print()'
'%s格式化字符串通用类型、%d格式化整型、%f格式化浮点型、%u格式化无符号整形、%c格式化字符'
'%o,%x,%e、八进制,十六进制,科学计数')
info2 = '''
python中常见的编码格式,gbk,ascii
'''
info3 = {'name':'dog','name':'dog'}
b_bytes = b'only ascII'
b_bytes = zstrb.encode('utf-8',errors='strict') #编码,字符串转为比特
de = b_bytes.decode('utf-8',errors='ignore') #解码,比特转为字符串
#内置函数,成员运算符in、not in、max、min、len,内置函数
result = "世界" in zstr #是否包含元素返回布尔值
del #删除,如果是集合删除对象
dir(b_bytes) #打印可用的属性 和方法
id(nlist[:]) #获取内存地址
range(5)
#字符串
name = 'my name is zhangsan'
print('字符串索引',name[:2])
name.find('zhang') #find找不到返回-1,常用
name.index('sansan') #index找不到返回错误
newstr = string.capitalize() #首字母大写其它小写,只对首字母有效,已经大写则无效
newstr = string.casefold() #多语种全部小写
newstr = string.lower() #英文字母全部小写
newstr = string.upper() #英文字母全部大写
newstr = string.swapcase() #字母大小写互换
newstr = string.zfill(10) #补齐字符串长度为10位,长度不够前面用0补齐,长度够不会变化
newstr = string.replace(old,new,max).replace(old,new) #max是替换几个不写默认全部
inttype = string.count('e') #计算元素个数返回整数
inttype = string.find('a') #查找字符串位置第一个是0,空格算一位,从左到右找不到返回-1
inttype = string.index('a') #找不到返回错误
booltype = string.startswith('my') #确认起始字符,返回布尔值
booltype = string.endsswith('!') #确认结束字符,返回布尔值
booltype = string.isspace() #是否全部空格
booltype = string.istitle() #是否标题,只能单词首字母大写
booltype = string.isupper() #是否大写,只检测字符串里的字母
booltype = string.islower() #是否小写
listname = []
listname.extend(name) #字符串插入列表
listname.reverse()
print(listname)
new_name = name[::-1]
print(new_name)
string.split(sep=None,maxsplit=-1) #切割符默认空格,切割次数
c = 'a|b|c'
c.split('|',1) #切割一次 a b|c
'|'.join(a_list) #列表以特定符号转为字符串,列表成员只能是字符
s = 'asd fgh jkl'
s_list = s.split() #切割为列表,默认空格
sort = sorted(s) #排序后输出列表sorted通用方法
print(''.join(sort)) #排序后列表转字符串
#列表和元祖
a_list = [1,2,3]
list.append('cat')
list.count('dog')
list.remove('dog') #删除列表元素,只删第一个
list.sort(key=None,reverse=False) #默认False升序,True降序
print('#计算列表长度',len(nlist)-1)
print('#列表索引',nlist[0])
print('#切片左含右不含[4,5,6,7,8]',nlist[3:8])
print('#获取完整列表等价[0:]或不含倒数第一个元素[-3:-1]',nlist[:])
print('反序获取列表',nlist[::-1])
print('步长获取切片', zlist[0:8:2])
zlist[2:5] = 'a','b','c'
zlist[2:5] = ['a','b','c']
print('修改索引对应元素后',zlist[:])
print('查找字符c所在位置',zlist.index('c'))
zlist.pop(4) #删除索引对应元素
#字典
mydict = {
'name':'zhangsan',
'age':30
}
lisi = {'name':'lisi','sex':'男'}
user.update(lisi) #用另外一个字典添加老字典name存在则覆盖
wangwu = {'name':'wangwu','Birthday':'2021-10-12'}
user.setdefault(wangwu) #如果有无法覆盖,没有则创建
key_list=list(mydict.keys()) #返回key集合伪列表,变成真列表
name = mydict['name'] #获取字典中key对应的value,不存在返回报错
name = mydict.get('name',default=None) #获取字典中的key的对应value,不存在返回默认值,开发优先使用
values = []
valuse.append(mydict['name'])
valuse.append(mydict['age'])
valuse.append(mydict.get['Birthday','1980-01-01'])
mydict.popitem() #删除最后一组key:value,空字典直接报错
students = {'zhangsan':'在','lisi':'到'}
lisi = students.popitem() #从末尾删除key:value,返回数组
print('{} 喊 {}'.format(lisi[0],lisi[1]))
#集合:无序、不可重复、交集并集差集、无索引,只能加载不可变数据类型
a_set = set()
jihe = {(1,2,3),'123',1}
jihequchong = set(a_list) #集合去重
set.add(a_list[-1])
a_set.update(('a','b','c'))
a_set.remove('a')
a_set.clear()
del a_set #集合无索引,直接删除集合对象本身
a_set.difference(b_set) #差集,a有b没有
a_set.intersection(b_set,c_set) #交集,a中bc也有
company_not_allow.isdisjoint(one_player) #判断两个集合是否包含相同元素,如没有返回True
#逻辑判断
a_if = 'abcde'
user = [
('zhangsan',31)
('lisi',25)
('nan',18)
]
if a_if[0] == 'a' or 'abc' in a_if:
print('if %s' % a_if)
else if 5 < len(a_if) < 10:
print('len is %s' %len(a_if))
else:
print('else %s' % a_if)
user_info = {
'zhangsan':'good'
'lisi':'fuck'
'wangwu':'wondeful'
}
for key, value in user_info.items():
print(key, value) #遍历字典元组数组
for a in range(start,stop,step=1): #生成范围数字并遍历
print('a循环 range %s' %a)
for b in range(10):
print('b循环')
break #直接跳出整个循环体,else不会执行
else:
print('如果for循环报错就不会进入else')
count = 1
while count < 5:
print(count)
continue #跳过本次循环直接进入下一轮循环
count += 1
#函数
def message(message,message_type):
new_message = '[%s] %s' %(message_type,message)
return new_message
result = message(message='今天有雨',message_type='info')
def test(a:str,b:int=18,*tup:int,**dic:str): #py3.7之后可定义数据类型一个*元组,两个**字典
print(a,b,*args,**kwargs)
test(1, 2, 3, 4, 5, 6, 7, name=1, zz=2)
def digui(a): #递归函数
print(a)
return digui(a)
#类、面向对象
class Person(object):
name = None
age = None
def run(self):
print(f'{self.name} 在奔跑')
def jump(self):
print(f'{self.name} 在跳跃')
zhangsan = Person()
zhangsan.name = '张叁'
zhangsan.jump()
# 入口函数,程序结构
if __name__ == '__main__':
name = input("请输入你的名字:")
birthday = input("请输入你的生日:")
print(os.getcwd()) #获取当前路径
print('你的名字叫:%s, 出生于:%s' %(name, birthday))
print('%c' % 1020, '%c' % 'a', '%c' %999999)
print('%u' % -1) #格式化无符号整形
print('%f' % 3.14) #浮点型格式符
print('%d' % 10) #整型格式符号,浮点数会丢弃小数点后面的
print('小猫有 %s 只\n小狗有 %s 只' % (1.2,dog)) #万能格式符
print('%o' % 8, '%o' % 15) #八进制字符格式
print('%x' % 16, '%x' % x16number) #十六进制
print('{:d}'.format(1)) #格式符匹配
print(f'f格式输出小狗有 {info2.count('dog') 只}') #f解析任意格式数据类型
print(r'r为原始字符串标识符,表示内部不转义')
print('sep元素分隔符,end空不换行',a,b,c, sep='|',end='')
print('{0} 喊 {1}'.format(lisi[0],lisi[1]))
print(name*3,zlist*2)
print(type(znumber)) #返回变量类型
"""
python的关键字
强关键字
赋值运算符
比较运算符 <> 是否不等于
身份运算符 is、is not
"""
print函数详解
# coding: utf-8
print('print函数都有下面这些方法{}'.format(dir(print)))
name = ['wang','li']
print('默认换行,如果不换行用end',end=' ')
print('name is {0} and {1}'.format(*name))