Python学习之路(仅供学习py的学者复习回顾)

来源:互联网 发布:淘宝产品视频拍摄 编辑:程序博客网 时间:2024/05/06 03:45

输入输出语句

输入语句

>>>name=input('Please input name')>>>#这里就是等待你输入,注意,input输入的结果是String类型>>>name>>>#你输入的结果将在这里显示

输出语句

>>>#直接输出变量>>>print("")#可以输出变量或者字符

数据类型和变量

数据类型

  1. 整数
  2. 浮点数
  3. 字符串
  4. 转义字符:\
  5. 换行:\n 制表符:\t 斜杠:\
  6. print(r’\\t\’) 当print在”号前面加上r以后,这个表示会全部输出”的内容
  7. 布尔类型
  8. 空值:None

变量

  1. python会自动匹配变量类型,称为动态变量

编码

编写文件的时候不能用window自带的文本编辑器编写,因为window会自动给你加一段空值,目的是变为utf-8编码,实际上这样编写代码会出问题
在编写py文件的时候,需要加上这两句话

#!/usr/bin/env python3# -*- coding: utf-8 -*-

下面为编码的转换方式

//转换为ascii编码 (order序列化了)ord()//把ascii编码转换为字符chr()//str转换为指定编码str.encode('utf-8')//把指定编码转换为strstr.decode('utf-8')

判断语句和循环语句

if语句

//特别注意条件后面的:号,还有缩进,在python中缩进代表的控制域if a>0:    print('a>0')elif a=0:    print('a=0')else:    print('a<0')

循环语句

//第一种类似java中的foreach,names是个集合for name in names:    print(name)//while语句n=10while n>0:    print(n)    n=n-1//break语句可以推出循环//continue语句可以跳过当前循环

集合、字典

集合

List集合(Java中数组和List的结合体)

>>>list=none#定义了一个空变量>>>list=[]#变量自动匹配为list>>>list=['a','b','c']//下面为list集合的各种方法>>>list[0]#按照下标读取集合>>>list[0]='A'#按照下标更新集合>>>list.append('d')#添加集合,等同于java中list.add()>>>list.pop(3)#删除集合下标为3的,下标从0开始(0,1,2,3)>>>list.insert(3,'D')#在集合指定位置插入值>>>list.sort()#集合元素排序//二维集合(类似java二维数组)>>>list['a',['b','c'],'d','e']>>>list[1][0]>>>b#这里是python的输出结果>>>#注意list在传递和赋值的时候会把地址也传递过去

元组

>>>tuple=('a',b,c)//元组在定义的时候必须初始化,而且是常量不可变//但是>>>tuple=('a',['b','c'],'d')>>>这种嵌套list的元组,可以改变list的值,因为相对于元组来说,list的地址是不变的,变得是list里面内容的地址

set集合

>>>set=() #定义了一个Set集合>>>set=(['a','b','c'])#set集合是无序的无重复的>>>set.add('d')#添加方法>>>set.remove(3)#删除下标3的元素,下标从0开始(0,1,2,3)//假设s1和s2是两个集合>>>s1&s2 #结果为s1和s2的交集>>>s1|s2 #结果为s1和s2的并集

dict字典
dict字典其实就是java中的map

>>>dict={}#定义了一个字典>>>dict={'a':'A','b':'B'}>>>'key' in dict#判断key这个是否存在dict的key中,返回true|False>>>dict.get('key')#判断key是否在dict中,返回None,但是在交互模式不会显示None>>>dict.get('key',-1)#同上,不存在返回-1>>>dict.pop('key')#删除这个key的关系>>>dict['c']='C'#添加一个字典>>>d.values()#获取字典的values集合>>>d,items#获取字典的key和values集合

调用函数

//转换为int类型int()//转换为float类型float()//转换为str类型str()//转换为布尔类型bool()//获得一个范围range(0,100)//注意不包括100//转换为listlist(range(0,100))//[0,1,2...,99]//计算字符串长度len(str)//获取绝对值abs(-20)//获取最大值max(1,2)

定义函数

def myfun(old):    if old>=18:        print('成年了!')        return True    else:        print('未成年!')        return False#注意缩进,还有函数必须定义在调用的上面

函数的参数

#第一种def power(x):    return x*x//开始运行函数>>>power(5)>>>25#第二种def power(x,n=2):    s=1    while n>0:        n=n-1        s=s*x    return s//我们在这里定义了一个n=2,意思就是一个默认参数//开始调用>>>power(5)>>>25#默认参数为2,算得是5的2次方>>>power(5,3)>>>125 #默认参数改为了3,算得是5的3次方>>>当定义了多个默认参数,调用可以选择某个默认参数>>>power(5,n=4)#第三种(可变参数,在函数内部是一个tuple)def calc(*numbers):    sum=0    for n in numbers:        sum=sum+n    return sum//调用>>>calc(1,2,3)>>>6//如果要传入一个list,可以把参数变为一个变量list,或者把list变为可变参数>>>list=[1,2,3]>>>calc(*list)>>>6#第四种(关键字参数)def person(name,age,**kw):    print('name:',name,'age:',age,'kw:',kw)>>>person('yh',23,city='BeiJing')>>>name:yh age:23 kw:{'city':'BeiJing'}#输出结果//把一个dict当关键字参数传入>>>value={'city':'BeiJing','job':'IT'}>>>person('yh',23,**value)>>>name:yh age:23 kw:{'city':'BeiJing','job':'IT'}#输出结果//限制关键字的keydef person(name,age,*,city,job):#这样定义就限制只能输入city和job的关键词    print('name:',name,'age:',age,'kw:',kw)#第五种(可变参数和关键词参数联合使用)def person(name,age,*number,city,age):#一起使用就把*省略    print('name:',name,'age:',age,'kw:',kw)#如果命名关键词也有默认值,在调用的时候可以省略

递归函数

#计算n!,你的阶乘def fact(n):    if n==1:        return 1    return n*fact(n-1)#但是上面的算法会栈溢出#所以有了尾递归的方法,return的时候不进行计算def fact(n,sum=1):    if n==1        return sum    return fact(n-1,n*sum)

高级特性

切片

>>>L=[1,2,3,4,5,6]>>>#切片的意思就是截取,在java中非常麻烦,得使用substring,但是在py中非常简单>>>L[0:3]#从截取到3,但是不包括3>>>[1,2,3]#别忘记在Py中可以逆向的数-1

迭代
上面都学了循环,我们知道迭代可以使用for in:

判断是否可以循环,我们需要导入模块

>>>from collections import Iterable>>>isinstance('abc',Iterable)>>>true

要是想用下标循环如下

>>> for i,value in enumerate(['a','b','c']):>>>    print(i,value)>>>0 a>>>1 b>>>2 c

用两个参数进行迭代

>>>for x,y in [(0,1),(2,3)]:>>>   print(x,y)>>>0 1>>>2 3

列表生成器

//格式(计算0,1,2,3,4的平方大于10的输出)>>>L=[x*x for x in list(range(0.5)) if x*x>10]>>>L>>>16

生成器

//把列表生成器的[]改为()>>>L=(x*x for x in list(range(0.6)) if x*x>10)>>>L<generator object <genexpr> at 0x1022ef630>//可见没有输出结果,而是输出了地址>>>next(L)>>>16>>>next(L)>>>25//可见生成器使用next来一步一步前进的//大家也可以用for in循环L//函数中调用yield,这个函数就变为一个生成器

迭代器
判断是否是迭代器

>>>from collections import Iterator>>>isinstance(L,Iterator)>>>True//注意list,dict,str是Iterable,而不是Iterator//iter()函数可以把它们变为Iterator

高级函数

1 0
原创粉丝点击