冰凍三尺非一日之寒--python入門

第一章java

1.python簡介python

2.python安裝、配置程序員

3.HelloWorld儀式感爆棚編程

4.python解釋器安全

5.字符編碼和解碼app

6.變量ide

7.判斷之if....else...性能

8.Python循環之for、while循環優化

python簡介ui

     1989年,世界上的兩件大事,python誕生了,我也來到這個世界上,Guido創造了python,.....2005年,Guido加入了Google,python在google內部獲得了普遍的應用,這些年推出了N個版本,2009年,Alex接觸到了python(或者更早),這個世界上就醞釀着一個大師級別的人物,Alex...,到2015年,最流行的工業版本是2.7,python爲何這麼火?它爲何就這麼火?

    1.python語言優雅、易讀

    2.可移植性強

    3.可擴展性

    4.開發效率高

    5.可嵌入的高級語言

它畢竟就是一盤大蘿蔔.....

   1.代碼不能加密

   2.線程不能利用多cpu

   3.運行速度慢

♣python安裝、配置

 python安裝不細說,網上有不一樣的版本,安裝較簡單。

 python須要配置環境變量,把python的安裝目錄放到環境變量的Path變量裏便可Path=...;D:\Python27;-Soeasy

♣HelloWorld儀式感爆棚

print("Hello World")

 

♣python解釋器

python解釋器包括CPython、IPython、PYPY.....,它們是幹什麼的呢?咱們在寫python腳本時,保存的是之後綴.py結尾的文本文件,想要它運行,就必須依靠python解釋器來解釋,python是邊解釋邊執行的語言,因此相對於其餘編譯型語言較慢,並不是絕對....

♣字符編碼

電腦的起源,剛開始只是和電路同樣只有斷開和接通,即只能是簡單的識別0和1,0和1,不一樣的交叉組合,能夠代替大量的數字,僅僅能表達數字並不是計算機的目的,爲了支持字母,程序員設計出了一套用數字替代字母或符號的對照表,稱之爲ASCII碼:

     最多隻能用 8 位來表示(一個字節),即:2**8 = 256-1,因此,ASCII碼最多隻能表示 255 個符號,1-127被字母佔用,其餘位能夠代替中文,還有其餘語言也佔用。

     爲了支持中文,因而程序員又發明了一個碼錶:GB2312,支持了大量的中文,可是仍是不能表示一些信息,後來又有了GBK支持了圖形符號,2000年,gb18030誕生了,支持了其餘少數民族文字藏文、蒙文,維吾爾文字等

     各國之間都有本身的編碼規則,這樣不便於操做和管理,爲了統一,美國製定了一套大多數國家語言支持的完整的統一的字符編碼:Unicode,規定了每一個字符有16位來表示,即2個字節,可是仍是有必定的侷限性。UTF-8,是對Unicode編碼的壓縮和優化,他再也不使用最少使用2個字節,而是將全部的字符和符號進行分類:ascii碼中的內容用1個字節保存、歐洲的字符用2個字節保存,東亞的字符用3個字節保存...

如下代碼報錯,(默認ASCII不支持中文)

1 #!/user/bin/env python
2 
3 print("你們一塊兒來happy!")

看看這個:

1 #! /user/bin/env python
2 #_-_coding:UTF-8_-_   #設置了字符編碼
3 print("你們一塊兒來happy!")

♣變量

變量就至關於生活中的菜籃子,可是每一個籃子中存放的是一種菜,計算機中,變量是存儲數據的量,以便於數據的使用、操做,python中在使用變量時,沒必要先聲明類型,能夠直接存放數據,這就是動態語言,態類型語言是指在運行期間纔去作數據類型檢查的語言

舉例:

python: name="Bernie"

java: string name= "Bernie"

python是強制類型語言,意思是,一旦被指定了一種數據類型,不通過強制轉換,它永遠就是這個數據類型了。下面引用定義:

動態語言和靜態語言
一般咱們所說的動態語言、靜態語言是指動態類型語言和靜態類型語言。

(1)動態類型語言:動態類型語言是指在運行期間纔去作數據類型檢查的語言,也就是說,在用動態類型的語言編程時,永遠 也不用給任何變量指定數據類型,該語言會在你第一次賦值給變量時,在內部將數據類型記錄下來。Python和Ruby就是一種典型的動態類型語言,其餘的 各類腳本語言如VBScript也多少屬於動態類型語言。

(2)靜態類型語言:靜態類型語言與動態類型語言恰好相反,它的數據類型是在編譯其間檢查的,也就是說在寫程序時要聲明全部變量的數據類型,C/C++是靜態類型語言的典型表明,其餘的靜態類型語言還有C#、JAVA等。

 

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

(1)強類型定義語言:強制數據類型定義的語言。也就是說,一旦一個變量被指定了某個數據類型,若是不通過強制轉換,那麼它就永遠是這個數據類型了。舉個例子:若是你定義了一個整型變量a,那麼程序根本不可能將a看成字符串類型處理。強類型定義語言是類型安全的語言。

(2)弱類型定義語言:數據類型能夠被忽略的語言。它與強類型定義語言相反, 一個變量能夠賦不一樣數據類型的值。

強類型定義語言在速度上可能略遜色於弱類型定義語言,可是強類型定義語言帶來的嚴謹性可以有效的避免許多錯誤。另外,「這門語言是否是動態語言」與「這門語言是否類型安全」之間是徹底沒有聯繫的!
例如:Python是動態語言,是強類型定義語言(類型安全的語言); VBScript是動態語言,是弱類型定義語言(類型不安全的語言); JAVA是靜態語言,是強類型定義語言(類型安全的語言)。

 ♣if...else:判斷,直接上代碼

 1 # Author:chen
 2 #_-_coding:UTF-8_-_
 3 name="chen"
 4 age="19"
 5 job="IT"
 6 
 7 name=input("my name=")#python3X版本,在2X版本中用raw_input(),而2x版本中的input(),須要先定義變量,否自報錯
 8 age=input("my age=")
 9 job=input("my job=")
10 msg='''==============info of {iname}===================
11 name={iname}
12 age={iage}
13 job={ijob}
14 '''.format(iname=name,iage=age,ijob=job)#多行註釋+格式化輸出
15 print(msg)
16 
17 msg2='''+++++++++++++++++info of %s++++++++++++++++++++
18 name=%s
19 age=%s
20 job=%s
21 ''' % (name,name,age,job)
22 print(msg2)
23 msg3='''****************info of {0}********************
24 name={0}
25 age={1}
26 job ={2}
27 '''.format(name,age,job)
28 print(msg3)
29 #多行註釋能夠是」「....」「」或‘’‘........’‘’
30 #經常使用的格式化輸出的三種方式~
View Code

 ♣for、while循環經典案例

 1 # Author:chen
 2 #_-_coding:utf-8_-_
 3 myname="chenxuetao"
 4 myage="15"
 5 
 6 count=0
 7 while count<3 :      #注意True首字母要大寫,不知道爲何?
 8     age = input("age=")
 9     if myage>age :
10         print("你猜的年齡小了")
11     elif myage<age :
12         print("你猜的年紀大了")
13     else :
14         print("你猜對了")
15         break
16     count+=1
View Code
 1 # Author:chen
 2 # #_-_codingutf-8_-_
 3 myname="chenxuetao"
 4 myage=15
 5 count=0
 6 while count<3 :      #注意True首字母要大寫,不知道爲何?
 7     age = int(input("age="))
 8     if myage>age :
 9         print("你猜的年齡小了")
10     elif myage<age :
11         print("你猜的年紀大了")
12     else :
13         print("你猜對了")
14         break
15     count+=1
16     if count == 3:
17         guess=input("你還想繼續猜想麼?")
18         if guess !="n" :
19             count=0
View Code
 1 # Author:chen
 2 # #_-_coding:utf-8_-_
 3 myname="chenxuetao"
 4 myage=15
 5 count=0
 6 for i in range (1,3):      #注意True首字母要大寫,不知道爲何?
 7     age = int(input("age="))
 8     if myage>age :
 9         print("你猜的年齡小了")
10     elif myage<age :
11         print("你猜的年紀大了")
12     else :
13         print("你猜對了")
14         break
View Code

  --while循環時,循環條件要知足才進行循環,當不知足條件時,退出循環,執行下邊的代碼。

  格式是:while  True : #True首字母要大寫

  --for循環,一樣的在循環條件知足時執行循環體,for i in range(1,10) :

  --當循環條件不知足時,循環跳出

  --break,跳出當前執行的語句,能夠結束循環,跳出循環,continue,當條件不知足,結束本次循環,執行下一次循環

♣簡單的登陸接口實現(優化中...)

文件:

zhao 111
qian 111
sun 111
li 111
zhou 222
wu 222
zheng 222
wang 222
acount.txt
zhao
zhou
wu
lock.txt
 1  1 #! /user/bin/evn python
 2  2 #_-_coding: utf-8_-_
 3  3 import  os,getpass,sys
 4  4 
 5  5 lock_add=0 #記錄密碼輸入次數
 6  6 acount_lock=0 #
 7  7 
 8  8 lock_file='lock.txt'
 9  9 acount_file='acount.txt'
10 10 while acount_lock<3 :
11 11     username=input("用戶名:").strip()                  #接收用戶輸入,去掉輸入空格
12 12     lock_add+=1
13 13     lock_check=open(lock_file)
14 14     for line in lock_check.readlines() :
15 15         if username ==line.strip() :
16 16             print("您的用戶被鎖定,請聯繫管理員")
17 17             sys.exit()
18 18     password=input("密碼:").strip()
19 19     flag=False
20 20     acount=open(acount_file)
21 21     for line in acount.readlines() :
22 22         name,passwd=line.strip("\n").split()
23 23         if name==username and passwd==password :
24 24             print("歡迎 %s 登錄成功" % name)
25 25             flag=True
26 26             sys.exit()
27 27     acount_lock+=1
28 28     if acount_lock==3 :
29 29         print("您的用戶被鎖定,請聯繫管理員")
30 30         rm=open(lock_file,'a')
31 31         rm.write(username)
32 32         rm.write("\n")
33 33         rm.close()
View Code

 Version2.0

 1 #! /user/bin/env python
 2 #_-_coding:UTF-8_-_
 3 #Author:Bernie Chen
 4 import os,sys,getpass
 5 user_file='acount.txt'
 6 lock_file='lock.txt'
 7 try_time=0
 8 try_limite=3
 9 count=0
10 flag=False
11 while try_time<try_limite:
12     Username=raw_input("帳戶:")                 # 用戶輸入登陸帳號
13     Password=raw_input("密碼:")                 # 用戶輸入登陸密碼
14     Name=open(user_file)                          # 經過參數調用打開正經常使用戶文件
15     Lock=open(lock_file)                          # 經過參數調用打開鎖定用戶文件
16     for lock in Lock.readlines():                # 循環鎖定用戶文件。readlines()是一次性讀取全部行
17         usename=lock.strip("\n")                 # 去掉多餘的換行,精確取出用戶名
18         if usename==Username :
19             print("您的用戶被鎖定")
20             try_time += 100                       #此處是隨意加了個值,若是知足則跳出循環
21             break
22             sys.exit(0)
23     if try_time<50:
24         for name in Name.readlines() :                  #循環鎖定用戶文件。readlines()是一次性讀取全部行,別用成readline()
25             username,password=name.strip('\n').split()  #將用戶名和密碼分別賦值,split()是分割,此處是以空格分割,去掉多餘換行
26             if username==Username and Password==password :
27                 print("用戶登錄成功")
28                 try_time += 100
29                 flag=True
30                 break
31                 sys.exit(0)
32             elif username!=Username:
33                 count+=1                                    #每當用戶名取不到相同,count就增長
34                 #print(count)
35         if count == len(open(user_file,'rU').readlines()): #判斷conut的值是否和文件的行數相同,若是相同,說明該用戶未註冊
36             print("您的帳戶未註冊,請註冊後登陸")
37             sys.exit(1)
38         if flag==False:
39             print("用戶名或密碼錯誤,您還有%d次機會" % int(2-try_time))
40             try_time+=1
41 if try_time==3:
42     print("用戶已被鎖定")
43     locker=open(lock_file,"a")
44     locker.write(Username)
45     locker.write("\n")
46     locker.close()
View Code
相關文章
相關標籤/搜索