使用IDLE进入python运行的环境
alt+n 返回上一条指令
---------
print("hello world")打印语句,不能使用printf(),这是2.x版本的。
print("hello"*8),打印8个hellohello...。
print("hello"+8)运行出现异常,这里的8是int类型,"hello"是字符串类型;在java中System.out.println("hello"+8)是正确的,因为在加8之前,会将8转换为字符串,然后与hello字符串拼接。
-------------
print("-----lazy-------")
temp = input("输入一个数字:") //定义一个变量temp不需要数据类型,input输入
guess = int(temp) #定义一个变量guess,强制转换int类型
if guess == 8: #代码块是按缩进而不是{},冒号一般是块语句开始
print("输入的数字是8")
print("good luck")
else:
print("bad luck")
print("竞猜结束")
-------------
列表:
因为python变量没有具体类型,没有数组之说;数组是同一类型的。但可以将一些数据放入到列表中,列表中可以放入不同类型的数据;
list=["hello",1];
可以使用len(list)查看列表中的个数;
利用list.append("world");向列表添加元素。如果要添加多个的话,使用list.extend(["h","l"]);多个的话,是用[,]表示。不能使用list.extend("h","l");追加到列表最后面
list.insert(index,"m");插入到index前面;index是从0开始的;list(0,"m");
-------
从列表中获取元素:
list[0];按索引中获取元素
从列表删除元素
list.remove("m");移除列表中的"m";若删除在列表中不存在,将会出现异常;
del list[0];删除索引为0的元素;del list;可以删除整个列表;
list.pop();因为python的列表是栈的形式;利用temp=list.pop();用变量保存弹出的值;list.pop(index)可以将指定的索引弹出;
-----------
列表的分片
list=['m', 'hello', 1, 'h', 'l'];
list[0:3]->结果是['m', 'hello', 1];并不包含'h',相当于从0开始,但不含3;或者是从索引0开始,选取3个元素;获取原来列表的拷贝,原来的列表没有改变。前面的0不写的话默认[:3]相当于[0:3];[:]相当于整个列表的拷贝,或者[1:]从索引1开始,拷贝列表。
----------
可以比较,是从索引0开始比较,取决于正在比较的元素,若有结果就成功返回,若比较的元素相同,那么就会继续往下面比较;
-----------
列表可以进行相加;list1=[1],list2=[2];list3=list1+list2,也可以list1+["hello"];当不能直接用list1+"hello","hello"是一个元素,需要用append方法
--------------------
关系符
in:是元素是否在某一列表中;如:
list1=[1,2];1 in list1;y也可以判断列表是否包含在某个列表中。
not in:是判断某元素不在某一列表中;3 not in list1
------
dir(list)是列举列表中方法;
列表中常用的方法:
list=[1,2,3,1]
list.count(1);列表中的1的个数;结果是2
index();判断列表中元素的索引位置;
reverse():列表的顺序逆反;
sort():对列表进行排序;默认是从小到大排
sort(func,key);func算法的排序,归并排序
sort(reverse=True);从大到小的排序;注:True的T是大写
-----------------
----------------
元组(tuple):不可改变类型;定义好的元组,不能修改元组中的元素;与列表是非常相似的。
创建元组是用小括号;tuple1=(1,2);
访问是:tuple1[1];
不可修改的,只能调用;tuple[1]=3会报异常;
type(变量名);可以判断变量的类型;
创建的元组只用一个元素,需要加一个逗号,才能确定是一个元组如:tuple2=(1,);若不加则类型是整型1,如:tuple3=(1);
也可以使用tuple4=1,;创建一个元组;
--------
更新和删除一个元组;
temp=(1,2,4,5)在元组元素中的2,4之间插入一个3;
temp=temp[:2]+(3,)+temp[2:];其实temp创建了新的元组,原先元组(1,2,4,5)会被销毁
del temp:删除一个元组;
-------
-------
if __name__ == '__main__':
print('hello,python')
注:相当于java的main函数;下划线是两个英文_下划线;
--------
---------
字符串(不可变的类型):
str1="hello"
str1[2];索引2的位置元素,也就是'l';也跟列表的有点相似。插入的元素,跟元组插入的方式一样。
------------
字符串的format方法;相当于利用占位符,要用到的时候进行赋值,如:
str1="{0} am {1},{2}"
str1.format("I","lazy","hello")
"{0:.1f}{1}".format(27.658,"GB")格式化
’%c' % 97;结果是:a,格式化字符;
'%s' % "hello",格式化字符串,
注:将%c,%s看成一个占位符;97对应的ASCII码是a;
---------------
列表、元组和字符串的共同点
都可以通过索引得到每一个元素
默认索引值总是从0开始
可以通过分片的方法得到一个范围内的元素集合;
-----------
---------
定义函数(利用def定义一个函数):
def myfunction():
print("hello")
myfunction() ;调用函数,直接使用函数名
-----------
函数文档:
>>> def myFunction():
'文档注释'
print('hell')

>>> myFunction()
hell
注:上面是程序运行的结果:hell;'文档注释'是不会被打印的。
使用>>> myFunction.__doc__
'hello'查看函数中文档内存;是双下划线;
----------
函数的关键字参数:
def myFunction(name,password):
print(name+","+password)
myFunction(password="123",name="lazy")
注:不需要注意参数的位置;
定义函数时,设置参数的默认值。
def myFunction(name="lazy",password="hh")
print(name+","+password)
------------------
收集参数:不确定函数中有多少个参数
def test(*params)
print(params[0])
print(params[1])
def test(1,2);
注:方法中的参数个数一定是大于调用的参数
-----------------
返回值>>> def test2():
return "hello"

>>> temp = test2()
>>> temp
'hello'
若方法中没有返回值,没有返回值,就返回NONE
-------------
------------
内嵌函数:在函数中定义函数
def fun1():
print("hello")
def fun2():
print("hello2")
fun2()
注:fun2()在fun1()调用,不能在外面的被调用
-------------------
闭包:下面的就是闭包,
def fun1():
def fun2():
return 1
return fun2()
fun1()
结果是:1
def fun1(x)
def fun2(y)
return x*y
return fun2
fun1(1)(2)
注:第二个括号中,就是y的赋值,也就是y=2;那么结果是2.
----------------
--------------
lambda表达式(匿名函数)
lambda x:2*x+1
利用变量等于lambda表达式
g = lambda x:2*x+1
g(2)
多个参数
g = lambda x,y:x+y
g(1,2)
-------
filter:过滤器
filter(NONE,[1,0,False,True])
---------------
map()映射
list(map(lambda x:x*2),range(10))
结果是:0,2,4,6,8,10,12,14,16,18
解释:将range(10),0至9的数字赋给x,然后运算得出的结果。
---------
递归
>>> def fun3(x):
if(x==1 or x==2):
return 1
else:
return fun3(x-1)+fun3(x-2)
>>> fun3(5)
5
>>> fun3(18)
2584
---------------
字典(key-value)dict:
定义:map1={"key":"value"}
获取值:map1["key"]
创建的其他方式:
dict1=dict(((1,"hello"),(2,"world")))
dict2=dict(h="hello",w="world")
注:dict2中不能使用1="hello",不能利用数字作为key来创建字典,也不能利用"h"="hello"的形式。
dict['hello']="hello"
dict2.keys()获取key的值
for keyValue in dict2.keys():
print(keyValue)
dict2.get(key);根据key获取值
可以用in来判断是否key存在字典
清理字典:clear();dict2.clear();
copy()方法,浅拷贝
dict3=dict2.copy()
id(dict3);查看dict3的地址,与dict2地址不同,
若用dict4=dict2,地址是与dict2相同
update更新方法,
b={1,"hah"}
a.update(b),利用b字典更新a字典
-----------------------
集合(set),在集合中元素是唯一的,是无序的,不能利用索引获取集合汇总的元素:
set1={1,2}
list1=[1,2,1,2,3,2,4]
num=list(set(list1)),利用set去除重复的元素;
添加方法add()
set1.add(3)添加元素;
frozenset:冻结的集合,让集合中变为不可修改
frozenset({1,2,3})
------------
--------------
输入输出:
使用open()打开文件
f=open("C:\\Users\\Administrator\\Desktop\\汇编语言.txt")
默认是只读模式:<_io.TextIOWrapper name='C:\\Users\\Administrator\\Desktop\\汇编语言.txt' mode='r' encoding='cp936'>
对文件操作
f.close()关闭文件;
f.read()读取文件
python 读取文件时报错UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position 205: illegal multibyte sequence
使用:f=open("C:\\Users\\Administrator\\Desktop\\逻辑学.txt",'rb');后面加'rb'或者open('order.log','r', encoding='UTF-8');使用'utf-8'前面的那个出现的字节形式;
将文件对象f,转换为列表:list(f)
注:文件对象读取了之后,就没有了,一般会保存到列表中,
for each_line in lines:
print(each_line)
按行读取文件;
------------------
import random引入模块;
import os;引入操作系统模块。
os模块可以操作工作目录
os.getcwd();获取当前工作目录;具体的可以参考相关方法;
os.chdir(path);改变当前目录
os.listdir(path);列出指定目录的文件名
os.mkdir(path);创建单层目录,若该目录已存在抛出异常
os.makedirs(path);递归创建多层目录,若该目录已存在抛出异常;
os.remove(path);删除指定的目录
os.removedirs(path);递归删除指定的目录
rename(old,new);重命名
----
os.path模块,参考相关方法
import time模块;关于时间相关的模块;p32课程
---------------
pickle模块:
>>> import pickle
>>> my_list = [12,32,2.1,["hello","world"]]
>>> pickle_file = open("my_list.pkl","wb")
>>> pickle.dump(my_list,pickle_file)
>>> pickle_file.close()
上面的代码是将列表中中的内容写入到my_list.pkl文件汇总,存放的位置是在Python安装目录中。"wb"是二进制写入;
利用pickle读取二进制文件:
>>> pickle_file= open("my_list.pkl","rb")
>>> my_list2=pickle.load(pickle_file)
>>> my_list2
---------
--------------
异常处理:
try:
1/0
except:
print("程序发生异常")
异常的捕获;(不推荐没有指定具体错误的捕获)、
try:
1/0
except ZeroDivisionError as reason:
print("程序发生异常"+str(reason))
---
try:
1/0
except ZeroDivisionError as reason:
print("程序发生异常"+str(reason))
finally:
#程序是否发生异常,都会执行该代码块
-----
with语句
try:
with open("data.txt","w") as f:
for each_line in f:
print(each_line)
except OSError as reason:
print(str(reason))
上面程序with语句,如果data.txt文件不存在,会执行关闭close()方法,不需要在finally语句块中写f.close();
-----------------
-----------------

posted on 2019-06-02 22:10  lazyli  阅读(143)  评论(0编辑  收藏  举报