
基礎語法、變數、基礎資料型別、運算子、輸入輸出
- 基礎語法、變數、基礎資料型別、運算子、輸入輸出
- 第一章 Python基礎語法
- 1.1 縮進
- 1.2 注釋
- 1.3 識別符號
- 第二章 變數
- 2.1 變數的定義
- 2.2 變數的賦值程序
- 2.3 Python獨特的賦值方式
- 2.4 變數的地址
- 2.5 小結
- 第三章 基礎資料型別
- 3.1 整數型
- 3.2 浮點型
- 3.3 布爾型
- 3.4 字串型
- 第四章 運算子
- 4.1 算術運算子
- 4.2 比較運算子
- 4.3 賦值運算子
- 4.4 邏輯運算子
- 4.5 運算子的優先級
- 第五章 輸入與輸出
- 5.1 input輸入函式
- 5.2 print輸出函式
- 5.3 小結
基礎語法、變數、基礎資料型別、運算子、輸入輸出
以下我們進入 Python核心編程 的內容,本次主要講解關于縮進、識別符號、運算式、輸入輸出、整數型、浮點型、字串型相關的內容,
第一章 Python基礎語法
1.1 縮進
縮進的作用是使得程式的結構更加清晰,代碼的可讀性更好,按照Python的語法規則,層級相同的代碼模塊應該使用相同的縮進,也就是說,我們應盡量將按順序執行、層級相同的代碼寫在同一個縮進的模塊中,在同一層級的代碼,只有先后之分,沒有主從之分;而不同層級的代碼則有主從之分,
Python語言默認的縮進單位為4個空格的位置,
代碼縮進一般用于函式定義、類定義、分支結構以及回圈結構的代碼段中,
下面這段代碼展示了Python語言中的縮進規則,其中,if…else…中,if 和 else 屬于相同的代碼模塊:
age = 18
if age >= 18:
print("Hello,my friends!")
else:
print("Hello,kids!")
如果你不能很好把握代碼之間應該如何縮進,記住一條"潛規則":在行尾":"之后的代碼,往往是需要縮進的,
在IDLE、Pycharm等編輯器中,可以通過設定來控制每次縮進的空格數,如果設定為"4",這樣我們就能使用制表符"Tab"鍵來快速地使用縮進來調整代碼的位置了,在大多數Python的編程環境中,系統會自動將"Tab"制表符轉化為4個空格的位置,使用制表符"Tab"的前提是確保使用一致數量的縮進空格,否則會引起系統錯誤,
縮進的小結:
- 順序執行的普通代碼,從最左端頂格開始撰寫,不需要縮進;
- 一些以關鍵字開頭,冒號結尾的代碼段,往往下一行都要縮進;
- 如果當前代碼塊的功能執行完畢,需要退回縮進;
- 如果代碼需要分為幾個不同層級的模塊來執行,那么每個代碼模塊需要對應不同的縮進,
1.2 注釋
Python中常用的注釋方式分為單行注釋、多行注釋,注釋是在代碼之外的具有幫助性、說明性的檔案,程式在執行程序中,并不會執行注釋中的內容,注釋的快捷鍵是"CTRL+/",
單行注釋:以"#“開頭,可以寫在每一行的開頭,也可以寫在代碼之后,
多行注釋:以三對單引號 ‘’’…’’’ ,或者三對雙引號 “””…""",其中包裹住要注釋的檔案,一般不放在代碼后,
在程式中加入注釋,不但可以幫助讀者理解代碼的功能和作用,以及在一些排錯的程序中,可以先注釋掉一些代碼,觀察代碼對程式運行的影響,所以說,注釋對于程式的撰寫者和閱讀者來說,都是非常重要的,初學者要養成寫注釋的好習慣,在下面這段檔案中,我們使用多行注釋和單行注釋來幫助讀者理解代碼將要執行的功能,
# 設定一個變數用來保存物件的年齡
age = 18
"""
以下這段代碼的作用是對年齡進行判斷,
如果年齡大于等于18歲,列印'你好,我的朋友!';
如果年齡小于18歲,列印'你好,我的孩子!';
"""
if age >= 18:
print("Hello,my friends!") #如果年齡大于等于18歲,列印'Hello,my friends!'
else:
print("Hello,my kids!") #如果年齡小于18歲,列印'Hello,my kids!'
1.3 識別符號
通俗意義上來說,識別符號就是程式員給變數、函式、類等取的名字,但是,Python對于識別符號的規定較為嚴格,所以說,名字也是不能亂取的,必須要遵循以下幾點原則:
- 區分大小寫;
Python是大小寫敏感的,也就是說,同樣的單詞,但是因為大小寫的不同,在Python編程環境中,會認為是不同的兩個物件,這與其他某些編程語言是不同的,
>>> age = 18 #age是一個變數,給其賦值18
>>> age #系統能正常地訪問age的值
18
>>> Age #但是系統不能訪問Age的物件內容,系統會報"型別錯誤"
Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
Age #但是系統不能訪問Age的物件內容,系統會報"型別錯誤"
NameError: name 'Age' is not defined
在上面這段代碼中,因為正常地將18這個整數型的數值賦給了age,所以系統在訪問age時是正常顯示的;但是,Age與age并不是相同的變數,且沒有對Age進行任何的賦值操作,所以會導致系統報錯,
-
較好的可讀性;
對一個變數、函式或者類來說,我們應盡可能使用英文單詞使得其具有可讀性,使得讀者能夠從字面就能理解該變數、函式或者類所代表的含義,而盡量不要去使用諸如"abc",“a1”,“x2"這樣意義模糊的變數,
推薦的變數名:’'name”,“age”,“numbers”
推薦的函式名:“isOdd”,“count_even_number”
推薦的類名:“Car”,“Student” -
符合命名規定;
識別符號的第一個字符必須是大小寫字母或者下劃線,不能是數字或者其他符號,如"$Age"、“1Age”、"&Age"這些都是不合法的識別符號,
識別符號的其他的部分由字母、數字和下劃線組成,像"_age"、“age1”、"students_age"這樣則是合法的識別符號, -
通用的命名方法;
下劃線(蛇形)命名法:英文單詞全部小寫,中間以下劃線"_"連接,常用于函式、方法的命名,
如 draw_images, get_text等
小駝峰命名法:除首字母小寫外,其余單詞的首字母均大寫,常用于變數的命名,
如:pinkPencil, studentClass
大駝峰命名法:所有單詞的首字母均大寫,常用于類名的命名,
如: HtmlText, ConferenceContent等 -
不以關鍵字命名,
在Python系統中,預先定義了一些常用的字符作為關鍵字(或稱為保留字),這些字符在程式運行中起到關鍵的語法作用,因而最好不要用來給函式、變數、類進行命名,否則會覆寫其原來的含義,造成程式的混亂,
關鍵字在后來的學習中會逐漸積累,所以不需要死記硬背,
我們可以通過輸入import keyword,使用keyword.kwlist來查看所有的關鍵詞
>>> import keyword
>>> keyword.kwlist
['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
- 盡量不以中文字符命名識別符號,
盡管在Python高級的版本中,已經支持使用中文字符做為變數、類或者函式的名稱,但是考慮到中文使用的局限性,與程式的泛用性,我們盡量使用英文單詞來命名,而不是使用中文字符,這種命名方式對國外的程式閱讀者不是很友好,
識別符號小作業
以下命名不符合識別符號規則的有 ( 多選 ) :
A. list = [1,2,3,4]
B. 01_a = 1
C. name = ‘amy’
D. 年齡 = 18
答案是A、B、D
決議:1,list是系統保留的關鍵字;2,數字不能作為識別符號的開頭;3,盡量不適用中文作為識別符號
第二章 變數
2.1 變數的定義
變數,顧名思義,其代表的值在程式執行程序中會發生變化,
變數的實質是在計算機的記憶體空間中開辟出的一塊區域,我們往往使用變數來保存一些物件的值,
在其他的編程語言中,變數必須在定義后才能使用,而在Python語言中,變數是不需要宣告的,變數在賦值操作("="為賦值符號)的同時完成變數的宣告和定義,
與變數相對的概念是常量,其代表的值在程式執行程序中不會發生變化,Python語言中沒有嚴格地規定常量的表現形式,其通常以變數的形態出現,但是我們在使用程式的程序中,應該遵循開發者的說明,盡量不要去更改常量,在 python 中,使用識別符號字母全部大寫的方式來識別常量,
無論是變數還是常量,在創建時都會在記憶體中開辟一塊空間,用于保存它的值,
2.2 變數的賦值程序
studentName = "Alice" #創建一個叫做"Alice"的字串型的物件,然后將其賦值給studentName這個變數
看一下上面的代碼,程式在變數的賦值程序中發生了什么事情呢?
第1步,系統在記憶體中創建了一個叫做"Alice"的字串型的物件;
第2不,系統在記憶體中創建了一個叫做studentName變數,并讓該變數指向"Alice"這個字串型物件,

請同學們觀察下面這段代碼,說出該段代碼的運行結果,然后從A,B,C,D四個選項中選出正確的答案:
# 請說出以下代碼的運行結果,然后從A,B,C,D四個選項中選出正確的答案
studentName1 = "Alice"
studentName2 = studentName1
studentName1 = "Jaina"
print(studentName1)
print(studentName2)
A
Alice
Alice
B
Jaina
Jaina
C
Alice
Jaina
D
Jaina
Alice
正確答案是 D
我們來看一下這段代碼發生了什么:
首先,系統在記憶體中創建了"Alice" 這個字串型的物件,并創建了studentName1 指向它;

其次,系統在記憶體中創建了變數studentName2,并且把studentName1指向的物件傳遞給它,這樣,studentName1和studentName2就同時指向同一個物件,我們這時就認為studentName1和studentName1是相等的,

最后,系統在記憶體中新建了一個字串型物件"Jaina",并讓studentName1這個變數指向它,但此時,studentName2這個變數仍然指向字串型的物件"Alice",所以,studentName1對應的值是"Jaina",而studentName2對應的值是"Alice",這樣,我們的列印結果就是答案D了,

2.3 Python獨特的賦值方式
如果有同學學過其他的編程語言,會發現其他的編程語言實作變數的賦值要一個一個依次進行,但是,Python語言是簡潔的、高效的,注定Python是不同凡響的,
如果我們要把1這個值同時賦給a,b,c這三個變數,我們可以這么做:
>>> a=b=c=1
>>> a
1
>>> b
1
>>> c
1
賦值操作的程序是從右向左,現將1賦值給c,再將c的值賦給b,再將b的值賦給a,
如果要在一條陳述句中將1賦給a,2賦給b,3賦給c,又應該怎么做呢?
>>> a,b,c = 1,2,3
>>> a
1
>>> b
2
>>> c
3
我們可以使用","將變數和要賦值的物件分開,這樣,值就會一一"映射"到變數上,從而實作變數的快速賦值,
變數賦值小作業
a = 6
b = 8
實作 a = 8 , b=6
答案: a,b = b,a
決議,賦值運算是從右向左運行,在賦值運算前,b指向8的值,a指向6的值,那么則相當于a,b = 8,6,之后的賦值運算,將a指向8的值,將b指向6的值,就實作了a, b 兩個變數值互換的運算,
2.4 變數的地址
變數對于程式開發人員來說,就像一座座的小房子,在小房子里裝著各種各樣的資料物件,要訪問這些資料就必須要找到裝著資料物件的小房子,那么我們怎么去找到這些小房子呢?聰明的同學們已經猜到了,我們可以通過"地址"去找到房子,進而訪問其中的資料物件,在程式中,我們可以使用id()函式來查看變數的地址,
每個變數在記憶體中都有一個ID,我們可以將其理解為變數的地址,當兩個不同名稱的變數,其地址都是同一個ID的時候,我們認為這兩個變數其實是相等的,
下面的代碼展示了Python是如何判斷兩個變數是否相等的,
>>> studentName1 = "Alice"
>>> studentName2 = "Alice"
>>> id(studentName1)
47961288
>>> id(studentName2)
47961288
>>> print(studentName1 == studentName2)
True
我們可以看到,studentName1和studentName2的id地址都是一致的,所以,studentName1 == studentName2是正確的,
2.5 小結
- 在python當中創建變數無需先宣告在使用,在賦值同時創建變數
- 每個變數在使用前都必須賦值,變數被賦值以后才可以使用
- 賦值號"="的賦值運算子是按照從右往左的計算順序
- Python允許同時為多個變數賦值
- 地址相同的變數,即使變數名不一樣,系統也認為是相同的
第三章 基礎資料型別
在編程程序中,我們經常會使用各種各樣的資料型別,其中有一些基礎的資料型別我們會經常使用到,主要包括整數型、浮點型、布爾型、復數性以及字串型,其中,整數型、浮點型、布爾型、復數性合稱為數字型,
3.1 整數型
整數型就是我們通常意義上所說的整數,包括0,正整數、負整數,不包括小數點,整數型是我們在編程活動中最經常見到的資料型別,在Python中以"int"來表示整數型,
使用type()可以查看變數的資料型別,
>>> number = 19
>>> type(number)
<class 'int'>
整數型可以用十進制、二進制、八進制、以及十六進制來表示:
- 十進制 : 不用使用進制符號,正常表示即可,如:19,37等;
- 二進制 : 使用進制符號0b或0B,如 0b101010 ,0B101010;
- 八進制 : 使用進制符號0b或0B,如 0o7765,0O7765;
- 十六進制 :使用進制符號0b或0B,如 0xCF25,0XCF25,
那么,如果將其他進制的值賦值給變數,再將其列印出來,會發生什么事呢?
>>> 0b101010
42
>>> 0B101010
42
>>> 0o7765
4085
>>> 0O7765
4085
>>> 0xCF25
53029
>>>
>>> 0XCF25
53029
知識擴展 : 我們會發現,對應的二進制、八進制、十六進制的值在輸出時都默認轉換為10進制的值,
那么,有沒有辦法讓其仍然按照八進制、十六進制的形式列印呢?
我們可以借助print函式的格式化列印功能來實作
%d — dec 十進制
%o — oct 八進制
%x — hex 十六進制
>>> num = 29
>>> print("%d"%num)
29
>>> print("%o"%num)
35
>>> print("%x"%(num))
1d
我們還可以借助一些函式,這些函式分別是
十進制轉換為二進制bin();十進制轉換為二進制oct();十進制轉換為十六進制hex();
>>> number1 = 0b101010
>>> number1
42
>>> bin(number1)
'0b101010'
>>> number2 = 0o7765
>>> number2
4085
>>> oct(number2)
'0o7765'
>>> number3 = 0XCF25
>>> number3
53029
>>> hex(number3)
'0xcf25'
3.2 浮點型
與整數型相對,浮點型就是帶小數點的數字,由整數部分和小數部分組成,比如我們常見的"π",在程式中,我們經常將其作為一個常量表示出來,
>>> PI = 3.1415926
>>> print(PI)
3.1415926
浮點型的數值進行計算并不是完全精準的,可能會遇到四舍五入的情況,比如5/3會得到1.6666666666666667
>>> 5/3
1.6666666666666667
如果一個整數與一個浮點數相加、相減、相乘、相除,結果都是一個浮點數,
>>> a,b = 1,2.0
>>> a+b
3.0
>>> a-b
-1.0
>>> a*b
2.0
>>> a/b
0.5
3.3 布爾型
在計算機中,我們經常需要判斷"正確"與"錯誤"的情況,布爾型是一種表示邏輯的簡單型別,該型別的元素只有"True"和"False"兩個,分別表示邏輯上的"真"和"假",
常用的布爾型數值有:and 與運算 , or 或運算, not 非運算
A and B 與運算 : 只有兩個變數同時為"True"時,其運算結果才能為"True",否則運算結果為"False";
A or B 或運算 : 兩個變數其中之一為"True"時,其運算結果為"True",否則運算結果為"False";
not A 非運算 : 當變數的值為"True"時,其運算結果為"False";當變數的值為"False"時,其運算結果為"True",
>>> A,B = True,True
>>> A and B
True
>>> A or B
True
>>> A,B = True,False
>>> A and B
False
>>> A or B
True
>>> A,B = False,False
>>> A and B
False
>>> A or B
False
>>> C = True
>>> not C
False
>>> C = False
>>> not C
True
在Python程式中,布爾型的值常用語分支結構的程式陳述句或者作為while回圈陳述句的判斷條件,
3.4 字串型
在Python中,用一對單引號或者一對雙引號包裹起來的字符集合稱之為字串,其對應的資料型別為str,
>>> str1 = "Python"
>>> str1
'Python'
>>> str1 = 'python'
>>> str1
'python'
>>> type(str1)
<class 'str'>
還有一種用三對單引號或三對雙引號包裹起來的字符集合,其中的字符可以由多行組成,我們在講注釋的時候已經介紹過這種形式了,在這里就不做過多的介紹,
字串中的字符可以包括大小寫字母、數字、中文字符、特殊符號,以及一些轉義符,
轉義符是指一些具有特殊含義的字符,用于實作特定的功能,注意:轉義符只占據一個字符的位置,
常見的轉移字符請參考https://www.runoob.com/python3/python3-string.html這篇網頁的內容,

字串這一部分的內容比較多,我會在單獨的一章的中來詳細闡述如何處理字串,
第四章 運算子
4.1 算術運算子
算術運算子指用來實作算術運算的特殊符號,比如常見的加法"+",減法"-",乘法"*",“除法/“等等,需要注意的是,算術運算子是有優先級的,一般來說乘法”*”,“除法/“的優先級要大于加法”+”,減法"-",
除了加減乘除之外,還有其他一些常用的算術運算子,
** 冪運算,x ** y 表示取得x的y次方,如 5**2 得到25,冪運算的優先級最高,
% 取余數運算 ,如 5 % 3 得到 2
// 取整運算 , 回傳商的整數部分,如 5//2 得到2,5.0//2得到2.0,5//-2 得到-3
取余運算"%"、 取整運算"//“和乘法”*","除法/"的優先級一樣,所以在一起運算時,需要借助小括號()
4.2 比較運算子
常用來比較兩個數字的大小,結果回傳True或者False,
需要注意的是,除了可以使用純數字進行比較之外,也可以進行變數、運算式之間的比較,
比較運算子的優先級小于算術運算子的優先級,
>>> 33 > 55
False
>>> a,b = 33,55
>>> a > b
False
>>> a+b > a-b
True
4.3 賦值運算子
常見的賦值運算子是"=" , 其作用是將一個資料物件賦值給變數,
除了常規的賦值運算外,還有一些復合賦值運算,
a ** = b 等價于 a = a ** b
a %= b 等價于 a = a % b
a //= b 等價于 a = a // b
a *= b 等價于 a = a * b
a /= b 等價于 a = a / b
a += b 等價于 a = a + b
a -= b 等價于 a = a - b
4.4 邏輯運算子
在Python程式中,只允許將 and, or ,not三種運算子用于邏輯運算,
and :與運算
or :或運算
not :非運算
可參考布爾型資料型別
4.5 運算子的優先級
一般而言,冪運算 ** 優先級最高,其次是乘法、除法、取余、取整運算,然后是加法、減法,再次是 賦值運算,最后是邏輯運算,
除了以上運算子之外,還有其他一些運算子,但這里只介紹最常用的幾種運算子,如果對運算子有興趣,同學們可以參考這個網頁:
https://www.runoob.com/python/python-operators.html

第五章 輸入與輸出
5.1 input輸入函式
input() 是Python的內置函式,用來獲取用戶輸入,其回傳值為字串型別,當用戶未輸入時,程式會阻塞行程,停止就向下執行,并等待用戶輸入,直到用戶輸入完成再繼續執行,
age = input("請輸入你的年齡:")
print("你的年齡是:",age)
print("age的資料型別是:",type(age))
請閱讀并執行以上的代碼(假設輸入年齡為18),說一說代碼的結果是什么?
請輸入你的年齡:18
你的年齡是: 18
age的資料型別是: <class 'str'>
從結果中我們可以看到,input函式回傳的是一個字串型別的物件,然后將這個字串物件賦值給了age這個變數,所以age的資料型別是str,那么問題來了,如果我們想使用輸入的數字進行數學運算該怎么辦呢?
num1 = input("請輸入昨天的營業額:")
num2 = input("請輸入今天的營業額:")
print("",num1+num2)
上面這段代碼有什么問題?
問題1:num1和num2是字串型別,不能用于數字運算,
問題2:字串和字串使用"+"運算子會將兩個字串拼接在一起,
請輸入昨天的營業額:180.55
請輸入今天的營業額:260.74
昨天和今天的營業額合計為: 180.55260.74
哈哈,結果是不是很奇怪?那我們應該怎么去修改呢?
num1 = float(input("請輸入昨天的營業額:"))
num2 = float(input("請輸入今天的營業額:"))
print("昨天和今天的營業額合計為:",num1+num2)
請輸入昨天的營業額:180.55
請輸入今天的營業額:260.74
昨天和今天的營業額合計為: 441.29
在這里,我們使用了強制型別轉換的方法,將字串型別的"180.55"和"260.74"轉換為了浮點型的180.55和260.74,并分別賦值給num1和num2,這樣num1和num2就能進行數值運算,得到我們想要的結果了,
需要注意的是,強制型別轉換必須是字串中的內容全部為數字才可以,
提示:使用str.isdigit() 判斷字串是否全部為數字組成
input 輸入函式小練習1:
用戶輸入 id_card
判斷 id_card 是否為全數字
是,則列印輸出 id_card
否,則列印輸出 ‘id_card 格式錯誤’
id_card = input("請輸入你的id_card:")
if id_card.isdigit():
print(id_card)
else:
print('id_card 格式錯誤')
input 輸入函式小練習2:
輸入年齡
當年齡大于18,則輸出”你好呀,小靚仔”;
否則輸出”你好呀!小朋友”
while(True):
age = input("請輸入你的年齡:")
if age.isdigit():
age = int(age)
if age >= 18:
print("你好呀,小靚仔!")
break
else:
print("你好呀!小朋友!")
break
else:
print("請重新輸入正確的數字,")
continue
5.2 print輸出函式
print輸出函式用于列印輸出,語法為:print(self, *args, sep=’ ‘, end=’\n’, file=None)
引數中sep表示各個值之間的分割符,默認為空格;end表示結尾處的符號,默認為換行符,
>>> num1,num2,num3,num4 = 1,2,3,4
>>> print(num1,num2,num3,num4,sep="+")
1+2+3+4
>>> print(num1,num2,num3,num4,sep="+",end='=')
1+2+3+4=
>>> print(num1,num2,num3,num4,sep="",end='')
1234
觀察以上的代碼片段,并考慮為什么輸出結果是這樣?
print輸出函式小作業1:
num1,num2,num3,num4 = 1,2,3,4
使用print陳述句把整個等式列印出來,即列印出"1+2+3+4=10"的效果
參考答案:
num1,num2,num3,num4 = 1,2,3,4
print(num1,num2,num3,num4,sep="+",end='=')
print(num1+num2+num3+num4)
print輸出函式小作業2:
print(‘12’)
print('34’)
使用一個 print 陳述句實作上面兩個 print() 陳述句輸出的效果
參考答案:
print('1*2','3*4',sep='\n')
print陳述句的格式化輸出:
方法一:使用格式化字符,需要注意的是,格式化字符需要與變數的型別保持一致,
%s:對應字串型別
%d:對應整數型型別
%.2f:對應浮點數型別,".2"表示保留兩位小數
>>> name,age,money = "Ross",20,200000
>>> print("%s雖然只有%d歲,但是她已經賺到了%.2f元的錢了,"%(name,age,money))
Ross雖然只有20歲,但是她已經賺到了200000.00元的錢了,
方法二:使用format函式,需要注意的是,format函式中列印的順序默認為順序執行,但是列印順序可以人為控制,
更多詳細資訊請參考:https://www.runoob.com/python/att-string-format.html
>>> name,age,money = "Ross",20,200000
print("{}雖然只有{}歲,但是她已經賺到了{:.2f}元的錢了,".format(name,age,money))
Ross雖然只有20歲,但是她已經賺到了200000.00元的錢了,
5.3 小結
input輸入函式的特征:
- 阻塞:程式會等待用戶輸入,輸入完成后繼續執行
- 回傳值為字串:input函式會回傳一個字串型別的值,
print函式的特征:
- 輸出值之間使用sep引數作為分隔符
- 輸出后使用end引數作為行的末尾,
- 可以使用格式化符號指定列印格式
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/236592.html
標籤:python
上一篇:趕集網租房資訊
