03. Python語言的核心編程 · 第三章 計算機的基本數據類型

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

  split() 分割字符串

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']

  join() 拼接字符串

str = "-";
seq = ("a", "b", "c"); 			# 字符串序列
print str.join( seq );			# a-b-c

  字符串去空格操作:

  s.strip() 左右兩邊去空格

str = "000000032100Runoob001230000000"; 
print str.strip( '0' );		# 去除首尾字符 0		32100Runoob00123
 
str2 = "   Runoob      ";
print str2.strip();			# 去除首尾空格		Runoob

  s.lstrip() 去左邊空格

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

  s.rstrip() 去右邊空格

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!!!

  字符串大小寫操作:

  s.upper() 全部大寫

str = "this is string example....wow!!!";

print "str.upper() : ", str.upper()		# str.upper() :  THIS IS STRING EXAMPLE....WOW!!!

  s.lower() 全部消息

str = "THIS IS STRING EXAMPLE....WOW!!!";

print str.lower();		# this is string example....wow!!!

  s.isupper() 判斷是不是大寫

str = "THIS IS STRING EXAMPLE....WOW!!!"; 
print str.isupper();		# True

str = "THIS is string example....wow!!!";
print str.isupper();		# False

  s.islower() 判斷是不是小寫

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)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章