百科不全书之Python语法知识

参考链接:pyfreyr-Conda使用手册
参考链接:北京理工大学 Python语言程序设计

conda

// 查看安装信息   
conda info
// 查看创建的基础环境
conda info -e/--envs
 // 创建环境
 conda create --name python34 python=3.4
 //切换环境
 conda activate ***
// 删除环境  
conda remove -n ××× --all
conda env remove -n ×××
// 退出环境
conda deactivate   
// 列出当前环境下所有安装的 conda 包。
conda list
// 安装软件包,会自动处理包之间的依赖。
conda install scrapy
// 安装指定版本包,既可以使用类似 pip 的 ==,也可以直接使用 =:
conda install scrapy=1.5.0
//  更新 conda 包到最新版本
 conda update scrapy
  conda upgrade ×××
// 卸载  也可以使用
 conda remove ×××
 conda uninstall ×××

jupyter

// 安装 Jupyter
pip3 install jupyter -i https://pypi.tuna.tsinghua.edu.cn/simple
// 启动
jupyter-notebook

基础知识

  1. 编程不单纯是求解计算问题,还要思考解决方法,思考用户体验,执行效率等。能够帮助程序员加深用户行为以及社会和文化认识。
  2. python使用unicode编码,每个编码对应一个字符,编码几乎覆盖所有的字符
  3. 静态语言:使用编译执行的编程语言:C/C++语言,Java语言。脚本语言:使用解释执行的编程语言:PYthon语言,JavaScript语言,PHP语言
  4. 命名:大小写字母,数字,下划线和汉字等字符组合。注意:大小写敏感,首字符不能是数字,不与保留子相同。
  5. 缩进:是Python语法的一部分,是表达代码间包含和层次关系的唯一手段,程序内一致就可以了,一般用4个空格或者1个TAB
  6. Python 中一般以新行作为语句的结束标识,可以使用 \ 将一行语句分为多行显示。
  7. 列表:由0个或多个数据组成的有序序列,列表使用 [] 表示,采用逗号(,)分隔各元素。使用保留字 in 判断一个元素是否在列表中。
   TempStr[-1] in ['C','c']   // 判断前者是否与列表中某个元素相同
  1. 分支语句:每个保留字所在行最后存在一个冒号:是语法的一部分,不能省略,冒号及后续缩进用来表示后续语句与条件的所属关系。
  if TempStr[-1] in ['F','f']:
  1. 输入函数:变量 = input(<提示信息字符串>) 用户输入的信息以字符串;输出函数:print() 格式化的输出:
  2. 评估函数 aval() : 去掉最外侧引号并执行余下语句的函数
>>> eval("1") 1 
>>> eval("1+2")  3 
>>> eval('"1+2"')  '1+2' 
>>> eval(' print("hello")')  hello  
  1. 输出函数print
print("",end="“)  # end = ”“ 表示输出不换行
print("执行开始".center(10,'-'))   #---执行开始---
  1. 55

import

 # 1 
import turtle   # 引入 turele 库
turtle.setup()     
# 2
from turtle import setup     # 引入turtle库中的setup函数
setup
from turtle import *    # 引入turtle库中的所有函数
setup
# 3
from turtle as t     # 引入turtle库中并给它起了个别名t
t.setup()

分支结构

<, >, =, <=, >=, == ,!=,and,or,not

if 10<= x <= 20:
    满足条件表达式执行的语句
elif 条件表达式:
    满足条件表达式执行的语句
else:
    不满足条件表达式执行的语句
<表达式1> if (条件) else <表达式2>   # 类似三目运算符 表达式不是语句 表达式里面不能进行赋值操作
ex:
guess1,guess2=eval(input({},{}))
print("猜{}了".format('对' if guess1==99 else '错'))

异常处理

# 1 
try:
  print("123")
except :
  print("456")
# 2
try:
  print("123")
except NameError:      # NameError 是异常的类型,这是python定义好的
  print("456")

异常处理的高级使用

try:
  print("1")
except :
  print("2")
else :       # else 对应在语句块3不发生异常时执行  
  print("3")  
finally:     # 无论前面是否异常 都会执行
  print("4")

循环结构

break 只退出当前的循环
countinue 跳出本次的循环

for循环

for in 可以对很多进行循环,只要是由元素组成的,就都可以循环

# range (start, stop[, step])分别是起始、终止和步长,如果步长不设置则默认为1for i in range(3):
   print(i) # 0 1 2 3 
for i in range(1,3):
   print(i)    #  1 2  
for i in range(2,8,3):
   print(i) # 2 5 
s = "python"
for c in s:    # 对字符串进行循环
  print(c,end="")  # python

for item in ls:  # ls是列表 将每一个元素进行循环
for item in [123,'py',456]:
    print(item ,end=",")   # 123,py,456,
    
for line in fi  # fi是文件标识符   遍历每一行

while 循环

while <条件>:
      <语句块>

循环与else

else: 当循环没有被break时,就执行else语句
else 作为正常完成循环时的奖励

# 1
for <循环变量> in <遍历结构>:
    <语句块1>
else :
    <语句块2>
# 2
while  <条件>:
      <语句块1>
else :
     <语句块2>

函数

在函数定义的基本数据是局部变量,如果想使用全局变量,需要加 global 保留字来声明。
在函数中,如果组合数据类型未真实创建,那使用的组合数据类型是全局变量,因为python中的组合数据类型使用的是指针。
在这里插入图片描述

# 参数(<非可选参数>,<可选参数>) 非可选在可选前 (m,n=1)
def <函数名>(<参数(0个或多个)>):      # 参数可以是无限个,fun(x,*b),*b就代表无限个
    <函数体>
    for item in *b
        a *=item
    return <返回值(0个或多个)>  # 多个返回值返回的是元组类型 可以a,b,c=<函数名>(参数) 接受

# 调用函数时 可以通过位置或名称传递
def fact(m,n)  
a=fact(1,2)  or  a=(n=2,m=1)

lambda 函数

主要用作一些特定函数或方法的参数
lambda函数有一些固定作用使用方式,建议逐步掌握。
一般情况下 建议使用def定义的普通函数

<函数名> = lambda<参数>:<表达式>
f = lambda x,y;x+y
f(10,15)
等价于 def <函数名>(<参数>):
          <函数体>
          return <返回值>

递归

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

递归实例

字符串反转

def rvs(s):
    if s in "":
        return s
    else:
        return rvs(s[1:])+s[0]
char = input("请输入字符串")
char=rvs(char)
print(char)

斐波那契
在这里插入图片描述

def f(n):
    if n== 1 or n == 2:
        return 1
    else:
        return f(n-1) +f(n-2)

汉诺塔

count = 0
def hanoi(n,src,dst,mid):
    global count
    if n== 1 :
        print("{} {}->{}".format(n,src,dst))
        count+=1
    else:
        hanoi(n-1,src,mid,dst) 
        print("{} {}->{}".format(n,src,dst))
        count +=1
        hanoi(n-1,mid,dst,src) 

科赫雪花

  import turtle
def koch(n,length):
    if n == 0:
        turtle.fd(length)
    else:
        for angle in [0,60,-120,60]:
            turtle.left(angle)
            koch(n-1,length/3)
def main():
    turtle.setup(600,600)
    turtle.penup()
    turtle.goto(-200,100)
    turtle.pendown()
    turtle.pensize(2)
    level =3
    for i in range(2):
        koch(level,400)
        turtle.right(120)
    koch(level,400)
    turtle.hideturtle()
main()

文件处理

文件是数据的抽象和集合。
文件时存储在辅助存储器上的数据序列;文件是数据存储的一种形式;
文件展示形态:文本文件和二进制文件
由单一特定编码组成的文件,如utf-8 由于存在编码,也被看成存储着的长字符串。适用于 .txt .py文件
直接有0和1组成,没有统一字符编码,一般存在二进制0和1的组织结构,即文件格式,适用于 .png文件 .avi文件

读写文件

a.open(,)  #将文件存储状态->文件的占用状态
 a.close()   # 将文件占用状态->文件的存储状态
 # 读文件
 a.read(size) 
 a.readline(size)
 a.readlines(hint)
 # 写文件
 a.write(s)
 a.writelines(lines)
 a.seek(offset)
 <变量名> = open(<文件名>,<打开模式>)  #  <变量名> =文件句柄    <打开模式> 文件 or 二进制  读or写
 #  文件名=文件路径和名称  源文件同目录可省路径 
 # D:\PYE\f.txt 在python下,\是转义符 所以路径用 D:/PYE/f.txt 或者 D:\\PYE\\f.txt

文件的打开模式
在这里插入图片描述
在这里插入图片描述

# 读数据
<f>.read(size = -1) # 读入全部内容,给出参数则读入前size长度 若内存不足无法使用此方法
<f>.readline(size =-1)  # 读入一行内容,给出参数则读入该行前size长度 
<f>.readlines(hint=-1)  # 读入文件所有行,以每行为元素形成列表 如果给出参数,读入前hint行 hint参数是字节的总大小,会读取到该文件内对应字节数的当前行。
<f>.linecache()  # 某个文件的第几行

# 写数据
<f>.write(s)  #向文件写入一个字符串和字节流
<f>.writelines(lines)  # 将一个元素全为字符串的列表写入文件 但是写入的文件是紧挨着的
<f>.seek(offset)  # 改变文件操作指针的位置,offset含义如下:0-文件开头;1-当前文件位置;2-文件结尾 

读取数据示例

# 遍历全文本 方法1  读取大文件,会浪费时间和资源
fname = input("请输入要打开的文件名称:")
fo = open(fname,"r")
txt = fo.read()  # 一次读取 统一处理
# 对全文txt进行处理
fo.close()

# 遍历全文本 方法2  按数量读入 更常用
fname = input("请输入要打开的文件名称:")
fo = open(fname,"r")
txt = fo.read(2)  # 按数量读入 逐步处理
while txt != "" :
     # 对 txt进行处理
     txt = fo.read(2)
fo.close()

# 逐行遍历文件:方法一   一次读入 分行处理
fname = input("请输入要打开的文件名称:")
fo = open(fname,"r")
for line in fo.readlines():
    print(line)
fo.close()

# 逐行遍历文件:方法二 分行读入,逐行处理
fname = input("请输入要打开的文件名称:")
fo = open(fname,"r")
for line in fo:
     print(line)
fo.close()

写文件实例

fo = open("output.txt","w+")
ls = ["中国","法国","美国"]
fo.writelines(ls)
fo.seek(0)
for line in fo:   # 写入一个字符串列表
    print(line)
fo.close()      >>> 中国法国美国

自动化思维

自动化思维:数据和结构分离,数据驱动的自动运行
接口化设计:格式化设计结口,清晰明了
二维数据应用:应用维度组织数据,二维数据最常用
数据的维度:一维,二维,多维,高维
一维数据:
一维数据的表示:列表类型(有序)和集合类型(无序)
一维数据的存储:空格分隔,逗号分隔,特殊符号分隔
一维数据的处理:字符串方法.split()和.join()
二维数据:
CSV数据存储格式:如果某个元素缺失,逗号仍要保留,二维数据的表头可以作为数据存储,也可以另行存储,逗号是英文半角逗号,逗号和数据之间无额外空格
二维数据的表示:列表类型,其中每个元素也是要给列表
VSV格式:逗号分隔表示一维,按行分隔表示二维
二维数据的的处理:for循环+ .split()和 .join()

一维数据的存储优缺点
空格分隔使用一个或多个空格存储,不换行 缺点:程序中不能存在空格
逗号分隔使用英文半角逗号分隔数据进行存储,不换行;缺点:数据中不能有逗号
其他方式使用其他符号或符号组合分隔,建议采用特殊符号。缺点:需要根据数据特点定义,通用性较差

一维数据的读入与写入

# 中国$日本$美国$法国$意大利
txt = open(fname).read()
ls = txt.split("$")
f.close()

ls = ['中国','美国','日本']
f = open(fname,'w')
f.write(''.join(ls))
f.close()

二维数据的读入和写入

# 从csv的文件中读入数据
fo = open(fname)
ls = []
for line in fo:
    line = line.replace("\n","")
    ls.append(line.split(","))
fo.close()

# 将数据写入CSV格式的文件
ls = [[],[],[]]  #二维列表
f = open(fname,'w')
for item in ls:
    f.write(','.join(item)+'\n')
f.close()

# 二维数据的逐一处理
ls = [[],[],[]]  #二维列表
for row in lis:
    for column in row:
        print(ls[row][column])

读取文件

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值