python基礎之1-安裝

author:headsen chen  python

date :2018-03-22  17:16:14linux

notice :This article created by headsen chen and not allowd to copy.程序員

1,Python安裝shell

windows:下載python3.6_64位,雙擊,一路默認安裝就好了
1)、下載安裝包
https://www.python.org/downloads/
2)、安裝
默認安裝路徑:C:\python27
3)、配置環境變量
【右鍵計算機】--》【屬性】--》【高級系統設置】--》【高級】--》【環境變量】--》【在第二個內容框中找到 變量名爲Path 的一行,雙擊】 --> 【Python安裝目錄追加到變值值中,用 ; 分割】
如:原來的值;C:\python27,切記前面有分號vim

linux、Mac
無需安裝,原裝Python環境
  
2,Hello World程序
在linux 下建立一個文件叫hello.py,並輸入
print("Hello World!")windows

而後執行命令:python hello.py ,輸出
localhost:~ jieli$ echo "print('hello word')" >hello.py
localhost:~ jieli$ python hello.py
Hello World!python3.x

3,指定解釋器
上一步中執行 python hello.py 時,明確的指出 hello.py 腳本由 python 解釋器來執行。
若是想要相似於執行shell腳本同樣執行python腳本,例: ./hello.py ,那麼就須要在 hello.py 文件的頭部指定解釋器,以下:bash

localhost:~ jieli$ cat hello.py編輯器

#!/usr/bin/env python     ---------> 啓用默認的首選python版本,只要是可執行程序,就要告訴操做系統我用什麼解釋器來解釋該程序,如shell寫上:#!/bin/bash
print "hello,world"函數

localhost:~ jieli$ chmod 755 hello.py

如此一來,執行:

localhost:~ jieli$ /tmp/hello.py    (執行前需給予 hello.py 執行權限,chmod 755 hello.py!!!!)

補充:python的程序兩種寫法:
#!/usr/bin/env python ----> 到整個系統裏去找python的環境變量
#!/usr/bin/python ----> 這裏指定了只能到這個絕對路徑下的python,當你用源碼包安裝了python時,調用的python仍然是這個絕對路徑下的python。

實例

vim chinese.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
print "你好,世界"

chmod +x chinese.py

4,在交互器中執行(Windows上直接安裝python3.6,或者Linux上云溪python) 
除了把程序寫在文件裏,還能夠直接調用python自帶的交互器運行代碼, 
localhost:~ jieli$ python
Python 2.7.10 (default, Oct 23 2015, 18:05:06)
[GCC 4.2.1 Compatible Apple LLVM 7.0.0 (clang-700.0.59.5)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> print("Hello World!")
Hello World!

5,腳本開頭模板配置方法:
#!/usr/bin/env python   ------------------>  在Windows中不須要這一條。windows中的pycharm中不須要這一條
#_*_coding:utf-8_*_    ------------------>  使得該文件支持中文,不然中文顯示亂碼。補:python3.x默認支持utr-8,不加也能夠

# Descripe: xxx

# Author:chen

# Date: xxx

 

配置默認的模板:視圖--》工具欄(view ---> toolbar),點擊新生成的雙頭扳手的圖標,編輯器(editor)--->文件和代碼模板(file and code templates)-->pythor script,添加以上信息--->點擊應用,肯定。


6,pycharm安裝及使用方法:
Windows上安裝好以後:運行:先註冊,引用python3.6執行程序的絕對路徑,新建一個項目,新建一個目錄,新建一個python file。直接編輯,


7,變量(pycharm裏面演示) 
聲明變量
#!/usr/bin/env python ------------------>在Windows中不須要這一條。
#_*_coding:utf-8_*_
# Author:chen
name = "Abcd JCK"
print(「My name is 」,name)

上述代碼聲明瞭一個變量,變量名爲: name,變量name的值爲:"Abcd JCK" 
注意:代碼裏中間有個逗號,做用是將代碼和變量區分開,表明了兩個參數傳給了print,不然代碼錯誤,運行後則正常在一塊兒的。

變量定義的規則:
變量名只能是 字母、數字或下劃線的任意組合,不能有特殊字符。
變量名的第一個字符不能是數字,變量名中間不能有空格。
如下關鍵字不能聲明爲變量名 ['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']
實例:girl_of_oldboy

理解變量的賦值,變量是保存在內存中的。供後續的程序隨時調用
name = "Alex Li"
name2 = name
print(name,name2)
name = "Jack"
print(name,name2) ——————> Jack Alex Li

python裏的變量分兩種:常量和變量
常量:NAME = abc 大寫的變量名,表明這個變量不要改。
變量:name = abc,這個變量的值能夠隨便從新替換。


8,字符編碼
ython解釋器在加載 .py 文件中的代碼時,會對內容進行編碼(默認ascill)

ASCII(American Standard Code for Information Interchange,美國標準信息交換代碼)是基於拉丁字母的一套電腦編碼系統,主要用於顯示現代英語和其餘西歐語言,其最多隻能用 8 位來表示(一個字節),即:2**8 = 256-1,因此,ASCII碼最多隻能表示 255 個符號。

爲了處理漢字,程序員設計了用於簡體中文的GB2312和用於繁體中文的big5。
GB2312(1980年)一共收錄了7445個字符,包括6763個漢字和682個其它符號,GB2312 支持的漢字太少。
GBK1.0 ,1995年的漢字擴展規範,收錄了21886個符號,它分爲漢字區和圖形符號區。漢字區包括21003個字符。
GB18030,2000年的 是取代GBK1.0的正式國家標準。該標準收錄了27484個漢字,同時還收錄了藏文、蒙文、維吾爾文等主要的少數民族文字。如今的PC平臺必須支持GB18030,對嵌入式產品暫不做要求。因此手機、MP3通常只支持GB2312。

從ASCII、GB23十二、GBK 到GB18030,這些編碼方法是向下兼容的,即同一個字符在這些方案中老是有相同的編碼,後面的標準支持更多的字符。在這些編碼中,英文和中文能夠統一地處理。區分中文編碼的方法是高字節的最高位不爲0。按照程序員的稱呼,GB23十二、GBK到GB18030都屬於雙字節字符集 (DBCS)。

有的中文Windows的缺省內碼仍是GBK,能夠經過GB18030升級包升級到GB18030。不過GB18030相對GBK增長的字符,普通人是很難用到的,一般咱們仍是用GBK指代中文Windows內碼。


顯然ASCII碼沒法將世界上的各類文字和符號所有表示,因此,就須要新出一種能夠表明全部字符和符號的編碼,即:Unicode

Unicode(統一碼、萬國碼、單一碼)是一種在計算機上使用的字符編碼。Unicode 是爲了解決傳統的字符編碼方案的侷限而產生的,它爲每種語言中的每一個字符設定了統一而且惟一的二進制編碼,規定雖有的字符和符號最少由 16 位來表示(2個字節),即:2 **16 = 65536,
注:此處說的的是最少2個字節,可能更多

UTF-8,是對Unicode編碼的壓縮和優化,他再也不使用最少使用2個字節,而是將全部的字符和符號進行分類:ascii碼中的內容用1個字節保存、歐洲的字符用2個字節保存,東亞的字符用3個字節保存...

因此,python解釋器在加載 .py 文件中的代碼時,會對內容進行編碼(默認ascill),若是是以下代碼的話:

報錯:ascii碼沒法表示中文
#!/usr/bin/env python
print "你好,世界"

改正:應該顯示的告訴python解釋器,用utf-8來解釋源代碼,即:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
print "你好,世界"

注意:python3裏面默認就採用utf-8 的編碼解釋器,因此 # -*- coding: utf-8 -*- 能夠省略不寫。python2裏面必需加上才能支持中文。

 

9,python裏註釋的寫法:
單行註釋:# 被註釋內容
多行註釋:,,, 被註釋內容 ,,, (注意:雙引號也能夠。python中無區別,徹底同樣

,,,另一個做用:打印多行:
name = ,,,
abadf = asdfaf
sssssss
5555555555
,,,
print(name)  

 

10,用戶輸入:input函數,將輸入的數值賦予給變量。

例1:

#!/usr/bin/env python
#_*_coding:utf-8_*_

#name = raw_input("What is your name?") #only on python 2.x
name = input("What is your name?")
print("Hello " + name )

擴展:
#_*_coding:utf-8_*_
# Author:chen
name = input('What is your name?')
print('\033[031mHello\033[0m','\033[032mname\033[0m')

 

顏色的輸入方法:

紅色:\033[031m xxx \033[0m

綠色\033[032m xxx \033[0m

藍色:\033[033m xxx \033[0m

 

輸入密碼時,若是想要不可見,須要利用getpass 模塊中的 getpass方法,即:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import getpass

# 將用戶輸入的內容賦值給 name 變量
pwd = getpass.getpass("請輸入密碼:")

# 打印輸入的內容
print(pwd)


11,格式化輸出

例1:

name = input('name:' )
age = input('age:' )
job = input('job:' )
salary = input('salary:' )

info = '''
------ info of %s  ----   ------>s是string的簡寫,這裏的%s表示引用變量的佔位符,表示這個位置爲變量,該變量能夠是字符也能夠是數字,但數字也當成字符串的類型來處理,d爲純數字類型的。引入這個的做用就是判斷輸入的數據的類型。
name:%s
age:%s
job:%s
salary:%s
''' % (name,name,age,job,salary)    ------> 將佔位符與具體的變量對應上。這裏必需與站位符一一對應,不然報錯。
print(info)         -----------------> 注意。引用變量時不能加引號,加了引號就成了打印這個字符串了。

s:string 字符串
d:數字(整數)
f:浮點(小數)
引入這個的做用就是判斷輸入的數據的類型。

打印一個變量的數據類型:
age = input(age: )
print(type(age))

---->
age:22
<class 'str'> -------------類型:字符串
注意:python中默認全部的輸入(當你輸入數字123時),都當成了字符串類型的來處理:str

字符串類型轉換

強制將一個字符型轉成整數型:int函數來處理:integer:整形,整數形式
age = int(input(age: ))
print(type(age),type(str(age)))
------>
age:11
<class 'int'><class 'str'>

擴展:將一個整形的輸入再轉成字符串:
age = int(input('age:'))
print(age,type(age),type(str(age)))

例2:字符串變量裏的一種字符串引用方式:.format使用方法

name = input(name: )
age = input(age: )
job = input(job: )
salary = input(salary: )
info3 = '''
----------- info of {0}---------
Name:{0}
Age:{1}
Job:{2}
Salary:{3}
''' .format(name,age,job,salary)
print(nifo)


12,輸入密碼時,隱藏密碼,在pycharm裏很差使,在Python裏能夠用

12.1,明文輸入,例:
username = input('username:')
password = input('password:')
print(username,password)
執行後上面的password是明文的形式

12.2,getpass模塊使用

要想將密碼的明文改爲密文,要引用python自帶的一個標準庫裏的getpass模塊。在pycharm裏作實驗很差使,寫法以下:
該實驗在cmd裏的python中運行和在windows上安裝的python3.6上運行的效果同樣,均可以模擬一下的實驗效果,逐行敲一下命令就能夠了
import getpass
username = input("username: ")
password = getpass.getpass("password: ") -------------------getpass是一個模塊。模塊是一個已經封裝好的一堆功能得程序,導入以後就能夠直接用,不用從新寫了
print(username,password)

實演過程以下(直接在python軟件裏運行或者開始---cmd ---調用python命令行後運行):
Python 3.6.1 (v3.6.1:69c0db5, Mar 21 2017, 18:41:36) [MSC v.1900 64 bit (AMD64)]
on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import getpass
>>> username = input('username:')
username:jack
>>> password = getpass.getpass('password:')
password:
>>> print(username,password)
jack abc123
>>>

開始--->運行--->cmd--->
cd C:\Users\Administrator\AppData\Local\Programs\Python\Python3.6
python
... 下面的過程和上面的同樣

補:模塊又叫庫,分爲標準庫和第三方庫。
標準庫:不須要安裝,只要導入就能夠用的庫
第三方庫:


windows裏運行:在python裏運行:
python passwd.py
--->username:alex
--->password: -----------此時輸入的密碼就不顯示出來了
--->alex dfsfsglasjgjasl

驗證密碼

完整代碼:
#_*_coding:utf-8_*_
# Author:chen
_username = 'alex'
_password = 'abc123'
username = input('username:')
password = input('password:')
if _username == username and _password == password:
   print('Welcome user {name} login to here.'.format(name=username)) ------------》或者用這種 {0} .fromat{username}
else:
   print('Invalid username or password!')

分項解釋以下:
_username = 'alex' -------------- 若是寫成:_username = alex 此時後面的Alex表示一個變量,將Alex變量的值賦給_username這個變量
_password = 'abc123'
username = input('username:')
password = input('password:')

if _username == username and _password == password: -------------冒號:換行時下一行自動縮進。因此下行會自動有空格
print('Welcome user {name} login ...'.format(name=username)) -------->或者寫成:print(‘Welcome user {0} login...’.format(username))
else:
print('Invalid username or password!') ------------------ 能夠看作是else的子語句。

shell中不須要縮進。但要有fi來結束。for循環中須要done來結束。在Python中沒有這些結尾,Python有強制縮進,因此不須要這些結尾標識符
IndentationError:就是縮進的錯誤。Python語句中不能隨便的縮進。只能頂格寫,只能是該語句是上個語句的子語句時纔會自動的縮進。

 

13,if語句和while循環

猜一次就退出,無循環,判斷以後就退出了
age_of_oldboy = 56
guess_age = input('guess age:') ------改爲:guess_age = int(input('guess age:')) #若不改,會報錯,由於你輸入的字符串的類型,沒法和56進行比較大小

if guess_age == age_of_oldboy:
  print("yes,you got it.")
elif guess_age > age_of_oldboy:
  print(‘think smaller’)
else:
  print('think bigger!')

注意:Python3裏你輸入的不管是數字仍是字符串都當成字符串,而字符串是不能進行大小比較的

....................................................................................
count = 0
while True:
  print('count:',count)
  count = count +1 -----------> count +=1 也能夠, 此時,該循環會無限循環下去。
  if count == 1000: ------------> 當count達到1000時,跳出循環。
    break  -------> 跳出break的上層的循環,而不是上上層的循環

擴展實例:

for i in range(10):
print(i)
if i==3:
for j in range(10):
print(j)
if j==5:
break

效果以下:

0     ------------ i = 0 
1     ------------ i = 1
2     ------------ i = 2
3     ------------ i = 3
0     ------------ j = 0
1     ------------ j = 1
2     ------------ j = 2

3     ------------ j = 3
4     ------------ j = 4
5     ------------ j = 5  ,而後break生效,跳出當前層次for的循環
4     ------------ i = 4  繼續上一層的for循環。
5     ------------ i = 5
6     ------------ i = 6
7
8
9

 


..................................................................................
猜對時才退出:while True 就是死循環,一直循環下去
age_of_oldboy = 56
while True:
  guess_age = input('guess age:') ------改爲:guess_age = int(input('guess age:'))
  if guess_age == age_of_oldboy:
    print("yes,you got it.")
    break ------------------------------ 猜對了,就跳出循環。再也不進行該循環了。不加會一直執行下去。
  elif guess_age > age_of_oldboy:
    print(‘think smaller’)
  else:
    print('think bigger!')
..................................................................................
猜對和猜不對有三次時退出

age_of_oldboy = 56
count == 0
while True:
  if count ==3:
    break
  guess_age = input('guess age:') ------改爲:guess_age = int(input('guess age:'))
  if guess_age == age_of_oldboy:
    print("yes,you got it.")
    break ------------------------------ 猜對了,就跳出循環。再也不進行該循環了。不加會一直執行下去。
  elif guess_age > age_of_oldboy:
    print(‘think smaller’)
  else:
    print('think bigger!')
  count +=1
..........................................................................
上述代碼優化下:

age_of_oldboy = 56
count = 0
while count <3:
  guess_age = input('guess age:') ------改爲:guess_age = int(input('guess age:'))
  if guess_age == age_of_oldboy:
    print("yes,you got it.")
    break ------------------------------ 猜對了,就跳出循環。再也不進行該循環了。不加會一直執行下去。
  elif guess_age > age_of_oldboy:
    print(‘think smaller’)
  else:
    print('think bigger!')
  count +=1
.......................................................................................
三次猜錯加提示:
age_of_oldboy = 56
count = 0
while count <3:
  guess_age = int(input('guess age:'))
  if guess_age == age_of_oldboy:
    print("yes,you got it.")
    break ------------------------------ 猜對了,就跳出循環。再也不進行該循環了。不加會一直執行下去。
  elif guess_age > age_of_oldboy:
    print(‘think smaller’)
  else:
    print('think bigger!')
  count +=1

if count =3: ------------------------------------- 當三次都猜錯時,出一個提示。
print('you have tried too many times,fuck off.')

..........................................................................................
上述代碼優化以下:while ... else...結構使用
age_of_oldboy = 56
count = 0   ---------------------》 注意:這裏的不能用==,而只能用=,賦值的意思。
while count <3:   ---------------------》當是while True時,不走else下的代碼
  guess_age = int(input('guess age:'))
  if guess_age == age_of_oldboy:
    print("yes,you got it.")
    break
  elif guess_age > age_of_oldboy:
    print(‘think smaller’)
  else:
    print('think bigger!')
  count +=1

else:    ---------》當while的條件成立時,走上面的代碼,當while的代碼不成立時,走else下的代碼,當條件是while True時,不走else下的代碼
  print('you have tried too many times,fuck off.')

注意:shell中沒有這種語法。


14,for循環

for i in range(10): -------> i就是臨時變量,range(10) 就是循環了10次。賦值從0開始,到9結束。和shell中seq 10不一樣,從1開始到10結束
print('loop',i)

隔着數循環(從0開始,每次增長2,到10結束,不包括10):
for i in range(0,10,2):
  print('loop',i)
------ >
loop 0
loop 2
loop 4
loop 6
loop 8

for i in range(0,10,3): ---> 此時的循環就是:0, 3, 6,9

延伸:for ... else ... 結構(for下面循環走完,走else下面的代碼)
age_of_oldboy = 56
for i range(3): --------------------------------> 只循環三次
guess_age = int(input('guess age:'))
if guess_age == age_of_oldboy:
  print("yes,you got it.")
  break
elif guess_age > age_of_oldboy:
  print(‘think smaller’)
else:
  print('think bigger!')

else:     意思:當for循環裏的代碼正常走完了,就執行else下的代碼;不正常走完(break)時,就不走else代碼,原理和while...else...同樣的。
  print('you have tried too many times,fuck off.')


15,continue:跳出本次循環,繼續下次循環
break:結束本次循環,跳出整個循環

eg:

for i in range(10):
  if i <3:
    print("loop",i)
  else:
    continue
    print("hehe......")   注意:此時不打印下面的print內容,又跑到第一層去了。continue繼續執行下次循環,本次循環沒有執行完成的不執行了(continue後的不執行)

上例要想顯示出「hehe......」就得改爲:
for i in range(10):
  if i<3:
  print('loop',i)
else:
  print('hehe.....')
  continue   能夠省略掉,效果同樣的。由於實在for循環裏,自動循環,並且該循環有結束的控制條件:range(10)

相關文章
相關標籤/搜索