python之路 day1 -python 基礎1

本節內容從Alxs 博客抄襲而來html

 

1、Python 介紹python

Python 的創始人是 吉多.範羅蘇姆 在1989 年的聖誕節期間 爲了打發時間 開發了 一個新的腳本解釋程序,做爲ABC語言的一種繼承。c++

目前Python排名大約第五 有上升的趨勢 Python崇尚優美、清晰、簡單,是一個優秀並普遍使用的語言web

目前python 主要應用領域:正則表達式

  雲計算 、web開發、科學運算、人工智能 、系統運維、金融圖形GUI算法

PYTHON 在一些公司的應用:express

谷歌:GOOGLE APP ENFINE 、code.goojle.com、google earth、谷歌爬蟲、Google廣告等編程

CIA:美國中情局網站c#

YouTube:世界最大的視頻網站windows

Dropbox 美國最大的在線雲存儲網站

Facebook

Redhat 世界最流行的Linux 髮型版本中的yum包管理工具就是用Python開發的

豆瓣:國內幾乎全部的雨霧俊是用過Python開發的

知乎 :國內最大的問答社區 經過Python開發的(國外quora)

春雨醫生 

除了上面還有搜狐、金山、騰訊、盛大、網易、百度、阿里、淘寶、土豆、新浪、果殼等都在使用Python完成各類各樣的任務

Python 是一門什麼樣的語言?

變成語言主要從如下幾個角度進行分類

編譯和解釋的區別是什麼?

編譯器是吧源程序的每一條語句都變編譯成機器語言,保存成二進制文件,這樣運行時計算機能夠直接以機器語言運行次程序,速度很快

而 解釋器則是值在執行程序時 才一條一條的解釋成機器語言給計算機來執行,因此運行速度是不如編譯後的程序運行的速度快

 

 

 

 

 

 

 

 

 

編譯型vs解釋型

編譯型

有點:編譯器通常會有預編譯的過程對代碼進行優化。由於編譯只作一次,運行時不須要編譯,因此編譯型語言的執行效率高。能夠脫離語言環境獨立運行。

缺點:編譯以後若是須要修改須要修改整個模塊從新編譯,編譯的時候根據環境生成機器碼,不一樣的操做系統之間移植就會有問題,須要根據運行的操做系統環境編譯不一樣的可執行文件。

解釋型

有點:有良好的平臺兼容性,在任何環境中均可以運行,前提是安裝了計時器(虛擬機)、靈活,修改代碼的時候直接修改就好,能夠快速部署,不用停機維護。

缺點:每次運行時都要解釋一遍,性能上不如編譯型語言

 

彙編語言就是低級語言  從人類思惟出發的計算機語言是高級語言

 

編譯與解釋

動態語言和靜態語言 

動態型語言:動態型語言是指在運行期間採起作數據類型檢查的語言,也就是說 在動態類型語言編程 的時候是不用給定變量的數據類型,在編程的過程當中改語言會根據變量的賦值,在內部將數據類型記錄下來。Python 和Ruby 就是一種典型的動態編程語言

靜態類型 :靜態語言和動態的類型剛好相反,他的數據類型是在編譯期間檢查的,也就是說在寫代碼的過程當中要聲明變量的類型。c/c++ 是靜態語言的典型,其餘靜態類型語言還有c# Java 

強類型定義語言和若類型定義語言

一、強類型定義語言 是指一旦變量的類型指定爲某個數據類型,若是不通過強制轉換,那麼他永遠就是這個數據類型了  

二、若類型定義語言  數據類型能夠被忽略的語言。它與強定義語言相反,一個變量能夠賦予不一樣類型的數據類型。

 

強類型定義語言的速度上可能遜色與若類型定義語言。可是強類型定義語言帶來的嚴謹能都有效的避免許多錯誤。

總結:

  經過以上的介紹,得知Python是 動態解釋型的強定義類型語言

 

python 的有點和缺點

一、Python 定位是優雅、明確 、簡單,因此Python程序看上去老是簡單易懂,初學Python 不但入門容易,二期未來深刻下去,能夠編寫那些很是複雜的程序

二、開發效率很是高,Python有很是強大的第三方庫,基本上你想經過計算機實現任何功能,Python官方庫裏都是有相應的模塊進行支持,直接下載調用後,在基礎庫的基礎上在進行開發,會大大下降開發週期,避免重複開發

三、高級語言----當你使用Python編程的時候 你無需考慮注入如何管理你的程序使用內存一類的底層細節

四、可移植性-----因爲他的開源本質Python 已經被移植 在許多平臺上。若是你當心的避免使用以來與系統的特性,那麼你的全部Python 程序無需修改就你胡能夠在市場上全部的系統平臺上運行

五、可擴展性------若是你須要你的一段關鍵代碼運行得更快或者但願某些算法不公開,你能夠吧一部分程序用c或者c++編寫,而後在你的Python 程序中使用它們

六、可嵌入性---- 你能夠把Python嵌入你的c/c++程序,從而向你的程序用戶提供腳本功能。

有點總結 

優雅 明確 簡單 、開發效率高、高級語言、可移植性、可擴展性、可嵌入

 

缺點

一、速度慢Python的裕興速度相比c原缺失很慢 跟Java相比也是要慢一些,所以這也是不少的所謂的大牛不屑於使用Python的主要緣由,可是其實小河裏所致的運行速度慢在大多數狀況下用戶是沒法直接感知到的必須藉助工具

2 代碼不能加密   Python是解釋型語言  他的代碼都是以名文的形式存放 

三、線程不能利用多CPU問題,這是Python被人詬病最多哦的一個缺點GIL 是全局解釋器鎖(global inerpreter lock),是計算機程序設計語言解釋器用語同步線程的工具,使得任什麼時候刻僅有一個線程在執行,Python的線程是操做系統的原生線程。在Linux上爲pthread, 在windows 上爲winthread,徹底由操做系統調度線程的執行。一個Python解釋器進程內有一條主線程,以及多條用戶程序的執行線程。及時在多核CPU平臺上,因爲GIL的存在,因此禁止多線程的並行執行,。關於這個問題折中解決方法,咱們在之後線程和進程章節裏在進行詳細探討。

 

 

5、Holleworld 程序

 print(「hello world!」)

 

 

6、變量|字符編碼

變量的聲明

name=「hoffman」

Python 是動態語言不須要定義變量類型 

變量的定義規則 

》變量只能是 字母數字下劃線的任意組合

》變量的第一個字符不能是數字

》變量不能是關鍵字

》變量命名要見名知意

 

 7、字符編碼

Python解釋器在加載  .py  文件中的代碼是,會對內容進行編碼(默認ascill)

ASCII(American standard code for information interchange,美國標準信息交換代碼)

python  3  是支持中文的  

utf-8  

註釋 

單行註釋用#

多行註釋用「」「」備註是內容「」「」  使用成對的三引號

8、用戶輸入 

#!/usr/bin.env python  (env  表示取環境變量)

#_*_coding:utf-8_*_

#name=raw_input("what is your name?")

#在Python 3 中的輸入是

name=input(「what your name?」)

 

 輸入密碼

 

Python3 中 

 

import getpass 

pwd=getpass.getpass("請輸入密碼:")

#輸入的內容會被隱藏 看不到

print(pwd)

 

(注意  這裏引用 getpass 包 在pycharm  中是很差用的 )

 

 

 

 其餘先跳過 

十一 數據類型 

一、數字

 

int(整型)

-2**31~2**31 (31位機器)

-2**63~2**63-1(64位機器)

 Python中沒有指定長整形的長度 可是因爲機器內存有大小 因此長整型和內存有關係

整型過長是 Python自動轉換成長整型

float(浮點數)

浮點數是用來處理實數的,既帶有小數的數字。相似於C語言中的double 類型。 佔8個字節(64位),其中52位表示底,11位表示指數,剩下的一位表示符號

 

complex(複數)

  複數由實數部分和虛數部分組成,通常形式爲x+yj,其中的x是複數的實數部分,y是複數的虛數部分,這裏的x和y都是實數。
注:Python中存在小數字池:-5 ~ 257
 
二、布爾型 
真或者假
1或者0
true or false
三、字符串(string)
使用單引號 或者 雙引號  或者三引號
name=「Holle world」
name2=‘Holle world’

若是是使用單引號 的字符串 字符串中間出現一個單引號就會報錯  

這是可使用一個\'  來轉譯

使用三引號程序可以原格式輸出

name3=「」「」ahsdof

jalsdjfkasf   

asdfasdf''''''

print(name3)

結果會是 保持原格式輸出  包括空格 和回車

 

基本的字符串運算

  •  len()函數

能夠計算字符串的長度

  • 拼接   +

name=name1+name3

這樣就把兩個字符串拼接起  拼接只能拼接字符串

  • 重複 *

name=name*3

表示吧name 拼接三次賦值給name

還能夠寫成3*name   

這裏只能乘以一個整數 不然是錯誤的  

  •  in

 判讀一個字符串是不是另外一個字符串的子串(這裏面大小寫是敏感的)

返回值:true 或者false

‘a’ in name

結果是  true 

  • for語句

 他的含義是枚舉字符串中的每一個字符

定義字符串

>>>my_str= 'holle world'

#char 表明定義的變量

>>>for char in my_str:

  print(char)

結果爲

>>>

 h

o

l

l

e

 

w

o

r

l

d

 

舉例  編寫一個 vowels_count 函數 計算一個字符串中的元音字母(aeiou或者AEIOU)的數目

#Author:hoffman
#計算一個字符串中的元音字母的個數

my_str=input("請輸入一個字符串:")

def vowels_count (str):
count = 0
for char in str:
if char in "aeiouAEIOU":
count+=1
return count
print (vowels_count(my_str))
  • 字符串索引(index)

一、字符串中每一個字符都有一個索引值(下標)

二、索引從0(前向後) 或者-1(後向前)開始

forward 0 1 2 3 4 5 6
  h e l l o w o
backward -7 -6 -5 -4 -3 -2 -1

 

 

 

三、索引的運算符[ ]

 name="hello world"

 name[0]    就是  h

name[-1]  就是 d

 這樣就得到了字符串中的一個字符    這裏的索引數字不能超出範圍  不然或報錯

  • 切片slicing

 一、經過切片能夠得到字符串的一段字符

二、語法爲

  [start : finish:countby]

start  表示從字符串索引的第幾個索引的後一個開始 

finish 表示 到第finish 這個索引的字母的前一個字母結束

使用若是不提供 start  就表示從頭開始

若是不提供 finish 表示一直到結尾

countby 是計數參數    這和range  中的步長是 一直的 

默認是 1   可是根據須要能夠改變   

start  和finish 都不寫 countby 寫-1 就能夠得到元字符串的一個逆序

 #Author:hoffman

str="alkjsdflkjaslkdf"
print(str[::-1])

 >>>fdklsajklfdsjkla

  •  字符串不可變 

字符串一旦生成是不能隨意的被改變的 

Python是動態編譯強定義類型 

列如  

name=「」Holle world」

name[2]='a'

想把索引爲2的字符換掉是不行的 

若是確實想換隻能這樣

name=name[:1]+'a'+name[2:]

使用切片和拼接 而且還要覆蓋元字符串

#Author:hoffman
str="alkjsdflkjaslkdf"
str=str[:1]+'a'+str[2:]
print(str)
>>>aakjsdflkjaslkdf

以上方法是比較繁瑣的
咱們可使用字符串方法
對象提供的函數
str.replace(old,new)
生成一個新的字符串,其中使用new子串 替換 old子串

例如:
#Author:hoffman
str="alkjsdflkjaslkdf"
str= str.replace('a','c')
print(str)

 >>>clkjsdflkjcslkdf

注意:調用replace()方法返回一個新的字符串,原來字符串是沒有改變的,要是想改變原來值 就把生成的字符串賦值給原來的變量

str.find('l') 

find 函數是查找一個字符串中的子串的下標

split

就是將一個字符串切分紅片  

  • 字符串的格式化輸出
#Author:hoffman
#一下代碼實現了原格式輸出
name=input("name:")
origin=input("make_address:")
age=int(input("age:"))
print(type(age))
salary=float(input("salary float:"))
gender=input("gender:")
#拼接輸出使用%s %d %f 分別表示字符串 數字 單精度數字
inof1 ="""
----------info of %s-----
name:%s
origin:%s
age:%d
salary:%f
gender:%s
""" %(name,name,origin,age,salary,gender)
print(inof1)
#使用 {} 和.format()
inof2="""
--------info of {_name}----
name:{_name}
origin:{_origin}
age:{_age}
salary:{_salary}
gender:{_gender}
""".format(_name=name,_origin=origin,_age=age,_salary=salary,_gender=gender)
#這裏面少了一個)_name
print(inof2)
#使用 {0} {1}表示佔位
inof3="""
--------info of {0}----
name:{1}
origin:{2}
age:{3}
salary:{4}
gender:{5}
""".format(name,name,origin,age,salary,gender)
print(inof3)

四、列表
建立列表:
1
2
3
name_list  =  [ 'alex' 'seven' 'eric' ]
name_list =  list ([ 'alex' 'seven' 'eric' ])

基本操做:

  • 索引
  • 切片
  • 追加
  • 刪除
  • 長度
  • 切片
  • 循環
  • 包含
五、元組(不可變列表)
建立元組:
1
2
3
ages = (1122334455)
ages = tuple((1122334455))
 
 
六、字典(無序)
建立字典:
1
2
3
person  =  { "name" "mr.wu" 'age' 18 }
person  =  dict ({ "name" "mr.wu" 'age' 18 })

經常使用操做:

  • 索引
  • 新增
  • 刪除
  • 鍵、值、鍵值對
  • 循環
  • 長度

七、正則表達式(regular Expressions)

 . 表示任意字符

[a-z] 表示一個小寫字母

\d+ 表示一系列數字

#Author:hoffman
#re 表示調 包 正則表達 regular expressions re是縮寫
#name.txt 文件每一行是一個字符串 姓名
#判斷一我的名中是否含有c.a 模式
import re
f =open('name.txt')#打開name這個文件 打開文件 有 可讀可寫 具體百度
pattern='(c.a)'
for line in f:#遍歷f這個文件 一行一行遍歷
name = line.strip()#去除一行中首位的空格
result = re.search(pattern,name)#search()函數判斷c.a 模式是否在 name中
if result:
print ('Find in {}'.format(name))
f.close()


Python strip()方法

Python 字符串 Python 字符串


描述

Python strip() 方法用於移除字符串頭尾指定的字符(默認爲空格)。

語法

strip()方法語法:

str.strip([chars]);

參數

  • chars -- 移除字符串頭尾指定的字符。

返回值

返回移除字符串頭尾指定的字符生成的新字符串。

實例

如下實例展現了strip()函數的使用方法:

實例(Python 2.0+)

#!/usr/bin/python # -*- coding: UTF-8 -*- str = "0000000 Runoob 0000000"; print str.strip( '0' ); # 去除首尾字符 0 str2 = " Runoob "; # 去除首尾空格 print str2.strip();

以上實例輸出結果以下:

     Runoob Runoob


12、數據運算

 

 

相關文章
相關標籤/搜索