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.www58058.com/92878

(0)
604603701@qq.com604603701@qq.com
上一篇 2018-03-25
下一篇 2018-03-25

相關推薦

  • Linux進程管理-初級

    Linux進程管理-初級 背景: 在學習完Linux進程管理后,發現這一塊的知識點比較多,很多都是自己以前沒有接觸過的,而且這部分知識對今后的工作有很大幫助,在這里做個學習的總結,供以后復習。 進程介紹: 什么是進程 進程(Process):運行中的程序的一個副本,是被載入內存的一個指令集合,進程有進程ID(Process ID,PID),用來標記每個進程,…

    2017-08-26
  • 計算機基礎

    計算機系統 計算機系統由兩大部分組成硬件系統(Hartware)和軟件系統(Software) 硬件系統:主要由中央處理器、存儲器、輸入輸出控制系統和各種外部設備組成。中央處理器是對信息進行高速運算處理的主要部件,其處理速度可達每秒幾億次以上操作。存儲器用于存儲程序、數據和文件,常由快速的主存儲器(容量可達數百兆字節,甚至數G字節)和慢速海量輔助存儲器(容量…

    Linux干貨 2017-05-20
  • 磁盤管理

      磁盤管理是一項計算機使用時的常規任務,它是以一組磁盤管理應用程序的形式提供給用戶的,它們位于"計算機管理"控制臺中.它包括查錯程序和磁盤碎片整理程序以及磁盤整理程序。   一磁盤分區     1為什么要分區?     ?優化I…

    Linux干貨 2016-09-02
  • Linux第五周總結

    1、顯示當前系統上root、fedora或user1用戶的默認shell 2、找出/etc/rc.d/init.d/functions文件中某單詞后面跟一組小括號的行,形如:hello(); 3、使用echo命令輸出一個絕對路徑,使用gerp取出其基名;     擴展:取出其路徑名 4、找出ifconfig命令結果中的…

    2017-07-30
  • 馬哥教育網絡班22期+第4周課程練習 忍者亂太郎喻成

    1、復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限。   cp -rp /etc/skel /home/tuser1   chmod -R 700 /home/tuser1 2、…

    Linux干貨 2016-10-09
  • Linux正則表達式及grep練習題

    Linux正則表達式及grep練習題          1、找出ifconfig命令結果中本機的所有IPv4地址         # ifconfig|grep -E -o "(([0-9]…

    Linux干貨 2016-08-07
欧美性久久久久