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

输入输出语句

输入语句

>>>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')
//把指定编码转换为str
str.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=10
while 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
//转换为list
list(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'}#输出结果
//限制关键字的key
def 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

高级函数

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值