目录
[1.1 python的除法不是整除,得到的是浮点数](#1.1 python的除法不是整除,得到的是浮点数)
注意,本系列不会讲太过于详细的内容,是基于已经学过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续行符
用\
cpps2="dwdaawda\ wdwda"
1.8报错
语法错误和运行错误
1.9赋值
pythona=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.常量和表达式
pythonprint(1+2-3)
1+2-3是表达式,运算结果是返回值。1 2 3是字面值常量
- / *是运算符/操作符
注意,**是用来计算次方数。比如3**4就是3的4次方'
//是整除
%是取余
3.变量
pythonavb=(3+4+5)/2 print(avb)
avb就是一个变量(python也可称为标识符),用来存数据,可以自由修改。
标识符名命名规则:
1.字母、下划线、数字命名,且数字不能开头。
2.区分大小写。
3.不能用关键字
4.数据类型
complex复数类型,列表类型list,元祖类型tuple,dict字典类型,集合类型set这些类型以后再说明
type关键字可以输出变量或常量的类型
cppschoolnumber =23210802019 c:int= 23232 niii=3.4 Name="天上地上我为尊" x=True print(Name) print(schoolnumber) print(type(schoolnumber)) if (x): print(1)
变量的类型由初始化的数据决定,但可以强制确定类型。
注意,根据后面传的数据,变量的类型可以改变
另外还可以强制转换,只取整数部分
cppa: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'
这样的字符,我们如果都用"",就会识别错误,所以对于内部的引用,可以用''
cppprint("dwadwad'dwdawd'")
注意,3个单引号和3个多引号可以放在更多复杂的文本中
len关键字可以返回字符串的长度len>=字符串长度
cppprint(len(Name))
字符串可以用+拼接
cpps1="sdwda" s2="dwdaawda" print(s1+s2)
不影响原来的s1和s2。
另外字符串和数字不能相加
也是
4.4bool类型
只有True和False两种类型,只占一个字节,True==1,False==0
pythonx=True if (x): print(1)
4.5动态类型
pythona=1 print(a) a="dwdawd" print(a)
就是说在运行中,变量的类型可以根据存储的数据改变
5.输入输出
5.1输入
输入用Input
input([prompt])
prompt是给用户看的提示信息
接受一个用户输入的字符串数据
cppn=input("请输入:") print(f"你输入的是:{n}")
因为默认取到的是字符串数据,如果不需要计算,可以直接用
如果需要计算,就强转类型
5.2输出
输出用print(*object,set=' ',end='\n',file=sys.stdout)
第一个参数是输出的内容(可以用','来输出多个内容)。
set是连续输出多个内容时,终端上内容间的间隔
end是输出的时候的结尾,比如默认是换行符
file是输出的位置,默认是输出在python默认的终端上
pythonprint(f"a={a}") #a=10 f是格式化字符串 {}可以放入变量、值、表达式 print("x{:.2f}",a)//可以让a只带2个小数点
6.运算符
优先级
懒得手打了,这是菜鸟上的。相较于c++,我只写有变化的。
6.1算术运算符
- * / % ** //
%取余,**次方(支持小数和整数次方),//整除(向下取整),/浮点除
/0或//0会抛异常,报错,抛异常之后,程序会直接终止
整数除整数,如果除不尽,会出现小数
注意,浮点数相加可能会有误差
如果要强行验证
cppa=0.1+0.2 b=0.3 if(-0.000001<(a-b)<0.000001):print("1") else:print("2")
7.条件语句
pythonif(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.循环语句
cppimport 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}")
cppwhile(1): print() break
break依旧是用来跳出循坏
range是左闭右开,默认是每次+1
9.列表
pythonmp=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.字符串
pythonstr1=str1.replace(',','.')//替换str1里的,都为. //注意,不对原始修改,可以像上面直接赋值给原来的变量名 str1=str1.split('m')//可以以m为间隔分割,返回一个列表 对同一变量,可以在同一行连续操作 str1=str1.replace(',','.').split('.') 可以切片操作 str1[2:]
11.元组
pythonmp=tuple()//空元组 //元组不能修改
12.集合
cppmp=set()//集合
13.字典
pythond1=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.函数()
定义方式
pythondef aaa(a=2): #函数体 #返回 return ll
15方便函数
1.round()
可以用来控制小数
pythonmn=round(mn,2)
2.random
其中一个用法,uniform
pythonmn=random.uniform(0,3) #可最小0,最大3,取随机值
16类
pythonfrom 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__()
pythonfrom 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