python第一章学习个人总结

个人总结

python第一章环境搭建和基本语法个人总结

1、Pyenv安装操作系统准备准备Linux最小系统即可。

2、pyenv安装方式

git 安装

1)、安装git

# yum install git -y

2)、安装Python编译依赖

# yum -y install gcc make patch gdbm-devel openssl-devel sqlite-devel

readline-devel zlib-devel bzip2-devel

3)、创建用户python

# useradd python

4)、使用python用户登录后安装Pyenv

$ curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenvinstaller | bash

##使用python用户,原因是因为root账号权限较大,为免造成混乱等,使用python账号。

  • 、在python用户的/.bash_profile中

export PATH=”/home/python/.pyenv/bin:$PATH”

eval “$(pyenv init -)”

eval “$(pyenv virtualenv-init -)”

$ source ~/.bash_profile

  • Pyenv的使用python 版本及path路径$ python –version$ python -V$ echo $PATH可以看到当前系统Python

4、在线安装指定版本 $ pyenv install 3.5.3 $ pyenv versions 这样的安装可能较慢,为了

提速,可是选用cache方法。

使用缓存方式安装 在~/.pyenv目录下,新建cache目录,放入下载好的待安装版本的文件。 不确定要哪一个文件,把下载的3个文件都放进去。 $ pyenv install 3.5.3 -v

5、pyenv的python版本控制

version 显示当前的python版本 versions 显示所有可用的python版本,和当前版本

global 全局设置 $ pyenv global 3.5.3 可以看到所有受pyenv控制的窗口中都是3.5.3的

python版本了。 这里用global是作用于非root用户python用户上,如果是root用户安装,请不要使

用global,否则影响太大。比如,这里使用的CentOS6.5就是Python2.6,使用了global就成了3.x,

会带来很不好的影响。 $ pyenv global system

shell 会话设置 影响只作用于当前会话 $ pyenv shell 3.5.3

local 本地设置 使用pyenv local设置从当前工作目录开始向下递归都继承这个设置。 $ pyenv

local 3.5.3

Virtualenv 虚拟环境设置

为什么要使用虚拟环境? 因为刚才使用的Python环境都是一个公共的空间,如果多个项目使用不同

Python版本开发,或者使用不同的Python版本部署运行,或者使用同样的版本开发的但不同项目使

用了不同版本的库,等等这些问题都会带来冲突。最好的解决办法就是每一个项目独立运行自己的

“独立小环境”中。

使用插件,在plugins/pyenv-virtualenv中 $ pyenv virtualenv 3.5.3 mag353 使用python

3.5.3版本创建出一个独立的虚拟空间。

$ pyenv versions

* system (set by /home/python/.pyenv/version)

3.5.3

3.5.3/envs/mag353

mag353

可以在版本列表中存在,就和3.5.3是一样的,就是一个版本了。 真实目录在~/.pyenv/versions

/下,以后只要使用这个虚拟版本,包就会按照到这些对应的目录下去,而不是使用3.5.3。

[python@node ~]$ mkdir -p magedu/projects/web

[python@node ~]$ cd magedu/projects/web/

[python@node web]$ pyenv local mag353

(mag353) [python@node web]$ cd ..

[python@node projects]$ cd web/

(mag353) [python@node web]$

  • pip 通用配置

Linux系统 $ mkdir ~/.pip 配置文件在~/.pip/pip.conf

[global]

index-url=https://mirrors.aliyun.com/pypi/simple/

trusted-host=mirrors.aliyun.com

在不同的虚拟环境中,安装redis包,使用pip list看看效果。 $ pip -V

pip install pkgname 命令,是以后经常要使用的安装python包的命令

windows系统 windows下pip的配置文件在~/pip/pip.ini,内容同上

安装ipython

ipython 是增强的交互式Python命令行工具

$ pip install ipython

$ ipython

Jupyter 是基于WEB的交互式笔记本,其中可以非常方便的使用Python。 安装Jupyter,也会安装

ipython的

$ pip install jupyter

$ jupyter notebook help

$ jupyter notebook –ip=0.0.0.0 –no-browser

$ ss -tanl

7、导出包

虚拟环境的好处就在于和其他项目运行环境隔离。每一个独立的环境都可以使用pip命令导出已经安

装的包,在另一个环境中安装这些包。

(mag353) [python@node web]$ pip freeze > requirement

(mag353) [python@node web]$ mkdir ~/magedu/projects/pro1

(mag353) [python@node web]$ cd ~/magedu/projects/pro1

[python@node pro1]$ pyenv install –list

[python@node pro1]$ pyenv install 3.6.4

[python@node pro1]$ pyenv virtualenv 3.6.4 mag364

[python@node pro1]$ pyenv local mag364

(mag364) [python@node pro1]$ mv ../web/requirement ./

(mag364) [python@node pro1]$ pip install -r requirement

  • windows安装方式

python的windows安装下载 Windows x86-64 executable installer ,按照提示安装即可。 注意,勾选增加PATH路

9、安装成功之后(cmd命令)

pyenv离线安装

首先从github上克隆项目

$ git clone https://github.com/pyenv/pyenv.git ~/.pyenv

$ git clone https://github.com/pyenv/pyenv-virtualenv.git ~/.pyenv/plugins

/pyenv-virtualenv

$ git clone https://github.com/pyenv/pyenv-update.git ~/.pyenv/plugins/pyenvupdate

$ git clone https://github.com/pyenv/pyenv-which-ext.git ~/.pyenv/plugins

/pyenv-which-ext

可以把克隆的目录打包,方便以后离线使用。

$ vim ~/.bash_profile

export PATH=”/home/python/.pyenv/bin:$PATH”

eval “$(pyenv init -)”

eval “$(pyenv virtualenv-init -)”

$ source ~/.bash_profile

  • 安装jupyter  (pip install jupyter)   安装完成后,设置登陆密码,jupyter notebook password设置密码。。jupyter  notebook  –ip=0.0.0.0:8888(可以自己更改)。然后就可以登录使用。
  • 安装
  • 计算机基础知识。
  • 程序;一组能让计算机识别和执行的命令;
  • 电子计算机:能够执行程序的机器。
  • 现代计算机:

艾伦.麦席森.图灵,英国数学家、逻辑学家,被称为计算机科学之父,人工智能之父。

冯诺依曼。他提出了二进制作为数字计算机的数制基础,计算机能够按照程序顺序执行,计算机应该有五大部件。

冯诺依曼体系

  • cpu。由运算器和控制器组成;
  • 运算器是主管算数据的,四则运算等。算数运算和逻辑运算。
  • 控制器:是计算机控制的,在bas上面跑,执行指令。
  • 存储器。由于记忆程序和数据,例如内存。数据掉电易失的,好处是速度快。
  • 输入设备。将数据或者程序输入到计算机中,例如键盘等。I
  • 输出设备:例如打印机等。展示给用户。o
  • 磁盘,cpu不是直接和磁盘打交道。
  • 所有数据—–磁盘—内存 —-cpu。
  • cpu算好的数据—–内存—磁盘。
  • cpu中还有寄存器和多级缓存cache。
  • 寄存器是放在cpu当中的,必须把数据装到寄存器中。把操作数据放到寄存器,计算器去处理。
  • 缓存cache,缓存比寄存器大的多。
  • 缓存、寄存、内存的掉电易失的、离cpu较近的越容易分级的。一级比一级的处理速度慢。
  • 优化的是cpu的。
  • 编程语言:计算机语言;人与机器之间交互的语言。
  • 机器语言:就是指令,一定位数组成二进制的0和1的序列,成为机器指令,机器指令的集合就是机器语言。与自然语言差异太大,难学,难懂,难写,难记,难查错。
  • 汇编语言。用一些助剂符号代替机器指令,成为汇编语言。ADD A,B指的是将寄存器A得数与寄存器B的数相加得到的结果放到寄存器A中。。汇编语言写好的程序需要汇编程序转换成机器指令。    汇编语言只是稍微好记了一些,可以认为就是机器指令对应的助记符。只是符号本身接近自然语言
  • 语言分类

低级语言

面向机器的语言,包括机器语言、汇编语言

不同的机器不能通用,不同的机器需要不同的机器指令或者汇编程序

高级语言

接近自然语言和数学语言的计算机语言

高级语言首先要书写源程序,通过编译程序把源程序转换成机器指令的程序

1954年正式发布的Fortran语言是最早的高级语言,本意是公式翻译

人们只需要关心怎么书写源程序,针对不同机器的编译的事交给编译器关心处理

  • 语言越高级,越接近人类的自然语言和数学语言

语言越低级,越能让机器理解

高级语言和低级语言之间需要一个转换的工具:编译器、

解释器

C、C++等语言的源代码需要本地编译

Java、Python、C#的源代码需要被解释器编译成中间代码(Bytecode),在虚拟机上运行

编译语言,把源代码转换成目标机器的CPU指令,提前声明变量。

解释语言,解释后转换成字节码,运行在虚拟机上,解释器执行中间代码。无须提前声明变量,可以直接拿来使用。Python是动态强类型语言。

  • 高级语言的发展。
  • 非结构化语言。

编号或者标签。GOTO,子程序可以有多个入口和出口。

有分支和循环。

  • 结构化语言。任何基本机构只允许是唯一的入口和出口。

顺序、分支、循环、GOTO。

  • 面向对象语言:更加接近人类认知世界的方式。万事万物抽象成对象,对象间关系抽象成类和继承。。。。封装、继承、多态。
  • 函数式语言:古老的编程范式,应用在数学计算,并行处理的场景,引入到了很多现代高级语言中。。。。。。函数是“一等公民”

,高阶函数。

  • 程序Program

1)程序:算法+数据结构=程序。

数据一切程序的核心。

程序结构是数据在计算机中的类型和组织方式。

算法是处理数据的方式,算法有优劣之分。

  • 写程序难点:理不清数据。

搞不清处理方法。

无法把数据设计转换成数据结构,无法把处理方法转换成算法。

无法用设计范式来进行程序设计。

世间万物皆有bug,但不会debug(找到问题所在)。

  • Python解释器
  • 官方cpython

C语言开发的,最广泛的python解释器。

  • Ipython

一个交互式、功能增强的Cpython。上课常用的。

  • Pypy

Python语言写成的python解释器,jit技术,动态编译python代码。JIT实时编译,动态编译。直接编译成本地代码(向c语言或者c++)。动态调整,动态优化,最比较牛的技术。

  • Jython

Python的源代码编译成JAVA的字节码,跑在JVM上面。

5)IronPYthon

与Jython类似,运行在。Net的平台上的解释器,Python代码被编译成。Net的字节码。

  • Python基础语法

1)注释:#标准的文本。

2)数字:整数,不区分long和int。

进制0xa、0o10、0b10.

Bool,2个值True、Talse。

浮点数:

1.2、3.1415、-0.12,1.46e9等价于1.46*10(9次幂)不能表达所有的小数。

复数:1+2j

3)字符串。

使用‘”单双引号引用的字符的序列。

‘’‘和“”“单双单引号,可以跨行、可以在其中自由的使用单双引号。

  • 基础语法
  • 转义序列(字符)

\\   \t   \r   \n  \’   \”

  • 缩进

未使用c语言的花括号,而是采用缩进的方式表示层次关系。

约定使用4个空格缩进。

  • 续行

在行尾使用 \

  • 基础语法

标示符:1、一个名字,用来指代一个值。

2、只能用字母和下划线和数字。

3、只能以字母或下划线开头,开头的第一个不能是数字。

4、不能是python的关键字,例如def、class就不能作为标示符。

5、Python是大小写敏感的。

约定:

不允许使用中文。不允许使用歧义单词,例如class。。在python中不要随便使用下划线开头的表示符。

  • 基础语法:
  • 常量;一旦赋值以后不能改变值的标示符。。。Python中无法定义常量。
  • 字面常量:一个单独的量,例如12、’’abc’’、
  • 变量:赋值后,可以改变值的标识符。
  • python的语言类型。

1)python是动态语言、强类型语言。

  • 静态编译语言:Java。C。。C++、实现声明变量类型,类型不能再改变。

编译时检查。

  • 动态编译语言:不用事先声明类型。随时可以赋值为其他类型。。。编程时不知道是什么类型,很难推断。
  • 强类型语言。不同类型之间操作,必须事先强制类型转换为同一类型。Print(‘a’+1)
  • 弱类型,不同类型之间可以操作,自动隐士转换。
  • 运算符Operater

1)算数运算符;

+ – * / % **

自然除/结果是浮点数,整除//。

  • 位运算符。

&  |  ~   ^  <<  >>(位移,左右。)

常用方式   乘以2的倍数,,32//4相当于>>2

(27)原码、反码、补码,负数表示法

1)原码

5 => 0b101,1 => 0b1 ,-1 => -0b1, bin(-1)

2)反码

正数的反码与原码相同;负数的反码符号位不变其余按位取反

补码

正数的补码与原码相同;负数的补码符号位不变其余按位取反后+1

负数表示法

数字电路的CPU中的运算器实现了加法器,但是没有减法器,减法是转换成加法

负数在计算机中使用补码存储,-1的补码为1111 1111

  • 运算符

1)比较运算符

==    !=   <   >    >=    <=

返回一个bool值。

1<’1’    1==’1’

链式比较操作符;

4>3>2      4>munumber >=1

  • 逻辑操作符

与或非 and  or   not

短路运算符。And第一个表达式为Flase,后面的没必要参与计算,结果为Flase

Or如果第一个表达谁为True,后面没必要参与运算。这个表达式为True。

  • 运算符的优先级
  • 算数运算符》位运算符》身份运算符》成员运算符》逻辑运算符。
  • 记不住,用括号。
  • 长表达式,多用括号,易懂易读。

比较大小必须是相同的数据类型。

不同类型可做等于不能,但是不能比较大小。

  • 表达式Expression。
  • 由数字、符号、括号、变量等的组合。

算数表达式

逻辑表达式

赋值表达式。

在python中,赋值即定义,如果一个变量已经定义,赋值相当于重新定义。

  • 内存管理

1)变量无须事先声明,也不需要指定类型。(动态语言的特性)

2)编程中一般无须关心变量的存亡,也不用关心内存的管理。

3)python使用引用计数记录所有对象的引用数。

当对象引用数变为0,他就可以被当为垃圾回收GC

计数增加:赋值给其它变量就增加引用计数,例如;

计数减少:函数运行结束时,局部变量就会被自动销毁,对象引用计数减少。

变量被赋值给其它对象。

有关性能的时候,就需要考虑变量的引用问题,但是该释放内存,还是尽量不释放内存,看需求3)回收策略,定时回收,内存规整,是有策略的。

4)分袋 ,分类存放:永久的,临时的,只用一次的。(引用计数)

数据挪移过程中,不允许操作。垃圾清理过程中。

5)一般不手动进行垃圾回收(GC)。

6)具体看情况,清理GC。

7)内存不是取之不尽的资源。

(32)程序控制

顺序:按照先后顺序一条条执行。

分支:根据不同的情况判断,条件满足执行某条件下定的语句。

循环:条件满足就反复执行,不满足就不执行或不再执行。

  • 单分支结构

If语句:  if condition:   代码块。。Bool值,类型。

代码块:类似于if语句的冒号后面的就是一个语句块。

在if、for、def、class等。

  • 真值表

 

False等价布尔值,相当于bool(value)

空集合

空字符串

空字典

空列表

空元祖

None对象

0

  • 多分支结构:……….elif………….else。
  • 分支嵌套:嵌套结构,可以是分支、循环的嵌套。

可以相互嵌套多层。

 

 

  • 循环 while语句。

语法;while condition:

Block:

  • for循环。

For element in iteratable:(可迭代的)

Block。

Range函数。步长由负到正。

 

 

  • 循环continue语句。

中断当前循环的当次执行,继续下一次循环。

  • 循环break语句。

终止当前循环。

 

(41)循环continue / break总结。

continue和break是循环的控制语句,只影响当前循环,包括while、for循环

 如果循环嵌套, continue和break也只影响语句所在的那一层循环

continue和break 不是跳出语句块,所以 if cond: break 不是跳出if,而是终止if外的break所在的循环

 

(42)循环else语句

while condition:

Block

else:

Block

For element in iteratable:

block

else:

Block

如果循环正常的执行结束,就执行else子句。如果使用break终止,就不会执行else语句。

  • 三元表达式。当输出项小于一行的,建议使用。

a=int(input(‘input first number’))

b=int(input(‘input second number’))

print(b,a) if a>b else print(a,b)

(45)拼字符串利用str()

(46)print的用法Sep=’’    end=’’    名字一致。

(47)斐波那契数列的定义。

斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=0,F(1)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*)在现代物理、准晶体结构、化学等领域,斐波纳契数列都有直接的应用,为此,美国数学会从1963年起出版了以《斐波纳契数列季刊》为名的一份数学杂志,用于专门刊载这方面的研究成果。

  • 时间模块,

import datetime。

Start=Datetime.datetime now()    

Delta[0]=(datetime.datetiame.now()-start).total_seconds()

Print(delta,sep=\t)

Timedelta 时间增量。

(49)练习题:

1)#判断有几位数
a=int(input(‘please input a number’))
if a<9:
print(1)
elif a<99:
print(2)
elif a<999:
print(3)
elif a<9999:
print(4)
elif a<99999:
print(5)

2)#计算10以内的偶数
for i in range(10):
if i%2:
continue
print(i)

3)#判断有几位数并依次打印一个的个数
a=int(input(‘please input a number’))
print(a)
if a>999:
if a>9999:
num=5
else:
num=4
else:
if a>99:
num=3
elif a>9:
num=2
else:
num=1
print(num)
n=a
for i in range(num):
n=a//10
print(a-n*10)
a=n

4)#打印一个边长为n的正方形
a=int(input(‘please input a number’))
print(‘*’*a)
for i in range(a-2):
print(‘*’+ ‘ ‘*(a-2)+ ‘*’)
print(‘*’*a)

5)#求100内所有奇数的和(2500)
sum=0
for i in range(1,100,2):
sum+=i
print(sum)

6)判断成绩

score=int(input(‘please input you score’))
if score>=80:
if score>=90:
print(‘A’)
else:
print(‘B’)
else:
if score>=70:
print(‘C’)
elif score>=60:
print(‘D’)
else:
print(‘E’)

7)#求1到5阶乘之和
sum=1
for i in range(1,6):
sum=sum*(i+1)
print(sum)
#求1到5阶乘之和
sum=0
i=1
for i in range(1,6):
sum=sum+(i*(i+1))
print(sum)

8)#打印100以内的斐波那契
a=0
b=1
while True:
c=a+b
if c>100:break
a=b
b=c
print(c)

9)#给一个数,判断它是否是素数(质数)
a=int(input(‘please input a number’))
for i in range(2,a):
if a%i==0:
print(‘No’)
break
else:
print(‘Yes’)

10)#打印九九乘法表
for i in range(1,10):
for j in range(1,i+1):
print(j,’*’,i,’=’,i*j ,’\t ‘,end=” “)
print()

11)#打印右侧菱形
for i in range(-3,4):
print(‘ ‘*abs(i),’*’*(7-2*abs(i)),’ ‘*abs(i))

12)#打印右侧菱形
for i in range(-3,4):
if i<0:
n=2*-(i)+1
print(‘ ‘*(i+3),’*’*n,’ ‘*(i+3))
elif a>=0:
n=2*i+1
print(‘ ‘*(3-i),’*’*n,’ ‘*(3-i))
13)#打印闪电。
for i in range(-3,4):
if i<0:
print(‘ ‘*(-i) ,’*’* (4+i))
elif i>0:
print(‘ ‘*2,’*’*(4-i))
else:
print(‘*’*7)

14)#打印100以内的斐波那契
a=0
b=1
while True:
c=a+b
if c>100:break
a=b
b=c
print(c)

15)#打印101项斐波那契
a=1
b=1
count=2
while True:
c=a+b
a=b
b=c
count+=1
print(‘{},{}’.format(count,c))
if count==101:
break

16)#求十万以内的素数

for a in range(3,100001,2):
for i in range(3,int(a**0.5)+1,2):
if a%i==0:
break
else:
print(a)

17)#输入圆的半径,求面积和周长
r=int(input(‘please input r’))
print(‘s=’+str(3.14*r*r))
print(‘n=’+str(2*3.14*r))

18)#输入两个数,比较大小,并按照升序排序。
a=int(input(‘please input fist’))
b=int(input(‘please input second’))
print(b,a) if a>b else print(a,b)

19)#输入若干个数,输出最大数
temp=0
while True:
a=int(input(‘please input number’))
if a>temp:
temp=a
print(temp)
else:
print(‘please input true number’)

20)#输入若干个数,输入后输出算数平均值
sum=0
count=0
while True:
a=int(input(‘please input number’))
sum+=a
count+=1
print(sum/count)

21)#解决猴子吃桃的问题
sum=1
for i in range(9):
sum=2*(sum+1)
print(sum)

 

 

 

 

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/92878

(0)
上一篇 2018-03-25 11:16
下一篇 2018-03-25 16:58

相关推荐

  • 设计模式 ( 十三 ) 命令模式Command(对象行为型)

    1.概述         在软件设计中,我们经常需要向某些对象发送请求,但是并不知道请求的接收者是谁,也不知道被请求的操作是哪个,我们只需在程序运行时指定具体的请求接收者即可,此时,可以使用命令模式来进行设计,使得请求发送者与请求接收者消除彼此之间的耦合,让对象之间的调用关系更加灵活。  例子1:电视机遥控器…

    Linux干货 2015-07-16
  • 马哥教育网络班20期第2周课程练习

    一、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关  示例演示。 linux上文件管理命令包括: ls,cat,pwd,cp,rm,cd,head,tail,more,less,cut,which,whereis,find,mkdir,mv; 1、ls 命令;显示文件/文件夹清单   例如:如下显示列出根目录下的文件及目录…

    Linux干货 2016-06-23
  • bind的安装实现

    首先介绍一下我的测试环境:centos 7+入网(为了试行一下自己的安装文档,才装的虚拟机) 1> yum install bind bind-chroot -y     因为刚刚安装的虚拟机,这里我就不检查了; 2>vim named.conf [root@localhost named]# cat /e…

    Linux干货 2016-03-20
  • Sed文本文件工具的使用详解

    Sed文本文件工具的使用详解 一、概述 sed 工具实际上就是一个非交互式的编辑器,主要是为了处理文本而生的,我们知道处理文本的三剑客是 grep sed awk 我们之前学习过 grep 文本过滤工具,它的主要作用是为了过滤文本,而sed 工具也是过滤文本,只不过sed工具针对的是文件中的每一行,而且sed工具更加强大,下面还具体说明一下sed 工具的原理…

    Linux干货 2016-10-09
  • bash脚本之数组及字符串切片,登陆配置文件

    一,概述 数组(就是一堆变量的集合) 变量:存储单个元素的内存空间 数组:存储多个元素的连续的内存空间,相当于多个变量的集合/ 数组名和索引     索引:编号从0开始,属于数值索引     注意:索引可支持使用自定义的格式,而不仅是数值格式,即为关联索引,bash4.0版本之后…

    Linux干货 2016-09-01
  • Linux之bash shell脚本编程入门篇(二)以及文件查找和压缩的使用

    bash shell脚本编程入门篇(二) read命令的使用 作用:     使用read来把输入值分配给一个或多个shell变量:         -p指定要显示的提示      &nbs…

    Linux干货 2016-08-18