python ,基础 (小白一个)
Posted zzl-p9
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python ,基础 (小白一个)相关的知识,希望对你有一定的参考价值。
运行第一个py文件:
python3x :python 文件路径 回车 python2x :python 文件路径 回车 区别:python2默认编码方式是ascii码. # -*- encoding:utf-8 -*- python3默认utf-8
变量:
就是将一些运算的中间结果暂存到内存中,以便后续代码调用。 1,必须是由数字,字母,下划线任意组成,且不能 数字开头 2,不能是python中的关键字, 3. 变量具有可描述性,
常量:
一直不变的量. 比如 π=3.1415926 BIR_OF_CHINA = 1949
注释:
方便自己方便他人理解代码 单行注释:# 多行注释:‘‘‘内容‘‘‘
用户交互 input:
1,等待输入 2,将你输入的内容赋值给了前面变量。 3,input出来的数据类型全部是str
基础数据类型初始:
数字:int 1,2,6,7,type()
+ - * \ ** %取余数
字符串:
str,python当中凡是用引号引起来的都是字符串。 可相加 :字符串的拼接 可相乘 :str * int bool:布尔值, True false 字符串转化成数字: int(str)条件:str必须是数字组成的 数字转化成字符串:str(int)
while
while 条件: 循环体 无循循环
初始编码
电脑的传输,还有储存的实际都是010101010101 美国:ascii码 为了解决这个全球的文字问题 ,创建了一个万国码,unicode 1个字节 表示所有的英文,特殊字符,数字等 2个字节 16位表为一个中文,不够,unicode 一个中文用四个字节表示 升级版 utf-8 一个中文 3个字节去表示。 gdk 国内使用,一个中文用两个字节, 中文; 9万多字, 最开始 00000001 8位bit ==1个字节(byte) 1byte 1024byte(字节) == 1kb 1kb 1024kb == 1mb 1mb 1024mb == 1gb 1gb 1024mb == 1tb ascii : 字母;数字;特殊字符;1个字节 8位 Unicode : 两个字节;升级32位;四个字节 utf-8: 最少一个字节;8位表示。 英文字母8位 1个字节 欧洲16位;2个字节 中文24位;3个字节 int;英文1个字节中文2个字节
运算符
字符串的索引和切片
索引
取A
s = ‘ABCDLSESRF‘ s1 = [0] #切片 #顾头不顾尾
取ABCD
s = ‘ABCDLSESRF‘ s3 = s[0:4]
取ACL
s = ‘ABCDLSESRF‘ s[首:尾:步长] s10 = s[0:5:2] s = ‘ABCDLSESRF‘
倒取DCBA
s12 = s[3::-1] s = ‘ABCDLSESRF‘ 倒全取 s14 = s[::-1]
列表的增删改查:
增加
li.append(‘**‘) print(li)
列表多次增加,p停止
whlie l:
username = input(‘>>>‘)
if username.strip().upper() ==‘Q‘:
break
else:
li.append(username)
print(li)
固定列表增加元素:insert
li.insert(4,‘**‘) print(li)
列表最后:
extend li.extend([1,2,3,])
删除 :pop
li,pop(1) #默认删除最后一个 print(li) #按索引去删 name = li.pop(li) #返回值 print(name,li)
li.remove(‘**‘) #按元素去删 :remove print(li)
li.clear() #清空:clear print(li)
del li[2:] #切片删除 :del print(li)
改
li(0) =‘**‘ #索引去去改 print(li) li[0:3] = [‘工人‘,‘张哥‘,‘玉哥‘,] print(li) #切片去改
查
for i in li: print(i) #切片去查 print(li【0:2】)
公共方法
l = len(li) print(l) # 几个元素:len num = li.count(‘**‘) print(num) #元素出现次数:count li.index(‘***‘)# 索引 print(li.index(‘***‘))#直接结果
排序
li.sort() #正向排序 li.sort(reverse=True) print(li) #反向排序
反转
li.reverse() print(li)
列表的嵌套
li = [‘taibai‘,‘武藤兰‘,‘昊天‘,[‘alex‘,‘egon‘,89],23] print(li[1][1])#找到藤字 li[0] = li[0].copitalize() print(li) #首字母大写,替换字符串 li[2] = li[2]replace(‘昊‘,‘旭天‘) print(li) #找到昊天改成昊旭天
元祖。只读列表,可循环查询,可切片。
#儿子不能改。孙子可能可以改
tu[4][3]=[4][3].upper() #孙子改成大写 tu[4].append(‘sb‘) #在孙子里增加 sb元素
join
s = ‘alex‘ sl = ‘_‘.join(s) print(sl)
> a_l_e_x
列表转化成字符串
s = ‘‘,join(列表) print(s)
字符串转化列表用 split()
str——>list
range
for i in range(0,100) print(i) #[1,2,3,4,...99] for i in range(0,10,3): print(i) #步长 [0,3,6,9,] for i in range(10,0,-1) print(i) #倒着来
字典
dict #数据类型划分:可变数据类型,不可变数据类型 不可变数据类型:元祖,bool int str 可哈希 可变数据类型: list dict set 不可哈希 dict key 必须是不可变数据类型, 可哈西 value:任意数据类型。 dict优点:二分查找去查询 储存大量的关系型数据 特点:无序的
增
dicl[‘hige‘] = 185 #没有键值对,添加 dicl[‘age‘] = 16 #如果有健,则值覆盖 dicl.setdefault(‘weight‘) #有键值对,不作任何改变,没有才添加。 dicl.setdefault(‘welght‘,150) dicl.setdefault(‘name‘,‘二哥‘)
删
print(dicl.pop(‘age‘)) #有返回值,按键去删 print(dicl.pop(‘二哥‘,‘None‘)) #可设置返回值 print(dicl.popitem()) #随即删除,有返回值,返回的是元祖 del dicl[‘namel‘] del dicl dicl.clear() #清空字典
改
dicl[‘age‘] = 16 dic = "name":"jin","age":18,"sex":"male" dic2 ="name":"alex","welght":75 dic2.update(dic) #将原有字典的键值对覆盖添加到现有的字典
查
dicl = ‘age‘:19,‘name‘:‘jin‘,‘sex‘:‘male‘, print(dicl.keys()) #键 print(dicl.values()) #值 print(dicl.items()) #键值对 for i in dicl: #键 print(i) for i in dicl.values(): #值 print(i) for k,v in dicl.items(): #k,v去除括号,逗号 print(k,v) #键值对 print(dicl[‘name‘]) #值 dic。get(key,None) print(dicl.get(‘namel‘)) #防止报错
嵌套、
dic = ‘name‘ :[‘alex‘,‘wusir‘,‘taibai‘], ‘py9‘: ‘time‘ :‘1213‘, ‘lenrn_money‘ :19800, ‘addr‘ :‘cbd‘, , ‘age‘ :21 dic[‘age‘] = 56 #年龄改成56岁 print(dic[‘name‘]) dic[‘name‘].append(‘ritian‘)#列表添加‘ritian’ print(dic) dic[‘name‘][1] = dic[‘name‘][1].upper() #把列表里的wusir改成大写 print(dic) dic[‘py9‘][‘female‘] = 6 #py9添加女生6位
######
info = input(‘>>>‘) #ysjs123hsh122jj12 for i in info: #出现3次 if i.isalpha(): info = info.replace(i," ") l = info.split() print(len(l)) #打印数字符串出现次数
元素分类
有如下值,,将所有大于66的值保存至字典的第一个key中, 将小于66的值保存至即(‘k1’‘k2’) li = [11,22,33,44,55,66,77,88,99,90,] dic = l_greater = [] #大于66的所有值列表 l_less = [] #小于66的所有值列表 for i in li: if i == 66:continue if i > 66: l_greater.append(i) else : l_less.append(i) dic.setdefault(‘k1‘,l_greater) dic.setdefault(‘k2‘,l_less) print(dic)
输出商品列表,用户输入序号,显示用户选中的商品 商品 li = ["手机", "电脑", "鼠标垫", "游艇"] 要求:1:页面显示 序号 + 商品名称,如: 1手机 2电脑 。。。 2:用户输入选择的商品序号,然后打印商品名称 3:如果用户输入的商品序号有误,则提示输入有误,if 并重新输入: 4:用户输入Q,退出程序。 while 1: li = ["手机", "电脑", "鼠标垫", "游艇"] for i in li: print(‘\t\t‘.format(li.index(i) + 1, i)) num_of_chioce = input(‘请输入商品序号/输入Q退出程序‘) if num_of_chioce.isdigit(): num_of_chioce = int(num_of_chioce) if num_of_chioce > 0 and num_of_chioce <= len(li): print(li[num_of_chioce]) else: print(‘请输入有效数字‘) elif num_of_chioce.upper() == ‘Q‘ :break else :print(‘请输入数字‘)
集合,可变的数据类型,它里面的元素必须是不可变的数据类型无序,不重复,
setl = ‘ales‘,‘wusir‘,‘ritian‘,‘egon‘,‘barry‘, 增 app setl.add(‘女神‘) print(setl) update setl.update(‘abc‘) print(setl) 删除 setl.pop() #随机删除,有返回值 print(setl.pop()) print(setl) setl.remove(‘alex‘) #按元素删除 print(setl) setl.clear() print(setl) #set() del setl print(setl) 查 for i in setl: print(i)
交集
set1 = 1,2,3,4,5 set2 = 4,5,6,7,8 set3 = set1 & set2 print(set3)
并集
set1 = 1,2,3,4,5 set2 = 4,5,6,7,8 print(set1|set2)
反交集
set1 = 1,2,3,4,5 set2 = 4,5,6,7,8 print(set1^set2)
差集
set1 = 1,2,3,4,5 set2 = 4,5,6,7,8 print(set1 - set2)
子集与超集
set1 = (1,2,3) set2 = (1,2,3) print(set1 < set2) #这两个相同,都是说明set1是set2的子集 print(set1 >set2) #这两个相同,都是说明set2是set1的超集 不可变数据类型 #set可变数据类型 #无序 s = frozenset(‘barry‘) print(s,type(s)) sl = 1,2,3 print(sl,type(sl))
文件操作
练习,txt 1,文件路径,d:\练习.txt 2,编码方式:utf—8,gdk,,,, 3,操作方式:只读,只写,追加,读写,写读。。。。 以什么编码方式储存的文件,就以什么编码打开进行操作。
只读‘r‘,‘rb‘
文件操作
f = open(‘练习.py‘,mode=‘r‘,encoding=‘utf-8‘) content = f.read() print(content) f.close()
f = open(‘练习.py‘,mode=‘rb‘,) content = f.read() print(content) f.close()
读写 f = open(‘log‘,mode=‘r+‘,encoding=‘utf-8‘) print(f.read()) f.write(‘嗯好的故事‘) print(f.read()) f.close()
以bytes类型 f = open(‘log‘,mode=‘r+b‘,) print(f.read()) f.write(‘嗯好的故事‘.encode(‘utf-8‘)) print(f.read()) f.close()
只写。w。没有此文件就会出创建文件, f = open(‘log‘,mode=‘w‘,encoding=‘utf-8‘) f.write(‘夺胎换骨刚刚‘) f.close() 写读 f = open(‘log‘,mode=‘w+‘,encoding=‘utf-8‘) f.write(‘夺胎换骨‘) f.seek(0) print(f.read()) f.close() f = open(‘log‘,mode=‘w+b‘,) f.write(‘夺胎换,‘.encode(‘utf-8‘)) f.seek(0) print(f.read()) f.close()
先将源文件的内容全部清除,在写,
f = open(‘log‘,mode=‘w‘,encoding=‘utf-8‘) f.write(‘君勿矜我玉可切‘) f.close() f = open(‘log‘,mode=‘wb‘) f.write(‘夺胎换骨刚刚‘.encode(‘utf_8‘)) f.close()
追加
f = open(‘log‘,mode=‘a‘,encoding=‘utf_8‘) f.write(‘都的味道无‘) f.close() f = open(‘log‘,mode=‘ab‘) f.write(‘呵呵‘.encode(‘utf_8‘)) f.close()
功能讲解
f = open(‘log‘,mode=‘r+‘,encoding=‘utf-8‘) content = f.read(6) #读出来的都是字符 f.seek(3) #是按照字节定义光标的位置 print(f.tell()) #tai.ou.告诉你光标的位置 content = f.read() print(content) line = f.readline() #一行一行的读 line =f.readlines() #把每一行当成列表中的一个元素,添加到lise中 for line in f: print(line) f.close()
with open(‘log‘,mode=‘r+‘,encoding=‘utf-8‘)as f,\
open(‘log‘,mode=‘r+‘,encoding=‘utf-8‘)as f1:
print(f.read())
总结. 文件处理:
打开文件 open(‘路径’,‘打开方式’,‘指定编码方式’) 打开方式:r,w,a,r+,w+,a+。a+b r+:打开文件直接写 和读完再写 编码方式--utf-8 操作方式: 读 read一次性读 readline一行一行读 readlines一次性读 不知道在哪结束 视频 图片 rb bytes 按照字节读 for循环--最好!! 写 write 光标 -- 文件指针 seek_指定光标移动到某个位置 tell_获取光标当前的位置 truncate_截取文件 关闭文件 close 修改文件
with open(‘姐姐.py‘,encoding=‘utf-8‘) as f,open(‘万分.py‘,‘w‘,encoding=‘utf-8‘) as f2: for line in f: if ‘荷花‘ in line: line = line.replace(‘荷花‘,‘梨花‘) 写文件 f2.write(line) import os os.remove(‘姐姐.py‘) #删除文件 os.rename(‘万分.py‘,‘姐姐.py‘) #重命名文件
以上是关于python ,基础 (小白一个)的主要内容,如果未能解决你的问题,请参考以下文章