Python學習筆記系列之002:變量 註釋 輸入 輸出
導讀:
1.變量
2.字符編碼
3.註釋
4.輸出
5.輸入
6.縮進
7.報錯單詞釋義
8.代碼規範
基礎語法是任何語言的基礎,只有熟練掌握,才能靈活用語言,寫出高效、優美、簡潔的代碼。
Python的語法是非常靈活別具一格的。學習語言就要學習它的風格、特點,這才是語言的精粹。Python尤其如此。
一、變量
變量(Variables)是為了存儲程序運算過程中的一些中間結果,為了方便日後調用。
1.聲明變量
1 #_*_coding:utf-8_*_ 推薦這種
2 #coding=utf-8
3 name = "salmond"
2.變量的賦值
1 name = " salmond"
2 name2 = name
3 print(name,name2) #salmond salmond
4
5 name = "Jack"
6 print("name2") #salmond
3.標識符和關鍵字
標識符:開發人員在程序中自定義的一些符號和名稱。標識符是自己定義的,如變量名 、函數名等。
標識符由字母、下劃線和數字組成,且數字不能開頭。
標識符區分大小寫:Andy≠andy
關鍵字:python一些具有特殊功能的標識符,這就是所謂的關鍵字。關鍵字是python已經使用的了,所以不允許開發者自己定義和關鍵字相同的名字的標識符。
4.變量的命名規則
1)要具有描述性,見名知意;
2)變量名只能由下劃線、數字、字母組成,不可以是空格或特殊字符(#?<.,¥$*!~);
3)最好不要以中文或拼音為變量名;
4)不能以數字開頭;
5)駝峰命名;
小駝峰命名:myName
大駝峰命名:MyName
#還有一種 my_name,Python中常用。
6)保留字符(關鍵字)不能被使用。
可以通過以下命令查看當前系統中python的關鍵字:
>>> import keyword
>>> keyword.kwlist
[‘False‘, ‘None ‘, ‘True‘, ‘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‘]
思考題:下面的標識符哪些是正確的,哪些不正確為什麽?
fromNo12 from#12 my_Boolean my-Boolean Obj2 2ndObj myInt test1 Mike2jack My_tExt _test test!32 haha(da)tt int jack_rose jack&rose GUI G.U.I
5.常量
常量(constant) :不變的量 pie = 3.141592653....
在py裏面所有的變量都是可變的 ,所以用全部大寫的變量名來代表此變量為常量。
二、字符編碼
python2解釋器在加載 .py 文件中的代碼時,會對內容進行編碼(默認ASCII),如果是如下代碼的話:
報錯:ASCII碼無法表示中文
#!/usr/bin/env python
print "你好,世界"
改正:應該顯式的告訴python解釋器,用什麽編碼來執行源代碼,即:
#!/usr/bin/env python
# -*- coding: utf-8 -*- (或者:#coding:utf-8)
print "你好,世界"
Python2.x == ASCII默認編碼
#!-*- coding:utf-8 -*-
#coding:utf-8
Python3.x == Unicode默認編碼
Unicode 是向下兼GB2312 , GBK
擴展知識:
ASCII碼
ASCII(American Standard Code for Information Interchange,美國標準信息交換代碼)是基於拉丁字母的一套電腦編碼系統,主要用於顯示現代英語和其他西歐語言,其最多只能用 8 位來表示(一個字節),即:2**8 = 256-1,所以,ASCII碼最多只能表示 255 個符號。
關於中文
支持中文的第一張表就叫 GB2312。
1980 gb2312 6700+
1995 gbk1.0 20000
2000 gb18030 27000
big5 臺灣
為了處理漢字,程序員設計了用於簡體中文的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、GB2312、GBK 到GB18030,這些編碼方法是向下兼容的,即同一個字符在這些方案中總是有相同的編碼,後面的標準支持更多的字符。在這些編碼中,英文和中文可以統一地處理。區分中文編碼的方法是高字節的最高位不為0。按照程序員的稱呼,GB2312、GBK到GB18030都屬於雙字節字符集 (DBCS)。
有的中文Windows的缺省內碼還是GBK,可以通過GB18030升級包升級到GB18030。不過GB18030相對GBK增加的字符,普通人是很難用到的,通常我們還是用GBK指代中文Windows內碼。
Unicode
顯然ASCII碼無法將世界上的各種文字和符號全部表示,所以,就需要新出一種可以代表所有字符和符號的編碼,即:Unicode
Unicode(統一碼、萬國碼、單一碼)是一種在計算機上使用的字符編碼。Unicode 是為了解決傳統的字符編碼方案的局限而產生的,它為每種語言中的每個字符設定了統一並且唯一的二進制編碼,規定雖有的字符和符號最少由 16 位來表示(2個字節),即:2 **16 = 65536 = 存一個字符 統一占用2個字節
UTF-8
UTF-8,是對Unicode編碼的壓縮和優化,可變長的字符編碼集。不再使用最少使用2個字節,而是將所有的字符和符號進行分類:ascii碼中的內容用1個字節保存、歐洲的字符用2個字節保存,東亞的字符用3個字節保存...
ASCII -->GB2312 ->GBK1.0-->GB18030
ASCII -->Unicode -->UTF-8 /UTF-16
在計算機內存中,統一使用 Unicode 編碼,當需要保存到硬盤或者需要傳輸的時候,就轉換為 UTF-8 編碼。
三、註釋
單行註釋:
語法:
# 被註釋內容
為了保證代碼的可讀性,# 後面建議添加一個空格,然後再編寫相應的說明文字 。
在程序開發時,同樣可以使用 # 在代碼的後面(旁邊)增加說明性的文字。但是,需要註意的是,為了保證代碼的可讀性,註釋和代碼之間 至少要有 兩個空格。示例代碼如下:
print("hello python") # 輸出 `hello python`
多行註釋:
語法:
‘‘‘ 被註釋內容 ‘‘‘
""" 被註釋內容 """
四、輸出
1.普通的輸出
你可以給它傳遞零個或多個用逗號隔開的表達式:
print([object, ...][, sep=‘ ‘][, end=‘endline_character_here‘][, file=redirect_to_here])
方括號內是可選的,sep表示分割符,end表示結束符,file表示重定向文件。如果要給sep、end、file指定值必須使用關鍵字參數。
print(‘hello world‘)
print(‘hello‘, ‘world‘, sep=‘%‘) # 輸出hello%world
print(‘hello‘, ‘world‘, end=‘*‘) # 輸出hello world*, 並且不換行
2.格式化輸出
如果希望輸出文字信息的同時,一起輸出數據,就需要使用到 格式化操作符。
% 被稱為格式化操作符,專門用於處理字符串中的格式。包含 % 的字符串,被稱為格式化字符串。
% 和不同的 字符 連用,不同類型的數據 需要使用 不同的格式化字符。
語法格式如下:
print("格式化字符串" % 變量1)
print("格式化字符串" % (變量1, 變量2...))
2.1 格式化字符含義
%s 字符串
%d 有符號十進制整數
%06d 表示輸出的整數顯示位數,不足的地方使用 0 補全
f 浮點數
%.2f 表示小數點後只顯示兩位
%%輸出 %
2.2 格式化輸出案例
定義字符串變量 name,輸出 我的名字叫 小明,請多多關照!
定義整數變量 student_no,輸出 我的學號是000001 。
定義小數 price、weight、money,輸出 蘋果單價 9.00 元/斤,購買了 5.00 斤,需要支付 45.00 元。
定義一個小數 scale,輸出數據比例是10.00%。
print("我的名字叫 %s,請多多關照!" % name)
print("我的學號是 %06d" % student_no)
print("蘋果單價 %.02f 元/斤,購買 %.02f 斤,需要支付 %.02f 元" % (price, weight, money))
print("數據比例是 %.02f%%" % (scale * 100)
2.3 常見的格式符號
2.4 換行輸出
print("1234567890-------") # 會在一行顯示 print("1234567890\n-------") # 一行顯示1234567890,另外一行顯示-------
名片小案例:
print(‘==================================\n姓名: salmond\nQQ:xxxxxxx\n手機號:110xxxxxx\n公司地址:上海市xxxx\n==================================‘)
結果如下:
==================================
姓名: salmond
QQ:xxxxxxx
手機號:110xxxxxx
公司地址:上海市xxxx
==================================
五、輸入
1.Python2.x版本中
raw_input()
在Python2中,獲取鍵盤輸入的數據的方法是采用 raw_input 函數
password = raw_input("請輸入密碼:") print ‘您剛剛輸入的密碼是:‘, password
註意:
raw_input()的小括號中放入的是,提示信息,用來在獲取數據之前給用戶的一個簡單提示;
raw_input()在從鍵盤獲取了數據以後,會存放到等號右邊的變量中;
raw_input()會把用戶輸入的任何值都作為字符串來對待。
input()
input()函數與raw_input()類似,但其接受的輸入必須是表達式。
input()接受表達式輸入,並把表達式的結果賦值給等號左邊的變量。
>>> a = input() 123 >>> a 123 >>> type(a) <type ‘int‘> >>> a = input() abc Traceback (most recent call last): File "<stdin>", line 1, in <module> File "<string>", line 1, in <module> NameError: name ‘abc‘ is not defined >>> a = input() "abc" >>> a ‘abc‘ >>> type(a) <type ‘str‘> >>> a = input() 1+3 >>> a 4 >>> a = input() "abc"+"def" >>> a ‘abcdef‘ >>> value = 100 >>> a = input() value >>> a 100
2.python3.x版本中
沒有raw_input()函數,只有input()。
並且python3中的input與python2中的raw_input()功能一樣。
小括號中放入的是,提示信息,用來在獲取數據之前給用戶的一個簡單提示。
input()會把用戶輸入的任何值都作為字符串來對待
六、縮進
Python對縮進敏感。縮進級別必須保持一致 。
官方建議使用4個空格進行縮進。
因為使用原生Tab鍵在Linux系統中會出錯。
tab != 4個空格
縮進錯誤: IndentationError: expected an indented block IndentationError: unindent does not match any outer indentation level
七、報錯單詞釋義
每個程序員都會遇到程序報錯的情況,此時能夠讀懂報錯信息,便顯得尤為重要。所以,英語對程序員很重要啊!
以下是報錯信息中一些常見的單詞:
* error 錯誤 * name 名字 * defined 已經定義 * syntax 語法 * invalid 無效 * Indentation 索引 * unexpected 意外的,不期望的 * character 字符 * line 行 * encoding 編碼 * declared 聲明 * details 細節,詳細信息 * ASCII 一種字符編碼
八、代碼規範
Python語言的一大特點就是優雅,這要歸功於它有著很嚴格的代碼規範。
關於代碼規範,Python 官方提供有一系列 PEP(Python Enhancement Proposals) 文檔。其中第 8 篇文檔專門針對 Python 的代碼格式 給出了建議,也就是俗稱的 PEP 8。谷歌有對應的中文文檔。
九、小案例與練習題
1.小案例:死亡倒計時
death_age = 80 name = input("your name:") age = input("your age:") #input 接收的所有數據都是字符串,即便你輸入的是數字,但依然會被當成字符串來處理 print( type(age) ) #結果為:<class ‘str‘> #int integer =整數 把字符串轉成int,用int(被轉的數據) #str string =字符串 把數據轉成字符串用str(被轉的數據) print("Your name:",name) #print("You can still live for ", death_age - int(age)," years ....") print("You can still live for " + str(death_age - int(age)) +" years ....")
2.練習題
以後每篇教程的最後都會加入一些練習題,進行鞏固。練習題的答案會在下一篇教程中給出。
練習題1:編寫程序,從鍵盤獲取用戶名和密碼,然後判斷,如果正確就輸出以下信息
親愛的xxx,歡迎登陸 愛學習管理系統
練習題2:從鍵盤獲取一個人的信息,然後按照下面格式化輸出顯示
==================================
姓名: salmond
QQ:xxxxxxx
手機號:110xxxxxx
公司地址:上海市xxxx
==================================
練習題3:編寫程序,完成以下要求:
提示用戶進行輸入數據;
獲取用戶的數據數據(需要獲取2個);
對獲取的兩個數字進行求和運行,並輸出相應的結果。
提示:int()可將字符串轉換成數字
Python學習筆記系列之002:變量 註釋 輸入 輸出