一、 核心基础
1、导入Python模块的基本方式
import、from
import math #导入模块中的所有内容
print(math.sin(1.2))#使用
from math import cos,tan #从模块中导入部分内容
print(cos(2.3))#使用,不需要写模块名,前缀
from math import * #导入模块中的所有内容
2、指定别名
import math as m
print(m.sin(1.2))#原名称不能用
from math import cos as c
print(c(2.3))
3、设置Python模块的搜索路径
(1)设置Python模块的搜索路径有几种方式?
- ①设置PYTHONPATH环境变量;
- ②添加.pth文件;
- ③通过sys.path设置路径;
- ④如果使用PyCharm,可以直接设置搜索路径。
(2)永久设置Python模块搜索路径有几种方式,如何使用?
- ① 如果使用PyCharm,可以直接设置搜索路径(文件夹-Mark Directory as-Sources Root(unmark取消);
- ②控制台添加环境变量;
- ③添加.pth文件。
(3)如何临时设置Python模块的搜索路径?
- ①设置PYTHONPATH环境变量(copy path,复制到搜索路径中环境变量处);
- ②控制台添加环境变量,export PYTHONPATH=路径;
- ③通过sys.path设置路径。
import sys
sys.path.append('路径')
#临时设置PYTHONPATH(site)
4、不同数据类型的变量或值首尾相接
(1)字符串与字符串连接方式:5种
①加号
s1='hello'
s2='world'
s=s1+s2
print(s)
②直接连接
s='hello''world'
print(s)
③用逗号,连接,标准输出重定位
print('hello','world')
from io import StringIO
import sys
old_stdout=sys.stdout
result=StringIO()#保留老的
print('hello','world')
sys.stdout=old_stdout#恢复标准输出
result_str=result.getvalue()
print("用逗号连接:",result_str)
用逗号连接: hello world
④格式化(更改格式),%前后对应
s='<%s><%s>'%(s1,s2)#%前后对应
print('格式化:',s)
⑤join,将列表中的每一个元素通过前面的分隔符连接起来
s="".join([s1,s2])
print("join连接:",s)
(2)字符串与字符串连接方式:3种
①加号,非字符串通过str()转化成字符串
n=20
v=12.3
s=s1+str(n)+str(v)
print(s)
②格式化
s='<%s><%d><%.2f>'%(s1,n,v)#字符串、整型、浮点型
print('格式化',s)
③重定位
from io import StringIO
import sys
old_stdout=sys.stdout
result=StringIO()
print(s1,True,n,v,sep="*")
sys.stdout=old_stdout#恢复标准输出
result_str=result.getvalue()
print("用逗号连接:",result_str)
用逗号连接:helloTrue20*12.3
(3)字符串与对象连接时如何让对象输出特定的内容:如MyClass(类)
class MyClass:
def __str__(self):
return 'This is a MyClass Instance.'
my=MyClass()
s=s1+str(my)
print(s)
5、十进制、二进制、八进制和十六进制之间的相互转换
(1)如何表示不同进制的数值
n1=1234#十进制
n2=0b11101#二进制(0b,不区分大小写)
print(n2)
n3=0o123#八进制(0o)
print(n3)
n4=0xF15#十六进制(0x,0-F)
print(n4)
29
83
3861
(2)进制之间的转换
#十进制转换为二进制(十进制外的格式均为str)
print(bin(120))
#二进制转换为十进制
print(int('10110',2))
#十六进制转换为十进制(前缀无所谓加不加)
print(int('0xF15',16))
#十进制转换为十六进制
print(hex(54321))
#十六进制转换为二进制
print(bin(0xF15))
#二进制转换为十六进制
print(hex(0b1101110101))
#十进制转换为八进制
print(oct(1234))
#八进制转换为十进制
print(int('3213',8))
#不同进制相乘,输出仍为十进制
print(0b11010101*0XF12*0o432*123)
0b1111000
22
3861
0xd431
0b111100010101
0x375
0o2322
1675
28503359244
6、改变字符串(每个单词)首字母的大小写
(1)字符串首字母大小写转换
s1='hello'
print(s1.capitalize())
s1=s1[0:1]+s1[1].upper()+s1[2:]
print(s1)
s2='Hello'
s=s2[0].lower()+s2[1:]
print(s)
Hello
hEllo
hello
(2)如何将字符串中每个单词的首字母变成大写,拆分(按空格)
s3='hello world'
arr=s3.split(' ')#空值拆分每个单词
new_str=f'{arr[0].capitalize()}{arr[1].capitalize()}'
print(new_str)
7、如何检测一个字符串否为数字
(1)如何检测字符串是否为数字(数字和字母混和形式)
s1='12345'
print('是数字',s1.isdigit())#检测是否为数字
print(int(s1))
是数字 True
12345
s2='12345a'
print('12345a是数字:',s2.isdigit())
print('12345a是数字字母混合形式:',s2.isalnum())#检测是否为数字和字母混合
s3='12345_a'
print('12345_a是数字字母混合形式:',s2.isalnum())#下划线不属于字母和下划线
12345a是数字: False
12345a是数字字母混合形式: True
12345_a是数字字母混合形式: True
(2)怎样将一个字符串转换为数字才安全,先用isdigit进行判断
s2='123a'
if s2.isdigit():
print(int(s2))
else:
print('s2不是数字,无法转换')
s2不是数字,无法转换
try:
print(int('222aaa'))
except Exception as e:
print('223aaa不是数字,无法转换')
print(e)
223aaa不是数字,无法转换
invalid literal for int() with base 10: ‘222aaa’
8、如何反转字符串
(1)如何反转字符串
#循环
s1='abcde'
s2=""
for c in s1:
s2=c+s2
print(s2)
a
ba
cba
dcba
edcba
(2)如何用分片反转字符串
print(s1[::2])
print(s1[::-1])#步长设为-1
ace
edcba
9、格式化整数和浮点数
(1)整数格式化
#格式化整数,按10位输出,不足10位前面补0
print(format(n,'10d'))
print(format(n,'0>10d'))
print(format(n,'0<10d'))
20
0000000020
2000000000
(2)格式化浮点数
#格式化浮点数,保留小数点后2位
x1=1.234
x2=32.3
print(format(x1,'0.2f'))#多了截取
print(format(x2,'0.2f'))#不足补0
1.23
32.30
(3)format函数
#描述format函数用法
print(format(x2,'*>15.4f'))#右对齐,15位
print(format(x2,'*<15.4f'))#右对齐,15位
print(format(x2,'*^15.4f')) #中心对齐,15位
print(format(123456789,','))#千位号分割
print(format(123456789.3456789,',.2f'))
print(format(x1,'E'))#科学计数法
print(format(x1,'0.2E'))#科学计数法,保留小数点后2位
32.3000
32.3000
32.3000
123,456,789
123,456,789.35
1.234000E+00
10、你了解Python字符串吗
(1)如何同时在字符串中显示单引号和双引号
print('hello "world"')
print("hello 'world'")
print('"hello"\'world\'')#转义符,\后的输出引号
hello “world”
hello ‘world’
“hello”‘world’
(2)如让转义符失效(3种方法:r、repr和\)
print('Let\'s go!')
print(r'Let\'s go!')#r
print(repr('hello\nworld'))#repr()输出括号中的所有内容
print('hello\nworld')
print('hello\\nworld')#\\
Let’s go!
Let’s go!
‘hello\nworld’
hello
world
hello\nworld
(3)保持原始格式输出字符串:三对单引号或三对双引号
print("""
hello
world
""")
hello
----------- world
–不展示
11、print函数核心功能
(1)用逗号分隔输出的字符串(分隔符)
print("aa","bb",sep="分隔符")
aa分隔符bb
(2)如何让print不换行(设置结尾符号)
print('hello',end=" ")
print('world')
print('hello',end=" 1 ")
print('world')
hello world
hello 1 world
(3)格式化数据(重定义字符串内容)
s='wang'
q=len(s)
print('The length of %s is %d'%(s,q))#对应替换指定格式指定内容
The length of wang is 4
from io import StringIO
import sys
old_stdout=sys.stdout#保留老的
result=StringIO()#输出定位
sys.stdout=old_stdout#恢复标准输出
print('The length of %s is %d'%(s,q))
result_str=result.getvalue()
print('result_str',result_str,sep=':')