計算機數據的基本數據類型
1. 所有計算機語法幾個通識概念
1.1 表達式
表達式是由數字、運算符、數字分組符號(括號)、自由變量和約束變量等以能求得數值的有意義排列方法所得的組合。
表達式特點:
表達式一般僅僅用於計算一些結果,不會對程序產生 實質性的影響;
如果在交互模式中輸入一個表達式,解釋器會自動將表達式的結果輸出。
1.2 語句
語句是一個語法上自成體系的單位,它由一個詞或句法上有關連的一組詞構成。
語句的執行一般會對程序產生一定的影響,在交互模式中不一定會輸出語句的執行結果。
1.3 程序(program)
程序就是由一條一條的語句和一條一條的表達式構成的。
1.4 函數(function)
簡單的說函數就是一種語句,函數的作用是專門用來完成 特定的功能。
函數的形狀:xxx()
函數的分類:
1)內置函數 : 或者叫內建函數,就是由編程語言的語法規定存在的函數。這些函數,包含在編譯器的運行時庫中,程序員不必再單獨書寫代碼實現它,只需要 調用 既可。參考鏈接
2)自定義函數 : 由程序員 自主創建 的函數。
當我們需要完成某個功能時,就可以去調用內置函數,或者自定義函數。
函數的兩個要素:
1)參數
2)返回值
2. 標識符
2.1 關鍵字
Python語言一些具有特殊功能的標識符,這就是所謂的關鍵字。關鍵字是Python語言 已經使用的了 ,所以 不允許 開發者自己定義和關鍵字相同的名字的標識符。
Python語言關鍵字查詢方法:
>>> import keyword
>>> keyword.kwlist
Python語言關鍵字彙總:
2.2 標識符概念
2.2.1 標識符:開發人員在程序中自定義的一些符號和名稱。標識符是 自己定義的 ,如 變量名 、函數名 等。
標識符的組成:由26個英文字母大小寫、數字 0-9 、符號 _ 和 $ 。
2.2.2 標識符的命名規則:
1)標識符中可以使用 字母、數字、__ 作爲開頭,但是 絕對 絕對 絕對 不能使用 數字 來開頭。
例如:
name1 (正確)
name_1 (正確)
_ Name1(正確)
1name (不正確)
2)Python語言中不能使用 關鍵字 和 保留字 來作爲標識符。(詳情參見上面的 2.1 關鍵字。)
2.2.3 標識符的命名方式:
1)駝峯命名法:
小駝峯式命名法: 第一個單詞以小寫字母開始,第二個單詞的首字母大寫;例如:myName、aDog。
大駝峯式命名法: 每一個單字的首字母都採用大寫字母;例如:FirstName、LastName。
2)下劃線命名法:顧名思義,就是以下劃線開頭的命名方式;例如:_ Name1 。
不過在程序員中還有一種命名法比較流行,就是用下劃線“_”來連接所有的單詞;比如 get_url buffer_size。
3. 基本數據類型
數據類型:指變量中的值的類型,也就是可以爲變量賦哪些值。
3.1 整數和小數
整數:所有整數 例如 a = 1 b = 100 c =999 都是 int類型 ,我們稱之爲 整型;
如果傳入的整數過長,我們可以用 _ 對輸入的整數進行分割。參考實例:
a = 123_456_789
print(a) # 123456789
小數常量:所有小數 例如 a = 1.2 b=6.66 用 float類型 表示,我們稱之爲 浮點型。
3.2 什麼是 布爾值 和 空值
布爾值(Boolean):這個類型的值只有2個,一個是 True ,一個是 False 。
None常量:這個類型的值只有一個數值,就是None;也就是 空 值。
特別提示 :0 、None 、‘ ’ 三個值的中文意思都是 沒有 ,但是在編寫代碼時所代表的意義可是 完全!完全!!完全!!!不一樣的 。具體怎麼個不一樣法,自己在操作的過程中再細細地體會,現在只需要先牢牢的記住就好。
4. 字符串
4.1 什麼是字符串
字符串主要就是表示一段文本信息。是由數字、字母、下劃線組成的一串字符。
在 Python語言 中用 一對雙引號 或者 一對單引號 包裹的內容就是 字符串 。
檢查字符串值的類型 函數:type()
>>>type(520)
<class 'int'>
>>>type(5.20)
<class 'float'>
>>>type('520')
<class 'str'>
注意:
1)單引號和雙引號不能混合使用;
>>>a = 'abc"
SyntaxError: EOL while scanning string literal
2)相同引號之間不能相互嵌套。
a = 'what's your name'
print(a) # SyntaxError: invalid syntax
4.2 轉義字符
轉義字符是一種特殊的字符常量。轉義字符以反斜線" \ "開頭,後跟一個或幾個字符。轉義字符具有特定的含義,不同於字符原有的意義,故稱 “轉義” 字符。
常用的轉義字符:
\t 表示 製表符
\n 表示 換行符
\\ 表示 反斜槓 \
\’ 表示 ’
\ ‘’ 表示 ‘’
4.3 長字符串
長字符串又叫做 文檔字符串 我們使用三重引號 ‘’‘xxxxxxxx’’’ 來表示一個長字符串。
三重引號內的字符串可以換行,並且會保留字符串中的格式。
4.4 格式化字符串(補上代碼操作代碼,詳見視頻)
方法1)拼串 +
‘+’ 運算只能在 同類型 間運算。整形(int) 之間的 ‘+’ 運算就是加法(求和)運算,字符串(str) 之間的 ‘+’ 運算就是拼串;字符串(str) 不能夠 和其他類型做 ‘+’ 運算。如果做了,會報 TypeError: unsupported operand type(s) for +: ‘int’ and ‘str’ 這個錯誤;不同類型之間想做 ‘+’ 運算必須要轉換爲同一類型。
>>> 6 + 6
12
>>> 'a' + 'b'
'ab'
>>> 6 + int("6")
12
>>> 6 + "6"
TypeError: unsupported operand type(s) for +: 'int' and 'str'
s = 'Hello'
print('s =' + s) # s =Hello
方法2)傳參
通過函數之間傳遞的參數來格式化我們的信息。
s = 'Hello'
print('s =',s) # s = Hello
方法3)佔位符 %
%f 浮點數(float)佔位
%d 整數(int)佔位
>>> 'i %d years old' % '28'
i 28 years old
%s 字符串佔位
>>> 'i love %s' % 'study'
i love study
>>> a = 'i love %s'
>>> a % 'python'
i love python
>>> a % 'JAVA'
i love JAVA
s = 's = %s' % 'Hello"
print(s) # s = Hello
s = 's = %s , s2 = %s' % ('Hello')
print(s) # TypeError: not enough arguments for format string
s = 's = %s , s2 = %s' % ('Hello','World')
print(s) # s = Hello , s2 = World
方法4)格式化字符串方式 f’str.{變量}’ / str.format()
s1 = '鋼鐵俠'
s2 = '蜘蛛俠'
a = f'Hello {s1},{s2}'
print(a) # Hello 鋼鐵俠,蜘蛛俠
s = 'i like {a}'
a = s.format('python')
print(a) # KeyError: 'a'
s = 'i like {}'
a = s.format('python')
print(a) # i like python
s = 'i like {0}'
a = s.format('python')
print(a) # i like python
s = 'i like {1}'
a = s.format('python')
print(a) # IndexError: Replacement index 1 out of range for positional args tuple
從 Python 2.6 開始(注意:不是 Python 3.6,是 Python 2.6 ),新增了一種格式化字符串函數:str.format() 。這個方法增強了函數格式化的一種功能,語法的意思是:通過 ‘{ }’ 代替 ‘%’ ,format 的 () 裏面 不限制 銜接參數的類型。
a = f'語句 {s}'
print(a) # NameError: name 's' is not defined
s = 'i like {0},{1}'
a = s.format('p','b')
print(a) # i like p,b
s = 'i like {1},{2}'
a = s.format('p','b')
print(a) # IndexError: Replacement index 2 out of range for positional args tuple
s = 'i like {},{}'
a = s.format('p','b')
print(a) # i like p,b
通過以上八個例子讓我們明白 f’str.{變量}’ 和 str.format()都該在什麼場景下使用。
如果 沒有變量值(如 方法4 最初例子裏的 s1 和 s2),就使用函數 str.format() 向 { } 裏 傳遞數字 或者 不傳(直接空着);
如果 有變量值,那就不建議使用 str.format() 方法,直接使用 f’str.{變量1},{變量2}…’ 。
在這裏 再次着重提醒:方法4 裏使用的 “ f ”不是關鍵字,它就是一種 格式化字符串 的方式的一種語法。
4.5 字符串的其他操作
len() 字符串的長度
a = 'I love python'
print(len(a)) # 13
max() 最大值
a = 'I love python'
print(max(a)) # y
min() 最小值
a = 'Ilovepython'
print(min(a)) # I
str = "Line1-abcdef \nLine2-abc \nLine4-abcd";
print str.split( ); # 以空格爲分隔符,包含 \n
# ['Line1-abcdef', 'Line2-abc', 'Line4-abcd']
print str.split(' ', 1 ); # 以空格爲分隔符,分隔成兩個
# ['Line1-abcdef', '\nLine2-abc \nLine4-abcd']
str = "-";
seq = ("a", "b", "c"); # 字符串序列
print str.join( seq ); # a-b-c
字符串去空格操作:
str = "000000032100Runoob001230000000";
print str.strip( '0' ); # 去除首尾字符 0 32100Runoob00123
str2 = " Runoob ";
print str2.strip(); # 去除首尾空格 Runoob
str = " this is string example....wow!!! ";
print str.lstrip(); # this is string example....wow!!!
str = "88888888this is string example....wow!!!8888888";
print str.lstrip('8'); # this is string example....wow!!!8888888
str = " this is string example....wow!!! ";
print str.rstrip(); # this is string example....wow!!!
str = "88888888this is string example....wow!!!8888888";
print str.rstrip('8'); # 88888888this is string example....wow!!!
字符串大小寫操作:
str = "this is string example....wow!!!";
print "str.upper() : ", str.upper() # str.upper() : THIS IS STRING EXAMPLE....WOW!!!
str = "THIS IS STRING EXAMPLE....WOW!!!";
print str.lower(); # this is string example....wow!!!
str = "THIS IS STRING EXAMPLE....WOW!!!";
print str.isupper(); # True
str = "THIS is string example....wow!!!";
print str.isupper(); # False
str = "THIS is string example....wow!!!";
print str.islower(); # False
str = "this is string example....wow!!!";
print str.islower(); # True
Pyton工具書:The Python Tutorial — Python 3.7.4 documentation
5. 變量
5.1 變量的概念?
變量是計算機內存中的一塊區域,存儲規定範圍內的值,當中的值是可以改變的,通俗的說變量就是給一塊數據起個名字。
變量命名規則:
1)變量名由字母、數字、下劃線組成;
2)老生常談: 數字不能開頭;
3)不能使用關鍵字;
對 變量的命名 規則,總結成一句話就是:要符合標識符的命名規範!
插入一個注意:兩個對象相等 和 兩個對象是同一個對象 是 兩個概念。 請注意,你沒看錯,就是 兩個概念。 請注意我們的每一個用詞,這是 數學 不是 哲學 。
s1 = {'Jiang':'Python'}
import copy
s2 = copy.deepcopy(s1)
print(s2) # {'Jiang': 'Python'}
print(id(s1),id(s2))
print(s1==s2)
5.2 變量的運算
變量的運算就是正常的 四則運算 ,需要注意的是在運算過程中含有浮點數,那麼它返回的就是一個浮點數類型。
課後作業
a,b = 6,8
我想讓 a=8,b=6 怎麼才能實現?
參考答案
a,b = 6,8
a,b = b,a # 方案一(個人理解:這個方法只適合在練習時使用,不太適合在程序編寫時使用)
tmpe = a # 方案二(對 變量 的靈活使用)
a = b
b = tmpe
print('a = %d, b = %d'%(b,a)) # 方案三(對 佔位符 的靈活使用)
b = b - a # 方案四(對 算術運算符 的靈活使用)
a = b + a
b = a - b
print(a,b)