day0 : python初探
导读
语言分为静态语言和动态语言
(1)静态语言要求必须声明每个变量的类型:它会使用多少内存以及允许的使用方法。计算机利用这些信息把程序编译成非常底层的机器语言。(C、C++、Java)
优缺点:声明变量类型可以帮助计算机发现更多潜在的错误并提高运行速度,但是需要使用者进行更多的思考和编程
(2)动态语言(也被称为脚本语言)不需要在使用变量前进行声明,动态语言不会被编译,而是由解释器程序来解释执行。(python、Perl、Ruby、PHP)
优缺点:动态语言通常比编译后的静态语言更慢,但是随着解释器的不断优化,动态语言的速度在不断提升。动态语言的主要应用场景都是很短的程序(脚本),比如给静态语言编写的程序进行数据预处理。这样的程序通常称为胶水代码。
执行过程对比:
C 编译——机器码——CPU
两步:第一步通过编译生成机器码,第二步通过CPU执行,由此可以看出C语言执行速度比python快
Cpython C解释器——.pyc文件(字节码)——机器码——CPU
两步:第一步通过编译生成只有python认识的字节码,第二步执行时转换为机器码再通过CPU执行
注意:代码通过编译可以产生字节码,字节码经过反编译也可以得到代码
安装python
(1)在python官网上下载安装包。网址:https://www.python.org/
(2)安装。手动设置路径,注意勾上 Add Python3.5 to Path,如果没有这个选项则进行下一步
(3)配置环境变量
右键计算机——>属性——>高级系统设置——>高级——>环境变量——>在第二个内容框中找到变量名path的一行,双击——>在变量值中追加 ;python安装目录
如:原来的的值;E:\python_soft\new_python\
命令行模式和python交互模式
交互模式

命令行模式
更改盘符>>>更改路径(.py文件所在路径)>>>运行.py文件

python基本数据类型
python最基本的内置数据类型有:
1、布尔型(只有True和False两种取值)
2、整型int
3、浮点型float
4、字符串型str
变量命名规则:
变量名由数字、字母、下划线组成,第一个字符只能是字母或者下划线,关键字不能声明为变量名
1、布尔型:

2、整型:
(1)整型int功能介绍:
+ 加 —减 *乘 /浮点数除法 //地板除 %求余数(模)**求幂
age=18 print(type(age)) print(dir(age)) print(age.__abs__()) #返回绝对值 print(abs(age)) print(age.__add__(19)) #相加,等价于age+19 print(age.__bool__()) #返回对应的布尔值 print(age.__class__()) print(age.__eq__(19)) #判断两个数是否相等 print(age.__eq__(18)) print(age.__float__()) #int转化为float,只需要加上一位小数点 print(age.__floordiv__(4)) #地板除 ,相当于18//4=4 print(age//4) #地板除 print(age%4) #求余数 print(age.__divmod__(4)) #返回由商和余数构成的元组,用于分页 print(age.__ge__(3)) #判断age是否大于3 print(age.__ge__(30)) #判断age是否大于30 age=2 print(age.__pow__(5)) #求幂,相当于age**5 print(age**5) a=10 b=50 print(a.__and__(b))#按位与,相当于a&b,结果为2 print(a&b) print(a.__or__(b)) #按位或,相当于a|b,结果为58 print(a|b)
结果:
<class 'int'> ['__abs__', '__add__', '__and__', '__bool__', '__ceil__', '__class__', '__delattr__', '__dir__', '__divmod__', '__doc__', '__eq__', '__float__', '__floor__', '__floordiv__', '__format__', '__ge__', '__getattribute__', '__getnewargs__', '__gt__', '__hash__', '__index__', '__init__', '__int__', '__invert__', '__le__', '__lshift__', '__lt__', '__mod__', '__mul__', '__ne__', '__neg__', '__new__', '__or__', '__pos__', '__pow__', '__radd__', '__rand__', '__rdivmod__', '__reduce__', '__reduce_ex__', '__repr__', '__rfloordiv__', '__rlshift__', '__rmod__', '__rmul__', '__ror__', '__round__', '__rpow__', '__rrshift__', '__rshift__', '__rsub__', '__rtruediv__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__truediv__', '__trunc__', '__xor__', 'bit_length', 'conjugate', 'denominator', 'from_bytes', 'imag', 'numerator', 'real', 'to_bytes'] 18 False True 18.0 4 4 2 (4, 2) True False 32 32 2 2 58 58
(2)进制:
十进制 10 =10
二进制 0b10=2 0B10=2
八进制 0o10=8 0O10=8
十六进制 0x10=16 0X10=16
(3)类型转化
int()可以接受布尔值、浮点数、只包含数字的字符串;不能接受包含小数点或指数的字符串和普通字符串
如果混合使用不同的数字类型进行计算,python会自动进行类型转换

3、浮点型float
(1)浮点型float功能介绍
x=10.6 print(type(x)) #查看x的类型 print(dir(x)) #查看创建x的类的所有成员 print(x.__divmod__(4)) #得到商和余数构成的元组 print(x.__floordiv__(4)) #地板除 print(x//4) #地板除 print(x.__abs__()) #求绝对值 print(x.__add__(10.2))#求和 print(x+10.2) print(abs(x)) print(x.__ge__(18))#判断是否大于18 print(x.__pow__(3))#求幂 print(x**3) x=0.5 print(x.as_integer_ratio()) #求最简分数形式并写成由分子分母构成的元组
结果:
<class 'float'> ['__abs__', '__add__', '__bool__', '__class__', '__delattr__', '__dir__', '__divmod__', '__doc__', '__eq__', '__float__', '__floordiv__', '__format__', '__ge__', '__getattribute__', '__getformat__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__int__', '__le__', '__lt__', '__mod__', '__mul__', '__ne__', '__neg__', '__new__', '__pos__', '__pow__', '__radd__', '__rdivmod__', '__reduce__', '__reduce_ex__', '__repr__', '__rfloordiv__', '__rmod__', '__rmul__', '__round__', '__rpow__', '__rsub__', '__rtruediv__', '__setattr__', '__setformat__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__truediv__', '__trunc__', 'as_integer_ratio', 'conjugate', 'fromhex', 'hex', 'imag', 'is_integer', 'real'] (2.0, 2.5999999999999996) 2.0 2.0 10.6 20.799999999999997 20.799999999999997 10.6 False 1191.0159999999998 1191.0159999999998 (1, 2)
(2)类型转化
float()可以接受布尔值、整型、包含有效浮点数的字符串

4、字符串型
(1)字符串型功能介绍
name="jack" print(len(name)) #获取字符串长度 print(type(name)) #相当于name.__class__,获取创建对象的类 print(dir(name)) #获取创建对象的类的所有成员 name2="michael" #拼接两个字符串的三种方式: print(name+name2) #str1+str2 print(name.__add__(name2)) #str1.__add__(str2) name_list=[name,name2] print("".join(name_list)) #string.join(str_list) # 使用*复制 print(name * 2 + name2 * 3) #判断字符串中是否包含某个子串 str.__contains__(substr) print(name.__contains__("er")) print(name.__contains__("ex")) #判断两个字符串是否相等 str1.__eq__(str2) print(name.__eq__(name2)) #format 的两种用法(具体解释在函数的动态参数部分) #str.format(*args,**kwargs)动态参数:元组(序列)和字典 s="{0} love {1} and {name1} love {name2}" result=s.format("I","you",name1="you",name2="me") print(result) name_list=("I","you") name_dict={"name1":"you","name2":"me"} result=s.format(*name_list,**name_dict) print(result) #通过索引获取字符串某个元素 name="alex" print(name[0]) print(name[-1]) print(name[-2]) # print(name[100]) 超出索引报错 #name[0]="y" 字符串是不可变的,无法直接插入字符或者改变指定位置的字符 #为了改变字符串需要组合使用一些字符串函数 #如replace(self,old,new,count) name="alexalexalex" result=name.replace("a","y")#默认把所有的‘a’全改为‘y’ print(result) result=name.replace('a','y',1)#s设定只改一个 print(result) #大小写和对齐方式 name="jack tom MichAel kangKang" print(name.capitalize())# 首字母大写,其他字母都小写 print(name.title()) #所有单词开头字母变大写,其他字母都小写 print(name.upper())#所有字母变大写 print(name.lower())#所有字母变小写 print(name.swapcase()) #所有字母大小写转换 #center(self,width,fillchar) 居中 #ljust(self,width,fillchar) 左对齐 #rjust(self,width,fillchar) 右对齐 name="jack tom MichAel kangKang" print(name.center(40,"&")) print(name.ljust(40,"*")) print(name.rjust(40,"$")) #获取某个子串在字符串中的个数count(self,x) name="jack tom MichAel kangKang" print(name.count("e")) print(name.count("an")) #获取某个子串在字符串中的位置:find和index # find(self,substr)没有找到返回-1,index(self,substr)没有找到报错 print(name.find("tom")) print(name.index("tom")) print(name.find("lala")) # print(name.index("lala")) #查看字符串是否以某个子串开头或结尾 #startswith(self,substr,start,end) endswith(self,substr,start,end) name="jack tom MichAel kangKang" print(name.startswith("tom",5,10)) print(name.startswith("tom")) print(name.endswith("kangKang")) print(name.endswith("tom",0,8)) #编码解码___________未完待续。。。。。。 name="张三" result=name.encode("gbk") name2=result.decode("gbk") print(name,result,name2) #expandtabs(self,tabsize)把tab键转化为若干个空格,默认是8个 name="a\tbcd" print(name.expandtabs(8)) print(name.expandtabs()) #字符串的几个判断 name.isalnum() #判断是否是字母或者数字 name.isalpha() #判断是否都是字母 name.isdecimal() #判断是否只有十进制数字 name.isdigit() #判断是否都是数字 name.islower() #判断是否都是小写 name.isupper() #判断是否都是大写 name.isnumeric() #判断是否是数字 name.isspace() #判断是否是空格 name.istitle() #判断是否是标题 #使用strip 出除开头或者末尾的子串,默认去除空白字符串(空格、换行符、制表符) name="\t\n jack %%%%" print(name.strip()) print(name.lstrip()) print(name.rstrip('%')) #使用join拼接 string.join(list) name_list=["kangkang","jack","lux"] result=",".join(name_list) print(result) #分割字符串:split和partition #split(self,sep,maxsplit) 可以不指定分隔符(默认使用空白字符串分割)可以指定分隔次数(默认全分隔),不包含分隔符,返回一个列表 #partition(self,sep) 必须指定一个分隔符,以第一个分隔符开始分隔,返回一个元组:(分隔符左边子串,分隔符,分隔符右边子串) name="kangkang..jack..lux..tom..lili" print(name.split("..")) # ["kangkang","jack","lux","tom","lili"] print(name.split("..",2)) #分隔两次 ["kangkang","jack","lux..tom..lili"] print(name.partition("..")) #("kangkang","..","jack..lux..tom..lili") name="kangkang jack\tlux\ntom" print(name.split()) #不指定分隔符时默认是空白字符,结果:["kangkang","jack","lux","tom"] #print(name.partition()) #出错,必须指定一个分隔符 #zfill(self,width) 在字符串前填充0达到宽度要求 name="jack" print(name.zfill(20)) #maketrans 和translate形成对应表并做替换 str_example="this is string example ...wow!!!" intab="aeiou" outab="12345" trantab=str.maketrans(intab,outab,"x")#形成对照表,移除'x' result=str_example.translate(trantab) print(result) #result="th3s 3s str3ng 21mpl2 ...w4w!!!"
结果:
4 <class 'str'> ['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill'] jackmichael jackmichael jackmichael jackjackmichaelmichaelmichael False False False I love you and you love me I love you and you love me a x e ylexylexylex ylexalexalex Jack tom michael kangkang Jack Tom Michael Kangkang JACK TOM MICHAEL KANGKANG jack tom michael kangkang JACK TOM mICHaEL KANGkANG &&&&&&&jack tom MichAel kangKang&&&&&&&& jack tom MichAel kangKang*************** $$$$$$$$$$$$$$$jack tom MichAel kangKang 1 2 5 5 -1 True False True True 张三 b'\xd5\xc5\xc8\xfd' 张三 a bcd a bcd jack %%%% jack %%%% jack kangkang,jack,lux ['kangkang', 'jack', 'lux', 'tom', 'lili'] ['kangkang', 'jack', 'lux..tom..lili'] ('kangkang', '..', 'jack..lux..tom..lili') ['kangkang', 'jack', 'lux', 'tom'] 0000000000000000jack th3s 3s str3ng 21mpl2 ...w4w!!!
(2)使用[start:end:step]分片
# [:]提取从开头到结尾的整个字符串
# [start:]从start提取到结尾
# [:end]从开头提取到end-1
# [start:end]从start提取到end-1
# [start:end:step]从start提取到end-1,每step个字符提取一个
(3)类型变换

浙公网安备 33010602011771号