首页 > 代码库 > python基础01
python基础01
1、python介绍及与其它开发语言比较:
相比C、Java运行慢,但是代码简介,可以减小学习成本,加快项目进度。跨平台,支持Linux和Windows。
C语言是所有高级语言的基础,若要研究python语言的原理,需要再看C。C语言比python快的原因就是,C语言是直接将代码转换为机器码,提供给机器运行。
Python及Java、PHP等高级语言都是由各自的解释器编译成字节码,再由字节码转换为机器码提供给机器运行。
Python按照解释器的不同可以分为三类:
CPython:将代码解释为C语言的字节码,然后再转换为机器码(逐行编译)。现在默认的是这种。
pypy:代码--》C语言字节码--》机器码(全部转换完成)--》运行 。解决Python运行速度相对较慢的问题。
其它语言开发的Python:代码--》相应语言的字节码--》机器码。
执行过程:打开代码文件--》词法、语法分析--》解释为字节码文件
若看到.pyc结尾文件,即解释好的字节码文件。
在命令行模式运行python文件:解释器位置\python.exe python代码文件地址
eg:C:\Users\git.git-THINK\AppData\Local\Programs\Python\Python35\python.exe F:\wangkc\day01\s3.py
2、字符编码
ASCII码:美国标准,包括英文字母、数字及特殊符号等。一个字符占用一个字节。一个字节8位。
万国码Unicode:每个字符至少占用两个字节。字母占用两个,前面由0补齐;中文占用3个字节。
utf-8:万国码进行压缩,节约内存。英文占用1个字节;中文占用3个字节。
gbk、GB2312:中文两个字节来表示
扩展:乱码原因:文件编码及解释器编码不一致。
文件编码:File-->default settings -->搜索coding-->File Encoding,
解释器编码:可以通过在代码文件的第二行设置: # -*- coding:utf-8 -*-
(py3默认为utf-8,py2默认为ascii。所以为了方便在第二行设置解释器编码格式,不管以后这段代码在哪里运行都是可以的)
3、IDE建议使用pycharm,常用设置:
编码设置:File-->default settings -->coding-->File Encoding
文本样式:通常第一行设置解释器所在的安装路径,第二行是解释器的编码格式。
File-->default settings -->搜索temp-->File and Code Templates -->Python Script,在右边的文本框中输入:
#!C:\Users\git.git-THINK\AppData\Local\Programs\Python\Python35\
# -*- coding:utf-8 -*-
按CTRL+滚轮滑动文本放大缩小:File-->setting-->搜索mouse-->General-->右侧的Mouse选项框中三个选项全选:Change font size(Xoom) with Ctrl +Mouse Wheel
4、变量:
变量名:就是记录的该变量的值所在的内存地址。
eg1:name1=‘wangkc‘
name2 = name1
name1 = ‘xingxing‘
print(name2) # 打印的还是‘wangkc’
eg2: name1 = ‘wangkc‘
name2 = ‘wangkc‘
这里面py3做了内存优化,name1和name2使用的是同一个内存地址。
变量名的命名:字母、数字(不能开头)、下划线
不能是python里面的关键字
可以使用下划线连接,增加变量名的可读性。
5、输入、输出语句:input、getpass(需导入import getpass)
input: num1 = int(input(‘请输入一个整数:‘))
括号里面是提示信息,提示用户在控制台输入一个值,并将值赋值给一个变量
注意:input得到的变量的值为字符串格式,如果需要进行数学运算等,需要进行强制转换:int(num1)--》转换为整数格式。
getpass:隐式显示,在控制台输入的是显示不出来的,需要在cmd命令行格式执行该文件才能显示。
import getpass num1 = int(getpass.getpass(‘请输入一个整数:‘)) if num1 == 1: print(‘good!‘)
然后在cmd执行:C:\Users\git.git-THINK\AppData\Local\Programs\Python\Python35\python.exe F:\wangkc\day01\s2.py
6、注释方法:
#:单行注释
“”“ ”“”或者‘‘‘ ‘‘‘:多行注释
快捷方式:选中然后按CTRL+?
7、while 条件表达式:
循环体
eg1:求1-100直接所有数的和
i = 1 sum = 0 while i < 101: sum = sum + i i += 1 print(sum)
8、continue(直接跳出本次循环,直接开始下次循环)、break(跳出整个循环):
eg1:求1到100之间所有数的和,使用break:
i = 1 sum = 0 while True: sum = sum + i if i == 100: break i += 1 print(sum)
eg2:求1/2/3/4/5/6/8/9的和
i = 1 while i < 10: if i == 7: i += 1 #这一行代码要在continue前面,否则,代码执行会进入死循环,不断的打印6 continue print(i) i += 1
9、for循环:注意这里for循环只能用for 变量1 in 变量2格式。
list1 = [‘li‘,‘王‘,‘政‘,‘张‘] for name in list1: print(name)
10、if条件分支语句:
score = int(input(‘请输入你的分数‘)) if score >= 90: print(‘优秀‘) elif score >= 80 and score < 90: print(‘良好‘) else: pass #pass 表示通过,不做任何操作
11、运算符: %取余 ,//整除 , ** 几的n次方
a: i = i+1 同 i += 1
b: and(两边都True则为True)、 or(有一个True则为True)
c: in(包含 a = ‘i‘ in ‘comein‘ ,一般用于判断某个字符串或者列表中是否包含某个元素。)
12、占位符:%s字符串,%d数字
str = ‘welcome %s come our home,her age is %d‘ % (‘wangkc‘,18)
13、数据类型:
1)整数:a = 18或者a = int(18)
a = ‘18‘
转换:b = int(a)
2)布尔boolean:True或者False
1为True,0为False
‘’空字符串为False,其它为True
print(int(True)) a = "" if not a: print(‘yes‘)
3)字符串:定义str(),强制转化、字符串拼接、字符串格式化(占字符%s)判断字符串a是否在字符串b中、移除索引空白、分割、长度、切片、索引
a字符串定义:str1 = ‘wang‘ 或者str2 = str("wang")
b、转化:
i = int(18) str1 = str(int) print(type(str1)) #class ‘str‘ # type(变量名) 返回该变量的类型
c、字符串拼接使用“+”:print(‘name‘+‘age‘)
d、移除空白:变量名.strip()去除两侧的空白、lstrip移除左侧空白、rstrip移除右侧空白,注意空白包括空格和换行等。
val = ‘ tian yi youqing ‘ new_val = val.strip() #得到一个新的字符串,不会对原字符串产生影响。 new_val = val.lstrip() new_val = val.rstrip() print(val) print(new_val)
e、长度len(变量名)
val = ‘jjdjjdjd‘ v = len(val) print(v)
f、索引
val = ‘ddfddd‘ i = 0 while i < len(val): print(val[i]) i += 1
g、分割 变量名.split(‘分隔符‘,[数字])
val = ‘abc|def|hij|klm|nob‘ val_list = val.split(‘|‘) print(val_list) #[‘abc‘, ‘def‘, ‘hij‘, ‘klm‘, ‘nob‘] print(val.split(‘|‘,2)) #[‘abc‘, ‘def‘, ‘hij|klm|nob‘] #后面的数字表示把前面的几个分割 print(val.split(‘|‘,-2)) #[‘abc‘, ‘def‘, ‘hij‘, ‘klm‘, ‘nob‘]
h、切片
val = ‘abcdefghijk‘ print(val[1:3]) #打印出索引为1到(3-1)的字符串 bc print(val[:4]) # abcd print(val[5:]) #fghijk print(val[:-1]) #abcdefghij
4)列表list:定义、判断是否包含、索引、长度、切片、末尾追加、插入、删除remove del、修改、for循环
#列表创建 list1 = [‘abc‘,‘ddf‘,‘iidk‘,‘kkk‘] list2 = list([‘abc‘,‘ddf‘,‘iidk‘,‘kkk‘]) #判断是否包含 if ‘abc‘ in list1: pass #索引: print(list1[0]) #长度 print(len(list1)) #切片: print(list1[0::2]) #起始位:终止位:步长 [‘abc‘, ‘iidk‘] #追加:list.append(元素),直接返回新的列表,不用再赋值了。如 list2 = list1.append(‘hhhhh‘) print(list1,list2) #[‘abc‘, ‘ddf‘, ‘iidk‘, ‘kkk‘, ‘hhhhh‘] None list2就是None list1.append(11111) print(list1) #插入:insert(索引,元素) list1.insert(0,‘yyyyy‘) print(list1) #删除:remove(元素), del list[n] list1.remove(11111) print(list1) del list1[0] print(list1) #更新:赋值 list1[2] = 22222 print(list1) #for循环轮询打印 for i in list1: print(i)
5)字典:创建、key:value形式(根据索引名找到对应的值)、长度、增加或者是修改(因为字典是无序的,因此在增加时,若没有就是增加,有则修改)、删除、for循环
#创建 dict1 = {‘name‘:‘wangkc‘,‘pwd‘:1234,‘age‘:18} dict2 = dict({‘name‘:‘xiaoling‘,‘pwd‘:1234,‘age‘:18}) #依据索引名称或者值 pwd = dict1[‘pwd‘] print(pwd) #长度 n = len(dict1) print(n) #增加或修改,无则增加,有则修改 dict1[‘no‘] = 1 print(dict1) #删除 del # del dict1[‘age‘] # print(dict1) #for循环 for item in dict1: print(item) #若是只是字典名,则默认是打印索引名 for item in dict1.keys(): print(item) #打印索引名 for item in dict1.values(): print(item) #打印索引值 for key,val in dict1.items(): print(key,val) #key和value 全部打印no 1 pwd 1234 name wangkc age 18
python基础01