目录
1.注意事项
1.1 python的除法不是整除,得到的是浮点数
1.2算术符号基于数学的算术优先级。具体可自行查看。
1.3注释
1.4缩进
1.5换行
1.6常见关键字
1.7续行符
1.8报错
1.9赋值
1.10比较运算符
2.常量和表达式
3.变量
4.数据类型
4.1整型int
4.2浮点数float
4.3字符串str
4.4bool类型
4.5动态类型
5.输入输出
5.1输入
编辑
5.2输出
6.运算符
优先级
6.1算术运算符
7.条件语句
8.循环语句
9.列表
10.字符串
11.元组
12.集合
13.字典
14.函数()
15方便函数
1.round()
2.random
16类
17文件
注意,本系列不会讲太过于详细的内容,是基于已经学过c语言或java或c++的基础上扩展学习的。
1.注意事项
1.1 python的除法不是整除,得到的是浮点数
而且编译器对于浮点数,基于IEEE754的标准,所以浮点数末尾不一定符合四舍五入的规则
1.2算术符号基于数学的算术优先级。具体可自行查看。
1.3注释
#单行注释
多行注释可以用三对双引号\单引号
#33333
"""3333"""
'3
1.4缩进
TAB键,也可空格键,4个空格表示一级缩进
1.5换行
一行代码不易过多,官方建议不超过79。
可以用()[]{},内部的行会进行隐式连接。
1.6常见关键字False,await,else,import,pass,None,break,except,in,raise,True,class,finally,is,return,and,continue
for,lambda,try,as,def,from,
1.7续行符
用\
s2="dwdaawda\ wdwda"
1.8报错
语法错误和运行错误
1.9赋值
a=x=z=1 b,c=1,2 #x,y,z==1 #b=1,c=2 res=a+(g:=2) #3
1.10比较运算符
可以连用,比如1<a<3,早期版本可能不支持
如果不支持,可以用and。
还支持and or not
2.常量和表达式
print(1+2-3)
1+2-3是表达式,运算结果是返回值。1 2 3是字面值常量
+ - / *是运算符/操作符
注意,**是用来计算次方数。比如3**4就是3的4次方'
//是整除
%是取余
3.变量
avb=(3+4+5)/2 print(avb)
avb就是一个变量(python也可称为标识符),用来存数据,可以自由修改。
标识符名命名规则:
1.字母、下划线、数字命名,且数字不能开头。
2.区分大小写。
3.不能用关键字
4.数据类型
complex复数类型,列表类型list,元祖类型tuple,dict字典类型,集合类型set这些类型以后再说明
type关键字可以输出变量或常量的类型
schoolnumber =23210802019 c:int= 23232 niii=3.4 Name="天上地上我为尊" x=True print(Name) print(schoolnumber) print(type(schoolnumber)) if (x): print(1)
变量的类型由初始化的数据决定,但可以强制确定类型。
注意,根据后面传的数据,变量的类型可以改变
另外还可以强制转换,只取整数部分
a:int=1 b=0.9; a=int(b) print(a) //0
字符串str(),浮点型float()
4.1整型int
范围“无穷”,根据要表示的数据大小,自动扩容(分配更多的字节)
因此无需long、bite、short等类型。如上面的schoolnumber
4.2浮点数float
等同于c++/java的double,8字节。如上面的niii
用e\E表示底数10
4.3字符串str
单引号双引号都可以。python对于字符和字符串都是用一个类型存的
之所以有两类,是因为对于: 23231241‘231231231’
这样的字符,我们如果都用"",就会识别错误,所以对于内部的引用,可以用‘’
print("dwadwad'dwdawd'")
注意,3个单引号和3个多引号可以放在更多复杂的文本中
len关键字可以返回字符串的长度len>=字符串长度
print(len(Name))
字符串可以用+拼接
s1="sdwda" s2="dwdaawda" print(s1+s2)
不影响原来的s1和s2。
另外字符串和数字不能相加
也是
4.4bool类型
只有True和False两种类型,只占一个字节,True==1,False==0
x=True if (x): print(1)
4.5动态类型
a=1 print(a) a="dwdawd" print(a)
就是说在运行中,变量的类型可以根据存储的数据改变
5.输入输出
5.1输入
输入用Input
input([prompt])
prompt是给用户看的提示信息
接受一个用户输入的字符串数据
n=input("请输入:") print(f"你输入的是:{n}")
因为默认取到的是字符串数据,如果不需要计算,可以直接用
如果需要计算,就强转类型
5.2输出
输出用print(*object,set=' ',end='\n',file=sys.stdout)
第一个参数是输出的内容(可以用','来输出多个内容)。
set是连续输出多个内容时,终端上内容间的间隔
end是输出的时候的结尾,比如默认是换行符
file是输出的位置,默认是输出在python默认的终端上
print(f"a={a}") #a=10 f是格式化字符串 {}可以放入变量、值、表达式 print("x{:.2f}",a)//可以让a只带2个小数点
6.运算符
优先级
懒得手打了,这是菜鸟上的。相较于c++,我只写有变化的。
6.1算术运算符
+ - * / % ** //
%取余,**次方(支持小数和整数次方),//整除(向下取整),/浮点除
/0或//0会抛异常,报错,抛异常之后,程序会直接终止
整数除整数,如果除不尽,会出现小数
注意,浮点数相加可能会有误差
如果要强行验证
a=0.1+0.2 b=0.3 if(-0.000001<(a-b)<0.000001):print("1") else:print("2")
7.条件语句
if(computer==0): if(human==1):print("电脑胜利") elif (human==2):print("玩家胜利") elif (human==0):print("双方平手") elif (computer==1): if (human == 2): print("电脑胜利") elif (human == 0): print("玩家胜利") elif (human == 1): print("双方平手") elif (computer==2): if (human == 0): print("电脑胜利") elif (human == 1): print("玩家胜利") elif (human == 2): print("双方平手")
else是除此之外
8.循环语句
import random computer=random.randint(0,100) left=0 right=100 flag=0 for index in range(0,5): guest=int(input()) if(guest>computer): right=guest print(f"太大了,数字范围缩小到{left}~{right}") elif (guest<computer): left=guest print(f"太小了,数字范围缩小到{left}~{right}") elif(guest==computer): print("恭喜答对!") flag=1 break if(flag==0):print(f"废物,这都猜不中,是{computer}")
while(1): print() break
break依旧是用来跳出循坏
range是左闭右开,默认是每次+1
9.列表
mp=list()//空列表 mp=[]//空列表 mp[2]//下标引用,0~ mp[2:4]//切片,下标2到下标3(包含) mp.sort()可以排序 a=sorted(mp)//不对原始列表影响的排序 max(mp)//可以找出列表里的最大值 min(mp)//最小值 mp.reverse()//不返回新值,直接修改原始内容,排序 sum(mp)//可以算里面的内容和 len(mp)//元素个数和 mp.append()//添加元素
10.字符串
str1=str1.replace(',','.')//替换str1里的,都为. //注意,不对原始修改,可以像上面直接赋值给原来的变量名 str1=str1.split('m')//可以以m为间隔分割,返回一个列表 对同一变量,可以在同一行连续操作 str1=str1.replace(',','.').split('.') 可以切片操作 str1[2:]
11.元组
mp=tuple()//空元组 //元组不能修改
12.集合
mp=set()//集合
13.字典
d1=dict() d2=dict({"w":1,"3":3,"2":4}) d={"w":1,"2":3,"3":4} print(d.get("w")) print(d["w"])
key()所有键,values()所有值,items()所有元素
14.函数()
定义方式
def aaa(a=2): #函数体 #返回 return ll
15方便函数
1.round()
可以用来控制小数
mn=round(mn,2)
2.random
其中一个用法,uniform
mn=random.uniform(0,3) #可最小0,最大3,取随机值
16类
from tkinter.font import names #上面这个是引用的不用管 class Student: def __init__(self,na,ag,ch,ma,eng):#构造函数 self.name=na#self开头的是实例属性,在构造函数里可以创建实例属性,也可以不加self,创建类属性 #类属性只能类方法或者用类.类属性来修改 #如果强行用对象修改类属性,实则是创建了一个同名的实例属性并修改值 self.age=ag self.chinese=ch self.math=ma self.english=eng def getName(self): return self.name def getAge(self): return self.age def setAge(self,x): self.age=x def getCourse(self): return max(max(self.chinese,self.math),self.english) d1=Student("王睿阳",18,100,100,95) d2=Student("郑树立",18,56,67,87) print(f"姓名:{d1.getName()},年龄:{d1.getAge()},最高成绩:{d1.getCourse()}") d1.setAge(10) print(f"姓名:{d1.getName()},年龄:{d1.getAge()},最高成绩:{d1.getCourse()}") print(f"姓名:{d2.getName()},年龄:{d2.getAge()},最高成绩:{d2.getCourse()}")
函数行或属性名前面加__说明是私有属性,外部不能调用,不加就是公有属性,外部能调用
return可以返回多个值,return value1,value2.....
析构是__del__()
from tkinter.font import names #上面这个是引用的不用管 class Student: def __init__(self,na:str,ag,ch,ma,eng):#构造函数,变量名:类型,可以指定类型 self.name=na#self开头的是实例属性,在构造函数里可以创建实例属性,也可以不加self,创建类属性 #类属性只能类方法或者用类.类属性来修改 #如果强行用对象修改类属性,实则是创建了一个同名的实例属性并修改值 self.age=ag self.chinese=ch self.math=ma self.english=eng def getName(self) ->str : #这个写法可以指定返回类型 return self.name def getAge(self): return self.age def setAge(self,x): self.age=x def getCourse(self): return max(max(self.chinese,self.math),self.english) d1=Student("王睿阳",18,100,100,95) d2=Student("郑树立",18,56,67,87) print(f"姓名:{d1.getName()},年龄:{d1.getAge()},最高成绩:{d1.getCourse()}") d1.setAge(10) print(f"姓名:{d1.getName()},年龄:{d1.getAge()},最高成绩:{d1.getCourse()}") print(f"姓名:{d2.getName()},年龄:{d2.getAge()},最高成绩:{d2.getCourse()}")
17文件
open(filie,mode='r',encoding=None)
file:文件路径
mode:打开方式(r:只读,w只写,a追加,b二进制,+更新
encoding:编码格式
更新就是可读可写
关闭文件:文件对象.close()
虽然系统会自动关闭文件,但是同一时间,可以打开的文件数量是有限的,所以为了节省内存空间,建议主动手动关闭文件
文件打开失败,会抛异常,打印错误信息
可以实现这个模块后,自动关闭文件
编码ascll utf-8 unicode gbk