python基础语法
一、注释
# 单行注释:# 快捷键 CTRL+/
# 多行注释:三个引号(单引号或者双引号)
二、输出语句–print
print()
#对输出语句的进一步认识
#源码:print(self, *args, sep=' ', end='\n', file=None)
#sep分隔符,默认用空格隔开,可以设置
#end='\n'换行,默认换行,可以设置
#print语句中如果有多个字符串,默认以空格隔开(可通过sep设置为其他分隔符)
print("hee","python",sep='_',end='\t')
print("hee","python",sep='_')
三、输入语句–input–可以输入任何形式
tmp=input("请输入:")
print(tmp)
四、 python基础数据类型
# Number数字:int整型 float浮点型 boolue布尔 complex复数
# String字符串
# List列表
# Tuple元组
# Dictionary字典
# Sets集合
五、 查看数据类型type()
print(type(18))
print(type(18.0))
print(type("张三")) #单引号或双引号包括起来的内容为字符串
print(type(True))
六、 变量
# 变量的类型由数值决定,变量本身不具有数据类型
七、 标识符:变量名,类名,函数名
# 命名规则:1>字母,数字,下划线;数字不能开头
# 2>不能与关键字同名
# 查看关键字
import keyword
print(keyword.kwlist)
# 关键字:
# ['False', 'None', 'True','and', 'as', 'assert', 'async','await', 'break', 'class', 'continue','def', 'del', 'elif', 'else', 'except','finally', 'for', 'from', 'global', 'if','import', 'in', 'is', 'lambda', 'nonlocal','not', 'or', 'pass', 'raise', 'return','try', 'while', 'with', 'yield']
八、 系统内置
# int 可以作为标识符,但是不推荐
九、运算符
1、算数运算符 + - * / // % **
print("整除",9//2)
print("幂运算",3**2)
2、赋值运算符 =
3、复合赋值运算符 += -= *= /= %= **= //=
# 练习:数字的逆序输出--123转换为321
num1=123
#百位
a=num1//100
#十位
b=num1%100//10
#个位
c=num1%10
num2=c*100+b*10+a
print("123逆序输出:",num2)
print("-------------------------------------------")
#复杂度低的数据类型进行升级
#数据复杂度:bool<int<float(因为都属于数字类型)
print(1+20.5) #21.5
print(1+True) #2
#4、关系运算符 > >= < <= != ==
#返回类型为布尔类型
print(1==1.0) #True
print(1==True) #True
print(1.0==True) #True
print(-0==0) #True
5、逻辑运算符 and or not
#短路原则
exp1=True
exp2=True
exp3=False
# exp1 and exp3 and exp2 #前边出现False就不往后走了
十、缩进
没什么
十一、python中没有常量 用大写字符代表
PI=3.1415
十二、数据类型的转换
1、转换为整数int
#转换为整数int--浮点型、布尔型、仅包含数字的字符串
a=20.6
a=True
a="123"
a="zzz"#字符串中只有数值类型,可以强制转换,如果包含字母不能进行转换
new_num=int(a)
print(new_num) #20 1 123
2、转换为float
#转换为float--整型、布尔型、仅包含数字的字符串
3、转换为bool
#转换为bool--非0数值都会被转换成True,只有0是False
#空字符串是False
a=-100 #True
a="aaa" #True
a="" #False
a=" " #True
bool(a)
字符串
1、定义:不推荐使用str作为变量名
str1="" #str1=''
print(type(str1)) #<class 'str'>
2、字符串 不可修改的有序序列
#1>不可修改
#关于字符串不可修改
# str1="hello"
# str1[0]="H"
# print(str1)
#2>有序序列
#正向索引 反向索引
3、字符串的访问
str2="my name is mike"
1>字符串名字[下标]
#这种方法只能访问一个元素
print(str2[0])
2>字符串名字[start:stop:step] 步长可选
#start默认0,stop默认整个字符串长度,step默认1
#start stop 前闭后开
#练习
print(str2[-4:]) #取mike
print(str2[:]) #取全部
#当步长为负数,从右往左进行查找
print(str2[-1:-5:1])
print(str2[-1:-5:-1])
print(str2[::-1])
#练习:数字翻转、提取数字
num1="123"
print(num1[::-1])
num2="123456789"
#13579
print(num2[::2])
#8642
print(num2[-2::-2])
4、字符串的遍历
num2="123456789"
for tmp in num2:
print(tmp)
5、字符串的拼接
1>加
str1="张三"
str2="你好"
new_str=str1+str2
print(new_str)
2>乘
print('*'*60)
print('123'*3)
6、字符串的操作
1>替换操作
#替换操作:str1.replace("旧的子串","新的子串")
str1="hello"
str2=str1.replace("h","H")
print(str2)
print(str1) #原始字串没有变化
2>查找操作
"""
find:默认从左往右找
rfind:从右往左找
找不到返回-1
index:默认从左往右找
rindex:从右往左找
找不到报错
"""
str1="hello_world"
#查看o所在的索引
print("元素o第一次出现的位置",str1.find("o"))
print("元素o第一次出现的位置",str1.rfind("o"))
print("zzz出现的位置",str1.find("zzz")) #-1 异常值
#获取world
ind=str1.find("world")
print(str1[ind:])
3>count
#统计某子串在元素中出现的次数操作count
str1="hello_world"
print("元素o出现的次数",str1.count("o"))
4>字符串的分割操作
#如果分隔符不存在于字符串,返回原始字符串,且被生成列表的形式
str1="my name is mike"
tmp=str1.split(" ") #指定按照特定元素子串进行拆分
# tmp=str1.split("zzz") #['my name is mike']
print(type(tmp)) #<class 'list'>
print(tmp)
5>字符串的修饰操作
#1.center
str1="字符串的修饰"
str2=str1.center(60,'-') #长度为60,修饰符为-
print(str2)
#2.zfill
#常用于数值型
str1="123"
str11="12345"
str2=str1.zfill(8)
str3=str11.zfill(8)
print(str2)
print(str3)
#3.strip
#strip去除字符串左右两边的空格或其他符号
str1=" 12 34 "
print("原字符串长度",len(str1))
str2=str1.strip()
print(str2) #去除字符串左右两边的空格
print("去除字符串左右两边的空格后字符串长度",len(str2))
str1="******12 34*****"
print("原字符串长度",len(str1))
str2=str1.strip("*")
print(str2) #去除字符串左右两边的*
print("去除字符串左右两边的空格后字符串长度",len(str2))
6>字符串的格式化
格式化输出形式1–format
name="张三"
age=20
print("你好",name,"你的年龄是",age,sep='')
#格式化字符串 .format
#使用{} 作为占位符
str1="你好{},你的年龄是{}".format(name,age)
print(str1)
#张三你好,张三的年龄
str1="{}你好,{}的年龄是{}".format(name,name,age)
print(str1)
#优化:关注参数位置顺序(位置参数)
str1="{0}你好,{0}的年龄是{1}".format(name,age)
print(str1)
#优化:不用关心参数顺序(关键字参数)
str1="{name}你好,{name}的年龄是{age}".format(age=age,name=name)
print(str1)
#对精度的控制:.2f
height=50.2
print("{name}你好,{name}的年龄是{age},{name}的身高是{height:.2f}".format(age=age, name=name, height=height))
格式化输出形式2
print("%s你好,年龄是%d,身高是%.2f" % (name,age,height))