python基础总结(1)

变量命名规则

1、变量由字母,数字下划线搭配而成
2、不可以数字开头,更不能全是数字
3、不能是python关键词
4、不要用中文
5、名字要有意义
6、不要太长
7、要区分大小写

注释规则

注释规则
注释不会被python识别
"#" 跟单行注释
'''或者"""多行注释

数据类型

int整数类型

整数类型可以进行+-*/等数学运算

str字符串类型

用"" ''引起来的都是表示字符串
字符串可做+*运算
+表示拼接,字符串只能和字符串相加
*表示重复,能让字符串重复出现输出

bool布尔类型

False假
True真
False和True都是python关键字

输入与输出

输入

# 输入:程序界面(交互式)输入数据到程序中

input('请输入整数:')  # 输入的都是字符串,需要数值得自行转换

输出

# 输出:程序数据输出到程序界面
print()

变量

变量:存储数据的容器
变量:(一般用来)封装(存储)数据,便于修改和复用
本质上真正的容器是数据(结构)本身,变量只是指向容器的门牌号码(指针)。

格式化输出

#                老的格式化方案
#   %s表示在字符串中占位,稍后会填充字符串(任何内容)
#   %d表示在字符串中占位整数(digit)
#   %f表示在字符串中占位小数(float)%f.2(表示小数点后两位)%f.3(表示
#小数点后三位)以此类推



#                新的格式化方案f-string(适用于python3.5以上)
name = "小明"
addr = "中国"
hooby = "学习"
print(f"我叫{name},来自{addr},喜欢{hooby}")

#一种较为麻烦的格式化输出,也能用到
name = "小明"
age = 18
print("我叫{},我今年{}岁了".format(name,age))

基本运算符

#算术运算
a = 10
b = 20
print(a + b)
print(a - b)
print(a * b)
print(a / b)
print(a // b)  #求商
print(a % b)   #求余数
print(a ** b)  #a的b次方
比较运算(简单)
print(a > b)     #大于
print(a < b)     #小于
print(a == b)    #等于(比较对象是否相等)
print(a != b)    #不等于号
print(a >= b)    #大于等于
print(a <= b)    #小于等于
#赋值运算
a = 10
b = 20
a = b #赋值计算,把b赋值给a
a += b #相当于a = a + b
a -= b #相当于a = a - b
#类似还有a *= b    a /= b    a %= b
#逻辑运算(重点)——>布尔值
#and    并且,左右两端同时为真,结果才能是真,有一个假,结局就是假的
#or     或者,左右两端有个一是真的,结局就是真的
#not    非,不。非真即假,非假即真
print(True and False)
print(True or False)
print(not True)

当出现and,or,not,()混合使用时
运算顺序()——>not——>and——>or
print(True or (True and False) and not False)

逻辑运算非常规情况:出现数字逻辑运算怎么办
非零当成True
零当成False
记住or就行了,and与or相反
如果没有零,or运算取前边的值,and取后边的值

编码与解码

基础知识

Ascil:8bit,主要存放的是英文,数字,特殊符号
Gbk:16bit,主要存放中文和亚洲字符,兼容Ascil
Unicode:16bit和32bit两个版本,平常我们用的是16bit这个版本。全世界所有国家的文字信息,缺点:浪费空间(数据和传输)
utf-8:可变长度Unicode,英文:8bit,欧洲文字:16bit,中文:24bit一般数据传输的时候用
以上所有编码都要兼容Ascil

编码

s = "中国"     #内存中使用的是unicode编码
bs = s.encode("utf-8")
print(bs)  #b'\xe4\xb8\xad\xe5\x9b\xbd'    bytes类型
print(type(b'\xe4\xb8\xad\xe5\x9b\xbd'))    #每个/x是一个字节

解码

s = "中国"     #内存中使用的是unicode编码
bs = s.encode("utf-8")
bss = bs.decode("utf-8")       #用谁来编码就用谁来解码,不同的编码之间不能直接转换
print(s)

要先编码再解码

索引和切片(字符串,列表,字典,元组等等都能索引和切片)

索引

s = "我喜欢你"
s1 = s[0]     #[]这个符号是str的索引号,[-1]就表示倒数第一个字符,[0]表示第一个字符,以此类推
print(s1)
print(s[2])

切片

切片的语法:
s[ start : end : step ]
start:起始位置
end:结束位置(取不到)
step:步长,每几个出来一个,如果是负数就倒着数
例如

s = "我爱我的祖国"
print(s[2:6])     # 规则是"顾头不顾尾",即[2:6]能取到2取不到6
print(s[2:])      # 中括号后面什么都不写表示直接切到末尾
print(s[:])       # 中括号前面什么都不写表示从头开始切
# 切片默认从左往右切,如果非要从右往左切需要加上第三个参数
s = "123456789"
print(s[9:0:-1])    # -表示倒着切,-1表示倒着一切一个
print(s[1:9:2])     # 第三个参数2表示每两个数出一个

str相关

字符串是不可变对象,任何操作对字符串来说是不会有任何影响的

大小写

s = "i am liming.I LOVE YOU"
s1 = s.capitalize()    # 首字母大写,后面都是小写
print(s1)
s2 = s.lower()     #全变成小写
print(s2)
s3 = s.upper()     #全变成大写
print(s3)

查找

startswith()  #判断字符串是否以xxx开头

endswith()    #判断字符串是否以xxx结尾

count()       #判断字符串中出现多少个xxx

find()        #查找字符串,返回索引,查不到返回-1,不会报错

index()       #查找字符串,返回索引与find本质区别是index找不到会报错

list列表(增、删、改、查)

列表用[]表示,每一项要用','隔开,不限制长度
列表里边什么都能放

#列表的追加用append,使用最多
s = [1,2,3,4,5,6,7,8]
s.append(9)
print(s)
#列表数据插入用insert
s = [1,2,3,4,5,6,7,8]
s.insert(1,9)     #括号内第一个位置和索引一样,表示位置,第二个位置是插入的内容
print(s)
#迭代新增用extend
s = [1,2,3]
s1 = [4,5,6]
s.extend(s1)
print(s)

#列表删除remove
s = [1,2,3]
s.remove(1)
print(s)
# 列表删除pop,默认删除列表最后一个值,但可以指定位置,方法与索引一样
s = [1,2,3,4,5,6]
s.pop()
print(s)
s1 = s.pop(0)
print(s1)
# 列表删除del
s = [1,2,3,4,5,6]
del s[0]
print(s)
# 列表清空clear
s = [1,2,3]
s1 = s.clear()
print(s1)

#列表修改
s = ["1","2"]
s[1] = "3"
print(s)
# 结果是['1','3']

# 列表查询,range()
for i in range(10):
    print(i)
for s in range(5,10,2):
    print(s)

其他操作

使用for循环拿到索引和元素

# 使用for循环,拿到索引和元素
s = ["哈哈","呵呵","嘿嘿"]
for i in range(len(s)):
    print(i)
    print(s[i])

在列表中批量修改内容

#在列表中批量修改内容
s = ["王一","王二","张三","李四","王五"]
for i in range(len(s)):
    item = s[i]
    if item.startswith("王"):   #判断是否姓王
        s[i]="姓王的"           #修改内容
print(s)

排序

s = [25,84,666,991,355,541,24,5,1]
s.sort()    #默认从小到大排序
print(s)
s.sort(reverse=True)   #reverse为翻转,这种方法可以实现从大到小排序
print(s)

tuple元组

元组和列表操作大致一样
但是元组不能修改
例如

s = ("我","你","他")
s[1] = "您"
#执行该程序就会报错,因为元组不能修改
#当元组里面只有一个元素时
#应当这样写
s = (1, )
#这样才是元组

元组也能循环

s = (1,2,3,4,5,6)
for i in s :
    print(i)

dict字典(增、删、改、查)

字典用{}表示,列表用[]表示
例如,通过key找value值

s = {"key1":"values1","key2":"values2","key3":"values3"}
print(s["key1"])

不可哈希的数据类型不能当字典的key值,int,str,bool,tuple可哈希,其他都不可哈希

第一种:字典[ 新key ] = 新值

d = {1:"haha",2:"heihei"}             
d[3] = "hehe"  
print(d)

第二种:key必须不存在才能添加

d = {1:"haha",2:"heihei"}
d.setdefault(4,"huhu")        
print(d)

变量.pop("key")
变量.clear()
del 变量[ key ]

d = {1:"haha",2:"heihei"}
d[1] = "hehe"   #d[老key] = 新值
print(d)

d = {1:"wo",2:"ni",3:"ta"}
print(d[1])   #当查询的key不存在时程序会报错
print(d.get(1))  #当查询的key不存在时程序返回none

练习

#练习,把(11,22,33,44,55,66,77,88,99)大于50的放一起,小于50的放一起
lst = [11,22,33,44,55,66,77,88,99]
item = {}
for i in lst:
    if i > 50:
        if item.get("bigger")==None:  #如果key"bigger"不存在
            item["bigger"]=[]         #那就创建key"bigger"
        else:
            item["bigger"].append(i)  #然后把循环得出大于50的值塞进去
    if i < 50:
        if item.get("smaller")==None:
            item["smaller"]=[]
        else:
            item["smaller"].append(i)
print(item)

简化版

#用setdefault来写
lst = [11,22,33,44,55,66,77,88,99]
result = {}
for i in lst:
    if i > 50:
        result.setdefault("bigger",[]).append(i)
    else:
        result.setdefault("smaller",[]).append(i)
print(result)

文件操作

用open()打开文件格式("文件路径",打开模式mode="r",encoding="utf-8")../表示返回上级目录

r操作,只读模式

1.read()

f = open("文件名字",mode="r",encoding="utf-8")
print(f.read())  #默认读取全部内容,文件大的话容易爆内存,有风险

2.readline()

f = open("文件名字",mode="r",encoding="utf-8")
print(f.readline())  #一次读取一行内容,中间会有空行
print(f.readline())
print(f.readline())

3.for循环(重点)

f = open("文件名字",mode="r",encoding="utf-8")
for line in f:         #一次循环输出一行
    print(line.strip())  #+strip()可以去掉空行

4.前面一行单独读取后面用for循环

f = open("文件名字",mode="r",encoding="utf-8")
first = f.readline()
print(first)
print("==============")
for line in f:
    print(line.strip())

w模式

只写模式,只能写不能读,重新创建文件

f = open("文件名字",mode="w",encoding="utf-8")
f.write("写的内容")
f.write("\n")    #反斜杠\n表示换行
f.write("写的内容")

a模式

append,追加写,不会重新创建文件,但是如果文件不存在可以重新创建

f = open("文件名字",mode="a",encoding="utf-8")
f.write("hello")

b模式

bytes,二进制 一般处理非文本文件,不能指定encoding

# rb 读取字节
# wb 写入字节
# 可用于复制非文本文件
f1 = open("非文本内容",mode="rb")
f2 = open("位置",mode="wb")
for line in f1:
    f2.write(line)
# 爬取资源要用的到

with语句

with语句,可以省掉末尾.close,省去繁琐步骤
类似于

with open("草稿.txt",mode = "r",encoding="utf-8")as f1,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值