Python3.5學習之旅——day1

本節內容:

一、Python介紹python

二、Hello World程序   程序員

三、變量\字符編碼算法

四、用戶輸入運維

五、if-else語句socket

六、循環語句工具

 

1、Python介紹

Python是一種動態解釋性的強類型定義語言,主要應用在雲計算,WEB開發,科學運算、人工智能,系統運維和金融等領域。oop

一、Python的優缺點開發工具

優勢:優化

  • 簡單,易懂。
  • 開發效率高,Python具備很是強大的第三方庫。
  • 高級語言。
  • 可移植性——開源本質。
  • 可擴展性——能夠把一段關鍵代碼運行地更快或但願某些算法不公開,可把部分程序用C或C++編寫,而後在Python程序中使用。
  • 可嵌入性。

缺點:this

  • 速度相對較慢。
  • 代碼不能加密。若是項目要求源代碼必須是加密的,則不能使用Python。
  • 線程不能利用多CPU問題。

二、Python解釋器

當咱們編寫Python代碼時,咱們獲得的是一個包含python代碼的以.py爲擴展名的文本文件,要運行代碼,就要靠Python解釋器來執行.py文件。

如下爲幾種經常使用的Python解釋器。

  • CPython——使用最廣的Python解釋器

  • IPython

  • PyPy

  • Jython

  • IronPython

三、Python 2 與 3的區別

In summary : Python 2.x is legacy, Python 3.x is the present and future of the language

Python 3.0 was released in 2008. The final 2.x version 2.7 release came out in mid-2010, with a statement of extended support for this end-of-life release. The 2.x branch will see no new major releases after that. 3.x is under active development and has already seen over five years of stable releases, including version 3.3 in 2012, 3.4 in 2014, and 3.5 in 2015. This means that all recent standard library improvements, for example, are only available by default in Python 3.x.

具體而言,Python 3 相較 2 的優點體如今 3 支持 Unicode support,也就是說,在Python 3 中沒必要再爲繁雜的字符編碼而煩惱,例如 3 能夠直接寫中文!

還有一個不一樣之處就是某些庫在 3 中有了變化,具體以下:

old new
_winreg winreg
             ConfigParser configparser
copy_reg copyreg
Queue queue
SocketServer socketserver
markupbase _markupbase
repr reprlib
test.test_support test.support

2、Hello World程序   

下面演示用Python編寫helloworld程序,這裏我使用的開發工具是pycharm。   

1 __author__ = 'Sunny Han'
2 print("Hello World!")

因而可知Python的簡潔明瞭。

 

3、變量\字符編碼 

一、變量——爲了存放東西以便以後的調用

eg: 

name="han shuo"

 

這裏的name爲變量名,han shuo爲變量name的值。

變量定義應遵循必定的規則;

  • 變量名只能是字母、下劃線或數字的任意組合。
  • 變量的第一個字符不能是數字。
  • 關鍵字不能充當變量名:'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'.
  • 定義變量名必定要有必定的含義,儘可能不要胡編亂造,好比說這裏咱們想定義一個變量來表明Jake的年齡,咱們寫變量名「age_of_Jake」要好過變量名「ageofjake」。

變量的賦值:

eg:

1 name="han shuo"
2 print("my name is",name)
3 name2=name
4 print(name2)
5 name="kobe"
6 print(name,name2)

如下爲執行後的結果:

my name is han shuo

han shuo
kobe han shuo

 爲何name值改爲kobe後name2沒有變化呢?這是由於name2指向的是以前name的值「han shuo」,而不是name自身,故name值變化後,name2並不會發生相應的變化。

 注:python中沒有常量的概念,若想表示常量,要將變量名所有大寫。

        eg:PIE=3.14159

二、字符編碼

 python解釋器在加載 .py 文件中的代碼時,會對內容進行編碼(默認ascill)。ASCII主要用於顯示現代英語和其餘西歐語言,其最多隻能用 8 位來表示(一個字節),即:2**8 = 256-1,因此,ASCII碼最多隻能表示 255 個符號。爲了顯示中文,程序員設計了用於簡體中文的GB2312和用於繁體中文的big5。

GB2312(1980年)一共收錄了7445個字符,包括6763個漢字和682個其它符號。漢字區的內碼範圍高字節從B0-F7,低字節從A1-FE,佔用的碼位是72*94=6768。其中有5個空位是D7FA-D7FE。

GB2312 支持的漢字太少。1995年的漢字擴展規範GBK1.0收錄了21886個符號,它分爲漢字區和圖形符號區。漢字區包括21003個字符。2000年的 GB18030是取代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)。

eg:若是是輸入如下代碼的話,會報錯,由於默認的ASCII沒法表示中文。

__author__ = 'Sunny Han'
name="你好,世界!"
print(name)

 

 因此此處要告訴Python解釋器要用什麼編碼來執行源代碼。以下:
# -*- coding: utf-8 -*-
__author__ = 'Sunny Han'
name="你好,世界!"
print(name)

 這樣就能顯示出結果了。

註釋:

        當行注視:# 被註釋內容

  多行註釋:""" 被註釋內容 """  (三引號)

 4、用戶輸入

 一、簡單輸入方法:

 
__author__ = 'Sunny Han'
username=input("username:")
password=input("password:")
print(username,password)

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

__author__ = 'Sunny Han'
import getpass
username=input("username:")
password=getpass.getpass("password:")

print(username,password)

 

 二、相對複雜一些的輸入輸出過程
 eg1:
__author__ = 'Sunny Han'
name=input("name:")
age=input("age:")
job=input("job:")
salary=input("salary:")
info='''
 ----------------info of %s-----------
 name:%s
 age:%s
 job:%s
 salary:%s
 '''%(name,name,age,job,salary)
print(info)

 注意這裏的age變量默認類型爲字符串,假如將 age:%s改成age:%d(即整數類型),以前的age=input("age:")也應改成age=int(input("age:")),即將age變量強制轉爲整型變量。

具體以下:

name=input("name:")
age=int(input("age:"))
job=input("job:")
salary=input("salary:")
info='''
 ----------------info of %s-----------
 name:%s
 age:%d
 job:%s
 salary:%s
 '''%(name,name,age,job,salary)
print(info)

 

 接下來以一樣的例子介紹另外一種用戶輸入的方法,以下:
eg2:
name=input("name:")
age=input("age:")
job=input("job:")
salary=input("salary:")


info='''
-----------info of {_name}-----------
Name:{_name}
Age:{_age}
Job:{_job}
Salary:{_salary}
'''.format(_name=name,
       _age=age,_job=job,
       _salary=salary)
print(info)

 eg3:

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

 

上例和eg1的執行結果是同樣的。

5、if-else語句

 如下舉兩個例子來講明if-else語句的用法 
一、如何實驗判斷用戶名和密碼的正確與否,代碼以下:
 
__author__ = 'Sunny Han'
_username="han"
_password="123456"

username=input("username:")
password=input("password:")
if username==_username and password==_password:               #and是「並」的意思,意思是當先後兩個條件都成立的時候才成立
    print("Welcom user {name} login...".format(name=username))#在這裏換行時會自動縮進,若是手動改爲頂格,會報錯「IndentationError"縮進錯誤
else:                                                         #全部代碼若是本身的級別就是最高的,好比這裏的else,那麼就應該頂格寫 print("invalid username or password!")                   

 

 二、如何判斷某人年齡代碼以下:

__author__ = 'Sunny Han'
age_of_jake=56

guess_age=int(input("guess_age:"))#這裏默認輸入的類型爲字符型變量,故要強制轉換字符類型,將其變成整型變量
if guess_age<age_of_jake:
    print("think bigger!")
elif guess_age==age_of_jake:#這裏的elif至關於C語言中的elseif
    print("yes,you got it.")
else:                          #尤爲要記住在編寫代碼時,要在全部的if else elif 語句後面加上冒號:
    print("think smaller...")

 

6、循環語句 

 一、while循環語句

(1)先簡單舉一個while語句的例子,以下:

__author__ = 'Sunny Han'
count=0
while True:
    print("count:",count)
    count +=1
    if count==5:
        break

 代碼運行結果以下:

咱們能夠看到上述代碼實現了依次輸出0到5的功能。

 

 (2)在以前猜年齡代碼的基礎上再加一個輸入次數的限制,並用while語句實現,以下:
__author__ = 'Sunny Han'
age_of_jake=56
count=0    #計數器
while count<3:
    guess_age=int(input("guess_age:"))
    if guess_age<age_of_jake:
        print("think bigger!")
    elif guess_age==age_of_jake:
        print("yes,you got it.")
        break           #這裏的break是結束循環,也就是說即使是沒有輸入夠三次,也會結束循環,不會執行最後一個else語句
    else:
        print("think smaller...")
    count +=1        #至關於count=count+1

else:
    print("you have tried too many times! ")

 這裏實現了只容許輸入三次的限制,這裏要注意break的用法和意義。

 若是說在以上基礎上在加入一個環節——是否想繼續猜年齡,咱們能夠進一步優化代碼以下:
 
__author__ = 'Sunny Han'
age_of_oldboy=56
count=0
while count<3:
    guess_age=int(input("guess_age:"))
    if guess_age<age_of_oldboy:
        print("think bigger!")
    elif guess_age==age_of_oldboy:
        print("yes,you got it.")
        break
    else:
        print("think smaller...")
    count +=1
    if count==3:
        continue_confirm=input("do you want to keep guessing?")
        if continue_confirm!="n":
            count=0             #這裏的令count從新等於0,就是說讓代碼從新回到其實部分(從新猜) else:
            break

 二、for循環語句

 (1)簡單示例以下:
__author__ = 'Sunny Han'
for i in range(0,10,2): #這裏的0表明起始點,10表明終止點,2表明步長(步長默認爲1)
    print("loop",i)     #循環輸出0,2,4,6,8

 (2)接下來咱們舉一個嵌套循環的例子,以下:

 
__author__ = 'Sunny Han'
for i in range(0,10): 
    print("---------",i)
    for j in range(5):        #這裏和if else同樣,必定記得在for語句後加冒號:
        print(j)

 上述代碼實現了每輸出一個i,都會輸出5個j。

 三、continue語句

 這裏咱們利用一個簡單的for語句,來練習使用continue語句。代碼以下:
 
__author__ = 'Sunny Han'
for i in range(0,10):
   if i<5:
     print("loop",i)        #在這裏若是i<5,會直接輸出i
   else:
      continue              #相應的,當i增長到大於5的話,會執行continue語句,也就是會結束本次循環,而不是所有終止循環
   print("hehe..")

 對上述代碼進行調試後發現,即使當i>5時,代碼仍會繼續進行循環,i=6,7,8,9,10直到走徹底部循環。

 但若將這裏的continue改成break,從調試結果中咱們就很明顯能看到當執行到i大於等於5時,就直接跳出整個循環了,而continue只是跳出本次循環,這就是continue語句和break語句的不一樣之處。
相關文章
相關標籤/搜索