Python基础以及常见问题的处理方式(附所有详细代码,欢迎留言交流和补充)

本文详述Python基础,涵盖数据类型、控制流程、函数、类和异常处理等内容。讲解了数值类型、序列类型(如字符串、列表、元组、字典、集合)的操作,包括增删改查、编码、迭代、逻辑运算符、深浅复制等。还介绍了类的定义、继承、方法、初始化、析构、魔术方法。同时,涉及文件操作、异常处理、迭代器和生成器的使用,以及正则表达式的概念和re模块的应用。
摘要由CSDN通过智能技术生成

首先,博主是自学的Python,肯定会有错误emmmm希望大家不要喷我。。。如果有错误或者哪里我没有写清楚的,欢迎大家留言指出,在这里先感谢大家啦。现在我们进入正题!!!

一、数据类型

一、数值类型

Q1:Python里面怎么做简单的加减乘除?
Q2:怎样方便的把计算结果保存下来,方便下次计算?
Q3:Python中小数是怎么计算的呢?小数和整数的混合运算计算结果是怎样的呢?
Q4:Python中总共有多少数值类型?

数值类型一共有四种:
  浮点型;float;
  整型:int; 
  复数型:complex; 
  布尔型:bool

变量命名规则:变量名开头不能是数字,不能是纯关键字(例如:list,tuple等)

1.常用运算符

运算符
+(加) -(减) *(乘) /(除) %(取余数) // (默认向下取整) **(次方)

向下取整:不管小数点后面的数字,直接取前面的
向上取整:不管小数点后面的数字,直接进一位
要想向上取整可以导入math模块

import math #导入
b = math.ceil(5/2) #向上取整
print(b)

2.decimal的运算

python计算是不精确的,要想精确计算需导入decimal

mport decimal #导入
c = decimal.Decimal('2.2') #精确数计算
d = decimal.Decimal('2')
print(c-d)

3.布尔型的计算

布尔类型不是用来计算,是用来判断,首字母必须大写

4.复数

e = 1+1j 

这里j前的1必须写

二、序列类型

Q1:在Python中如果我想表示字母怎么办呢?
Q2:在Python中有东西既可以放字符串又可以放数值吗?
Q3:字符串和元组不可变,那如果一定要改变呢?
Q4:不同的序列类型可以相互转化吗?
Q5:列表和元组有什么区别呢?

1.字符串:

Q1:字符串也可以像其他数据类型一样进行增删改吗?
Q2:如果可以的话,那是要用什么方法呢?
放字母单引号和双引号没有实质区别

a = 'abc' #字符串(string)
print(a)
1. 字符串的增删改查
#增
# 字符串拼接  +
a = 'hello'
b = 'world'
print(a+b)

#删
st3 = 'asdasdasdwqezc'
print(st3.replace('q','uuu')) #有内容时表示替换
print(st3.replace('q',''))  #为空格时表示删除

#改
st2 = '  asdasd  asdwqezc  '
print(st2.upper())  # 转化为大写
print(st2.lower())  # 转化为小写
print(st2.lstrip()) #去掉左边的空格
print(st2.rstrip()) #去掉右边的空格
print(st2.strip()) #去掉全部空格
print(st2.capitalize()) #首字符大写
print(st2.title()) #每个单词首字母大写
print(st2.split('s')) #切割,以s切割

#查
st = 'asdasdasdwqezc'
print(st.count('a')) # count 计数
print(st.index('s',3)) #查询元素索引,3表示从索引为3的开始查找
print(st.find('a',9)) #查询元素索引,可返回负数值
print('123'.isdigit()) #判断全部为数字
print(st.isalpha()) #判断全部为字符
print(st.endswith('a')) #判断最后一个字符是什么
print(st.startswith('a')) #判断最开始的字符是什么
print(st.islower()) #判断字符串内所有内容是否为小写
print(st.isupper()) #判断字符串内所有内容是否为大写
2.字符串的转义

字符前面加上 \ ,字符就不再表示字符本身的意思,表示ASCII码中不能显示字符,常见有下:

\n    换行
\t    水平制表符
\b    退格
\r    回车,当前位置移到本行开头
\\    代表反斜杠 \
\’   代表一个单引号,同样的"等符号也可以这么输出
\0    代表一个空字符
\a    系统提示音

在python中如果要去掉字符串的转义,只需要在字符串前面加上r’asd\aqwe’(在后面文件那一章的时候大家会看到详细用法)

print('asd\nqwe') #换行
print('asd\tqwe') #水平制表符(相当于加空格)
print('asd\bqwe') #退格(删除前面一个)
print('asdqzxc\rwe') #回车
print(r'asd\aqwe') #去掉字符串的转义
3.字符串编码

Q1:上面我们知道了了在python内部要对字符串进行是为了输出和传输,那python中字符串的可以直接在网络上传输吗?
Q2:如果不可以的话,python内部是怎么做的呢?

a = '张三'.encode(encoding='UTF-8') #编码
b = '张三'.encode(encoding='gbk')
print(a)
print(b)
print(a.decode())
print(b.decode(encoding='gbk'))
字符串编码的作用

Python统一了编码,这样Python在内部处理的时候不会因编码不同而出现程序不能正常执行的问题。
Python会自动根据系统环境选择编码,但是经常在文件传输的过程中,
会遇到各种不同的编码,这个时候就需要我们去处理编码问题。

4.字符串的拼接
st = 'hello'
st1 = 'world'
st2 = 'zs'
st3 = '20191216'
#1.拼接
#(1).使用 +
print(st+st1+st2)

#(2).格式化字符串 : ' %s %s %s '%(str1,str2,str3)
a = '%s %s %s'%(st,st1,st2)
print(a)
b = '%s年%s月%s日'%(st3[0:4],st3[4:6],st3[6:8])
print(b)

#(3).使用join : ’’.join([str1, str2, str3])
c = ' '.join([st,st1,st2]) #''中写什么就拼出什么,不止字符串()元组和[]列表都可以
print(c)

# (4).使用 format
#     ' {} {} {} '.format(obj1,obj2,obj3)
#     ' {0} {1} {2} '.format(obj1,obj2,obj3)
#     ' {1} {0} {2} '.format(obj1,obj2,obj3)
#     ' {n0} {n1} {n2} '.format(n1=obj1,n0=obj2,n2=obj3)
d = '{}{}{}'.format(st,st1,st2)
e = '{1}{0}{2}'.format(st,st1,st2) #数字表示索引
f = '第一句{} 第二句{} 第三句{}'.format(st,st1,st2)
g = '{n1} {n2} {n3}'.format(n1='a',n2='b',n3='c')
print(d)
print(e)
print(f)
print(g)
5.字符串格式化
print('%d'%123)  #%数字 只留整数部分
print('%f'%123)  #%浮点数
print('%6.3f'%10.2)  #%总共6位,小数点后面3位
print('%-16.3f'%10.2)  #%左对齐
print('%s'%'asd')  #%字符串                  掌握
print('%r'%'asd')  #%字符串(有引号)          掌握
print('%5s'%'123')  #%格式化长度
print('%c'%65)  #%ASCLL字符
print('%o'%9)  #%8进制
print('%x'%17)  #%16进制
#format
print('{:.2f}'.format(12.456)) #2表示保留小数点后两位
print('{a:.4f}'.format(a = 12.456))
print('{:.3%}'.format(0.228)) #百分比格式,3表示保留小数点后面3位
print('{:o}'.format(9)) #o为8进制,x为16进制,b为2进制
print('{a:<10}'.format(a = 12.333)) #左对齐,长度为10
print('{a:c<10}'.format(a = 12.333)) #< 左对齐,长度为10,用c替换
print('{a:c>10}'.format(a = 12.333)) #> 右对齐,长度为10
print('{a:c^10}'.format(a = 12.333)) #^中间对齐,长度为10

2.列表

什么都可以放
Q1:前面我们知道了怎么对列表的取值,那有什么方法对列表进行操作呢?
Q2:列表除了增删改查还有没有其他的方法?

li = [1,2,3,True,'a','b'] #列表(list)
print(li)
1.列表的增删改查
#增
    # append 追加
    # insert 插入
    # extend 添加序列(迭代)
a = [1,2,3,4,5]
a.append('a') #追加
print(a)
a.insert(2,'b') #插入,2是索引,'b'是插入的值
print(a)
a.extend([6,7,8]) #添加序列类型(只能是序列类型 元组,列表,字符串)
a.extend((9,'c'))
a.extend('def')
print(a)
#删:
    # pop 删除对应索引
    # remove 删除对应元素
    # clear 删除所有
a.pop(0) #删除对应索引,如果括号里面没有值默认删除最后一位
del a[0:2] #同上,但是可以删除多个。可以索引,可以切片
print(a)
a.remove('f') #删除对应元素,若有相同的默认删除第一个
print(a)

#改:
li[0] = ' list '
a[0] = 1
print(a)

# 查:
print(a.index(4)) #查询索引位置.相同的默认第一个
print(a.count(6)) #查找出现次数
2.其他方法

#     copy 复制
#     reverse 逆序
#     sort 正序
b = a.copy() #复制
c = [1,9,8,6,7,2,3,5,4]
c.reverse() #逆序
print(c)
c.sort() #只能同种类型间进行排序
print(c)
c.reverse()
print(c)

3.元组

Q1:元组有哪些方法呢?
什么都可以放

tu = (1,True,'啦啦啦',(1,2),[4,5]) #元组(tuple)
print(tu)
1.元组的方法

(元组不可直接变,如果需要改变,转化成列表即可,元组中只有 count 和 index 方法,方便查找元组中的数据)

# 查:
tu = (1,1,2,3,4,4,4,5,6,'a','b')
print(tu.index('a')) #查询元素索引
print(tu.count(1)) #计数
2.强制转换,查看内存地址
tu1 = list(tu) #强制转换为列表
print(type(tu1))
print(id(tu1)) #查看内存地址

4(*).bytes二进制序列类型

Q1:Python中的序列类型还有吗?
bytes和bytearray

a = bytes(3) #3表示二进制对象的长度,以0填充字节对象
print(a)
print(a[0]) #可以用切片索引取值,故也是序列类型
b = bytearray(3) #指定长度的零填充字节对象
print(b)
print(bytearray(b'abc'))  #二进制字符串对象

5.序列类型的取值(索引取值,切片)

li = [1,2,3,True,'a','b'] 
print(li[1]) #取里面的值,索引下标从0开始
print(li[0:2]) #取一段的值,切片(左闭右开)
print(li[0:6:2]) #间隔取值,2表示步长(即从1开始走2步)
print(li[6:0:-2]) #倒序取值,
 print(li[-1])  #从后往前取值

三、散列类型

1.字典:

Q1:在Python中有键值对这样的数据类型吗?

键值对,成对形式出现

唯一性:键不能重复,值能重复,
有序性:通过键找到对应的值,
可变性:键是不可变的,但字典是可变对象。
1.两种定义方式(直接定义或者使用dic函数)
di = {
   'name':'李四',
  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值