日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

《《python基础》》

發布時間:2025/3/21 python 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《《python基础》》 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文主要是讓初學者了解Python,能夠看懂官網文檔

目錄

python 簡介

python 的誕生

python 的應用領域

python 的優缺點

python 的官網

python 的版本

python的官方文檔

Python起步

第一個Python程序

python 的兩種運行模式

Python 的基本輸入輸出

Python的基本輸入函數

注釋

PyCharm的使用

變量和賦值語句

賦值語句

變量

Python 的基礎數據類型

字符串

數字

算術運算符

比較運算符

表達式和語句

表達式和語句的概念

布爾運算符(也叫邏輯運算符)

if 語句

del 語句

pass 語句

條件表達式

字符串

字符串的概述及基本運用

符串的格式化表達式

字符串的常用方法(method)

while 語句

語句嵌套

break 語句

for 語句

?range 函數

continue 語句

復合賦值分隔符

容器

列表 list

python3 中常用于序列的函數

元組 tuple

字典 dict

列表、元組、字典小結

集合 set/ 固定集合 frozenset

集合和固定集合的運算

容器總結


python 簡介

python 的誕生

??????- 創始人: Guido van Rossum(荷蘭人)。

???????![guido](./images/guido.jpg)

??- 時 間 : 1989年圣誕節期間

?????- 地 點 : 阿姆斯特丹

??- Python命名: 源于Guido 是一個喜劇團 Monty Python 的粉絲。

python 的應用領域

??- 自動化系統運維

??- 自動化測試

??- 人工智能,機器人

??- 搜索引擎,爬蟲

??- 科學計算

??- web網站后端開發

??- 云計算

??- 大數據及數據庫編程

??- 游戲

??- 其它

python 的優缺點

?1) 優點

???????????高級:有高級的數據結構,縮短開發時間與代碼量

?????????? 面向對象:為數據和邏輯相分離的結構化和過程化編程添加了新的活力

? ???????? 可升級:提供了基本的開發模塊,可以在它上面開發軟件,實現代碼的重用

?????????? 可擴展:通過將其分離為多個文件或模塊加以組織管理

?????????? 可移植性:python是用 C 語言寫的,又由于 C 的可移植性,使得 Python 可以運行在任 何帶有 ANSI ?C編譯器的平臺上;

???????????? 易學:python 關鍵字少、結構簡單、語法清晰;

???????????? 易讀:沒有其他語言通常用來訪問變量、定義代碼塊和進行模塊匹配的命令式符號;

???????????? 內存管理器:內存管理是由python解釋器負責的;(軟件工程化思路)

??2.)缺點

?????????????- 與C/C++相比,執行速度不夠快

?????????????- 不能封閉源代碼

??????????????c語言執行能力高,python執行能力底但開發效率高

python 的官網

??- 網址: <https://www.python.org>

????世界計算語言排名網站: ??www.tiobe.com

??- 我們可以通過官網得到更多更新的信息及文檔。

python 的版本

??- Python V2.7(2020年已經結束維護)

??- Python V3.6(當前教學)

??- Python V3.9(最新)

python的官方文檔

??https://docs.python.org/zh-cn/3/

Python起步

第一個Python程序

1)編寫一個 hello.py

2)寫入內容

print('hello world!')

3)Python的解釋執行器執行 hello.py

# Linux下 $ /usr/bin/python3 ~/桌面/hello.py # Windows 下 C:\> python hello.py

python 的兩種運行模式

1)使用文件解釋執行模式

先將 python 的語句。寫入xxx.py當中。然后用python3 命令解釋執行該文件

$ python3 xxx.py

2)交互模式

在命令提示符下直接輸入python3命令進入交互模式。

調用exit() 退出交互模式

# Linux 下進入交互模式$ python3 <回車>>>> # 在此處可以輸入 語句和表達式(回車執行)>>> exit() # 退出交互模式,回到終端

使用文件解釋執行方式示例

[root@localhost day01]# cat hello.py print('Hello World!')[root@localhost day01]# python3 hello.py Hello World!

Python 的基本輸入輸出

1)Python 的輸出函數

????????print() 函數

作用:

????????向終端輸出文字信息,能讓用戶看到

????????????????當有多個數據要輸出時,中間用英文的逗號(,) 分隔開

調用格式

print(數據1, 數據2, 數據3, ..., sep=' ', end='\n')

在python中主要使用print實現輸出,print是一個函數

在python中函數調用需要添加(),括號內是傳給函數的參數

print("hello world!") print("年齡是", 35) print(1, 2, 3, 4) print(1, 2, 3, 4, sep=" ", end="\n") print(1, 2, 3, 4, sep="###", end="\n\n\n") print(1, 2, 3, 4)

Python的基本輸入函數

input 函數

作用

????????讓程序停下來,等待用戶輸入文字信息,返回用戶輸入文字的? 字符串

調用格式

input("提示信息")

示例

name = input('請輸入您的姓名:')

python中,通過input函數獲取用戶鍵盤輸入

input函數的參數是字符串,它是屏幕提示語

注釋

注釋以井號 (#) 開頭,在物理行末尾截止。

PyCharm的使用

PyCharm 下快捷鍵

ctrl + s 保存

ctrl + / 注釋和取消注釋

ctrl + d 可以復制當前行到下一行

ctrl + alt + L? 可以將程序自動格式化成 符合PEP8 編碼規范的格式

PyCharm 的調試

????????1. 設置斷點
????????2. 單步執行

變量和賦值語句

賦值語句

作用

????????創建一個自定義名字的變量,此變量可以用于綁定一個表達式執行的結果,供后續使用

語法

變量名 = 表達式 變量名1 = 變量名2 = 變量名3 = 表達式 變量名1, 變量名2, 變量名3 = 表達式1, 表達式2, 表達式3

示例

one_hundred = 99 + 1 a = b = c = 200 a, b = 100, 200

說明

?????? - 第一次為變量賦值,python 會創建變量,同時綁定表達式執行的結果

?????? - 第二次或者以后為變量賦值,會改變原有變量的綁定關系

?????? - python 的變量沒有類型,它綁定的對象才有類型

?????? - 變量在使用之前,必須先進行賦值

?????? - 變量賦值是一個自右向左的運算,將=右邊表達式的計算結果,賦值給左邊的變量

變量

變量是在python 內用賦值語句創建,用來綁定一個數據的有名對象

  • 變量名

????????變量名必須是一個標識符

  • 標識符的命名規則?

????????-第一個字母必須是英文字母或下劃線 [ A-Za-z_ ]

????????-從第二個字母起(如果有),必須是英文字母或下劃線或數字

????????????????[ A-Za-z0-9_ ]

????????????????變量名稱約定

??????? -變量名區分大小寫

  • 示例

????????以下是合法的標識符

a a1 abc ABC a1b2c3d4 one_hundred count _a __ABC__ getNameAge get_name_age GetNameAge # 小駝峰 匈牙利命名法 大駝峰

????????python 編程語言中的關鍵字不能作為標識符

  • 推薦采用的命名方法

??????? -變量名全部采用小寫字母,如pythonstring

??????? -簡短、有意義,如pystr

??????? -多個單詞間用下劃線分隔,如py_str

??????? -變量名用名詞,函數名用謂詞(動詞+名詞),如 phone / update_phone

??????? -類名采用駝峰形式,如MyClass

  • 關鍵字(keywords)

????????計算機編程語言中保留的標識符稱為關鍵字, 關鍵字不能當成普通的標識符使用

??????????????關鍵字通常用于語法標識

??????????python3.9中 的全部的關鍵字

False await else import pass None break except in raise True class finally is return and continue for lambda try as def from nonlocal while assert del global not with async elif if or yield
  • 示例
>>> a = 10 + 5 # 第一次為變量賦值是創建變量 >>> a 15 >>> a = 100 # 再次為變量賦值,會改變已經存在的變量.
  • 練習
寫一個程序 myprog.py # 1. 讓用戶輸入用戶名 # 2. 讓用戶輸入密碼 # 3. 打印 誰誰誰 的密碼是 xxx

????????? 答案:

name = input("請輸入您的姓名: ")password = input("請輸入您的密碼: ")print(name, '的密碼是:', password)

Python 的基礎數據類型

數據類型

  • 字符串 str

  • 數字

    • 整數 int

    • 浮點數 float

    • 布爾數 bool

  • 容器

    • 列表 list

    • 元組 tuple

    • 字典 dict

    • 集合 set / 固定集合 frozenset

    • 字節串 bytes / 字節數組 bytearray

示例字符串 str與數字住址: 字符串郵編: 數字(也可以用字符串)門牌號: 整數

字符串

????????程序中,用來記錄人類的文字信息的一種數據類型

  • 創建字符串的字面值
# 用 英文的 ' 或 " 或 ''' 或 """ 開始或結束 # 此示例示意字符串的寫法 print('同學們好') print("同學們好") print('''同學們好''') print("""同學們好""")
  • 說明

??????? -雙引號的字符串的內部的單引號不算是結束符

??????? -單引號的字符串的內部的雙引號不算是結束符???????

# I'm a teacher! print("I'm a teacher!") # 我是"kali_yao" print('我是"kali_yao"')

??????? -三引號字符串的內部可以包含單引號和雙引號

# I'm a teacher! 我是"kali_yao" print('''I'm a teacher! 我是"kali_yao"''')

??????? -三引號字符串又稱為所見即所得字符串, 每一次換行會轉換成換行符 '\n'

# print("詠鵝\n鵝鵝鵝,\n曲項向天歌;\n白毛浮綠水,\n紅掌撥清波。") # 等同于如下寫法 print('''詠鵝 鵝鵝鵝, 曲項向天歌; 白毛浮綠水, 紅掌撥清波。''')
  • 字符串的轉義

????????字符串的字面值中,可以加反斜杠 \ 后加一個或多個字符串,代表一個單個的字符

\' 代表一個單引號 \" 代表一個雙引號 \n 代表一個換行符 \\ 代表一個反斜杠
  • 思考
思考 我是單引號',我是雙引號", 我是三單引號''', 我是三雙引""" # 解決方法 print('我是單引號\',我是雙引號\", 我是三單引號\'\'\', 我是三雙引"""')
  • Python 中全部的轉義字符串
轉義序列 含義 注釋 \newline 反斜杠加換行全被忽略 \\ 反斜杠 (\) \' 單引號 (') \" 雙引號 (") \a ASCII 響鈴 (BEL) \b ASCII 退格 (BS) \f ASCII 進紙 (FF) \n ASCII 換行 (LF) \r ASCII 回車 (CR) \t ASCII 水平制表 (TAB) \v ASCII 垂直制表 (VT) \ooo 八進制數 ooo 碼位的字符 (1,3) \xhh 十六進制數 hh 碼位的字符 (2,3)

練習:

# 寫程序,打印如下文本內容 print("hello world") 答案 >>> print('print("hello world")') print("hello world") >>> >>> print("print(\"hello world\")") print("hello world")
  • 字符串的基本運算

+ 號運算符, 用于拼接字符串(生成新的字符串)

????????+ 號的兩側都必須是字符串

'今天是' + '7月13日' # 生成 '今天是7月13日' s1 = '123' s2 = "456" s3 = s1 + s2 print(s1) # 123 print(s2) # 456 print(s3) # 123456

* 運算, 用于生成重復的字符串

? ? ? ? 字符串只能和整數相乘

print('我想你了' * 100)

數字

Python 中的基本的數字類型

整數 int 浮點數(小數) float 布爾類型數 bool

??????? -整數 int

???????????????????整數的字面值

# 十進制的寫法 100 0 -5 ? # 二進制的寫法 0b 開頭 后跟 0~1 0b1101 ? # 八進制的寫法 0o開頭 后跟 0~7 0o777 等于 0b111111111 等于 511 ? # 十六進制的寫法 0x 開頭 后跟 0~9, a-f, A-F 0xA1B2C3D4

???????? -浮點數(小數) float

????????????????? 浮點數的字面值??

# 小數寫法 3.14 0.14 .14 3.0 3. 0.0 # 科學計數法 6.18E-1 # 等同于 0.618 2.9979E8 # 等同于 299790000.0

??????? -布爾類型的數 bool

????????????????True??? 真(表示行,好,成立)??????????????? 值為1

????????????????False?? 假(表示不行,不好,不成立)??? 值為0

算術運算符

+ 加法 - 減法 * 乘法 / 除法 // 地板除法(向下取整) floordiv % 求余數 ** 冪運算(也叫乘方運算) x ** y 代表 x 的 y 次方

?示例

>>> 1 + 2 * 3 / 4 2.5 >>> 14 / 3 4.666666666666667 >>> 14 // 3 4 >>> 14 % 3 2 >>> 3 ** 2 9

比較運算符

比較運算符是二元運算符

  • 運算符
< 小于 <= 小于等于 > 大于 >= 大于等于 == 等于 != 不等于

比較運算符通常返回布爾類型的數, True, False

>>> 100 + 200 > 3 True >>> 1 + 3 >= 2 True >>> 1 + 3 >= 200 # 表達式 False >>> score = 83 # 這是賦值語句 >>> 60 <= score <= 100 True >>> score = 59 >>> 60 <= score <= 100 False

表達式和語句

表達式和語句的概念

  • 表達式

????????是由數字,字符串(文字), 運算符,函數調用等組成,通常用于計算并得到一個結果

?????????????????表達式是語文中的字或短語

  • 語句

????????語句是計算機執行程序的最小單位

示例

a = 100 # 賦值語句 print(a) # 表達式語句
  • 函數調用是表達式
input('xxxx') 返回字符串print("xxxx") 返回 None

????????函數調用語法規則

函數名(傳入的參數)

None 是表示空值的一個對象

  • 數據類型轉換相關的函數
函數 說明 str(x) 把傳入的x 轉化成字符串并返回 int(x) 把 x 轉化為整數并返回 float(x) 把 x 轉化為浮點數并返回 bool(x) 把 x 轉化為布爾類型的數并返回
  • 示例:
>>> age = input('請輸入年齡: ') # 輸入 35 >>> int(age) 35 >>> int("35") 35 >>> int(3.14) 3 >>> int('3.14') # 報錯 >>> f = 3.14 >>> str(f) '3.14' >>> int(f) 3 >>> bool(f) True
  • python 中假值對象
None False 0 0.0 '' [] # 空列表 {} # 空字典 ...

布爾運算符(也叫邏輯運算符)

  • 運算符
and 與運算 or 或運算 not 非運算
  • and 與運算

????????兩者(兩個元素同時為真,結果才為真)

語法

x and y # x, y代表表達式

示例

>>> 3 + 4 > 5 and 6 + 7 > 100

真值表

x的值 y的值 x and y的值 True True True True False False False True False

優先返回假值對象, 如果x 為假值,返回x, 否則返回y

  • or? 或運算

兩者(兩個元素只要有一個為真,結果就為真)

x or y # x, y代表表達式

真值表

x的值 y的值 x or y的值 True True True True False True False True True False False False

優先返回真值對象, 如果x 為真值,返回x, 否則返回y

  • not 非運算

????????not 運算符是一元運算符

語法

not 表達式

示例

not True # False not False # True not 3.14 # False not '' # True not 1 + 2 # False
  • and 示例
>>> True and True # True >>> True and False # False >>> False and True # False >>> False and False # False >>> True or True # True >>> True or False # Ture >>> False or True # Ture >>> False or False # False >>> not False # True >>> not True # Flase >>> 3.14 and 5 # 5 >>> 0.0 and 5 # 0.0 >>> 3.14 or 5 # 3.14 >>> 0.0 or 0 # 0 >>> not 3.14 # False >>> not 0.0 # True

if 語句

作用

????????讓程序根據條件選擇性的執行其中的某一個語句塊

語法

if 條件表達式1:語句塊1 elif 條件表達式2:語句塊2 elif 條件表達式3:語句塊3 ... elif 條件表達式n:語句塊n else:語句塊(其他)

說明

??????? -elif 子句可以有0個,1個或多個,

?????? -else 子句可以有0個或1個且只能放在最后

?????? -它通過對表達式逐個求值直至找到一個真值(請參閱 布爾運算 了解真值與假值的定義)在子句體中選擇唯一匹配的一個;然后執行該子句體(而且 if 語句的其他部分不會被執行或求值)。 如果所有表達式均為假值,則如果 else 子句體如果存在就會被執行。

if 語句也是語句,他可以嵌套到其他的復合語句中

if xxxx:if yyyy > 0:print('.....')else:print("fjdsfdf") else:print("hello")

del 語句

作用:

用于刪除變量,同時解除與對象的關聯,如果可能則釋放此變量綁定的對象

語法:?

del 變量名 del 變量名1, 變量名2, ...

自動化內存管理和引用計數:
每個對象都會記錄有幾個變量引用自身,當引用的數量為0時則此對象被銷毀,此種自動化內存管理的方式叫做引用計數。

pass 語句

作用

????????用來填充語法空白

語法

pass

示例

# 如果 成績在 0~100 什么都不做, 其他提示"您的輸入有誤" score = int(input('請輸入成績:')) if 0 <= score <= 100:pass else:print('您的輸入有誤!')

條件表達式

語法

表達式x if 條件表達式C else 表達式y

說明

????????執行順序

????????????????先判斷 條件表達式C 是真值還是假值,

????????????????如果 C是真值,則表達式x 執行并返回結果

????????????????如果 C是假值,則表達式y 執行并返回結果

表達式 x if C else y 首先是對條件 C 而非 x 求值。 如果 C 為真,x 將被求值并返回其值;否則將對 y 求值并返回其值。

示例

>>> score = 69 >>> "及格" if 60 <= score <= 100 else "不及格" '及格' >>> s = "及格" if 60 <= score <= 100 else "不及格" >>> print(s) 及格

字符串

字符串的概述及基本運用

  • 字面值
'hello' "hello" '''hello''' """hello"""
  • 字符串轉義
\' 代表一個單個的 ' \n
  • 字符串的運算

+ 用于拼接字符串

*? 用于生成重復的字符串

  • 原始字符串(raw 字符串)

以字符r開頭的字符串, 其中的 \ 不算轉義字符串

????????字面值格式

r'字符串內容' r"字符串內容" r'''字符串內容''' r"""字符串內容"""
  • in / not in 運算符

作用

????????in 用于序列,字符串,字典中,用于判斷某個值是否存在于容器中,如果存在就返回True, 否則返回False

????????not in 的返回值與 in 相反

示例

>>> s = 'welcome to beijing!' >>> 'to' in s True >>> 'weimingze' in s False >>> 'beijing' not in s False >>> 'weimz' not in s True
  • 字符串的索引 index

語法

字符串[整數表達式]

作用

????????用來獲取字符串其中的一個字符

說明

????????正向索引: 字符串的 正向索引是從0開始的,.... 最后一個索引為 len(s)-1

????????反向索引: 字符串的反向索引是從 -1 開始的,-1 代表最后一個,... -len(s) 代表第一個

示例

>>> s = 'ABCDE' >>> s[1] B >>> s[1+2] D >>> s[-1] E

注: len(x) 函數可以求取一個字符串的長度

  • 字符串的切片 slice

作用

????????從字符串序列中取出相應位置的元素,重新組成一個新的字符串

語法

字符串[(開始索引b):(結束索引e)(:(步長s))]

注: () 括起來的內容代表可以省略

說明

??????? -開始索引b是切片切下的開始位置

??????? -結束索引e 是切片的終止位置(但不包含終止點)

??????? -步長是切片取出數據后向后移動的方向和偏移量

?????????????? - 沒有步長,相當于步長為1(默認為1)

?????????????? - 當步長為正數時,取正向切片

?????????????????????? - 開始索引默認為0, 結束索引是最后一個元素的下一個索引

?????????????? - 當步長為負數時,取反向切片

?????????????????????? - 開始索引默認為-1, 結束索引是第一個元素的前一個索引

示例

# 01234 >>> s = 'ABCDE' >>> s[1:] # 'BCDE' >>> s[-2:] # 'DE' >>> s[1:4] # 'BCD' >>> s[:] # 'ABCDE' >>> s[:2] # 'AB' >>> s[1:1] # '' >>> s[4:2] # '' >>> s[::] # 等同于 s[::1] 'ABCDE' >>> s[::2] # 'ACE' >>> s[2::2] # 'CE' >>> s[-1::-2] # 'ECA' >>> s[::-1] # 'EDCBA'

符串的格式化表達式

  • 作用

????????生成具有一定格式的字符串

  • 語法規則
格式化字符串 % 參數1 # 或者 格式化字符串 % (參數1, 參數2, 參數3)
  • 占位符和類型碼
占位符和類型碼 說明 %s 轉成字符串, 使用 str(x) 函數轉換(常用) %d 轉成 十進制的整數(常用) %o 轉成 八進制的整數 %x,%X 轉成 十六進制的整數 %e,%E 轉成 指數格式的浮點數 %f,%F 轉成小數格式的浮點數(常用) %g,%G 轉成指數格式或小數格式的浮點數 %% 轉成一個%
  • 示例1
>>> fmt = """ 甲方:_____%s_____ 乙方:_____%s_____....... 金額:_%d__ """ >>> s = fmt % ("kali", 'yao', 10000) >>> print(s)甲方:_____kali_____ 乙方:_____yao_____....... 金額:_10000__
  • 示例2
>>> "+++%d+++" % 999 # 返回 '+++999+++' '+++999+++' >>> "+++%s+++" % 3.14 '+++3.14+++' >>> "+++%s+++" % "weimz" '+++weimz+++' >>> "+++%d+++" % 3.1415 '+++3+++' >>> "+++%d+++" % 13 '+++13+++' >>> "+++%o+++" % 13 '+++15+++' >>> "+++%x+++" % 13 '+++d+++' >>> "+++%e+++" % 3.1415 '+++3.141500e+00+++' >>> "+++%f+++" % 3.1415 '+++3.141500+++' >>> "+++%g+++" % 3.1415 '+++3.1415+++' >>> "+++%g+++" % 3141523274812374281342374324.23748123742183472 '+++3.14152e+27+++'
  • 占位符和類型碼之間的格式化語法
% [- + 0 寬度.精度] 類型碼

- 左對齊
+ 顯示正號
0 左側空白位置補零
寬度: 整個數據輸出的寬度
精度: 保留小數點以后多少位(默認小數點以后保留6位)
常用于 %d 和 %f 中

示例

>>> "--%d--" % 99 '--99--' >>> "--%5d--" % 99 '-- 99--' >>> "--%05d--" % 99 '--00099--' >>> "--%5d--" % 99 '-- 99--' >>> "--%+5d--" % 99 '-- +99--' >>> "--%-5d--" % 99 '--99 --' >>> "--%f--" % 3.1415926 '--3.141593--' >>> "--%.2f--" % 3.1415926 '--3.14--' >>> "--%7.2f--" % 3.1415926 '-- 3.14--'

字符串的常用方法(method)

  • 方法的調用語法
對象.方法名(參數)
  • 示例:
>>> "abc".isalpha() True >>> "123".isalpha() False >>> "123".isdigit() True

. 是"的"的意思

  • 字符串的常用方法
方法名(S代表字符串對象) 說明 S.isalpha() 判斷字符串是否是英文字符 S.isdigit() 判斷字符串是否是全為數字 S.isupper() 判斷字符串是否是全為大寫的英文字符 S.islower() 判斷字符串是否是全為小寫的英文字符 S.center(width[, fill]) 將字符串按width 寬度居中,左右默認填充空格 S.count(sub[, start[, end]]) 獲取字符串中的子串的個數 S.startswith(prefix) 返回S是否以prefix 開頭 S.endswith(suffic) 返回S是否以suffic結尾 str.replace(old, new[, count]) 替換字符串 str.find(sub[, start[, end]]) 查找字符串,返回第一次出現的索引,如果沒找到,返回-1 str.index(sub[, start[, end]]) 查找字符串,返回第一次出現的索引,如果沒找到則報錯 str.rindex(sub[, start[, end]])

代表其中的內容弄可以省略

詳見: https://docs.python.org/zh-cn/3/library/stdtypes.html#string-methods

  • 示例:
>>> s = "ABC" >>> s.center(10) ' ABC ' >>> s.center(10, '#') '###ABC####' >>> s = 'hello world, hello china' >>> s.count('hello') 2 >>> s.count('hello', 10) 1 >>> s.count('hello', 10, 12) 0 >>> s = "/root/music/冰雨.mp3" >>> s.startswith('/root/') True >>> s.endswith('.mp3') True >>> s.endswith('music') False >>> s = 'welcome to Beijing' >>> s.upper() 'WELCOME TO BEIJING' >>> s.lower() 'welcome to beijing' >>> s.title() 'Welcome To Beijing' >>> s = '/root/music/冰雨.mp3' >>> pos = s.rindex('/') >>> pos 11 >>> pathname= s[:pos] >>> filename = s[pos+1:] >>> print(pathname) /root/music

while 語句

作用

????????根據一定的條件,重復的執行某個語句塊

語法

while 真值表達式:語句塊1 (*此部分可能會重復執行) else:語句塊2

說明

??????? -else 子句可以省略

??????? -else 子句 當且僅當 真值表達式為假Flase的時候 會執行 else 里的語句塊2

??????? -如果 此 while 是因為 調用 break 語句而終止循環。則 else 子句里的語句不會執行

示例1

while 1 < 2:print("hello world")

示例2

# 打印 5 行 "hello world" i = 0 while i < 5:print("hello world")i = i + 1 # 也可寫成 i += 1 else:print("while 語句已經結束!")

語句嵌套

while 語句也是語句, 和其他的語句一樣,可以嵌套到其他的任何復合語句中。

while? 語句嵌套示意:

while 真值表達式:...while 真值表達式2:...else:......... else:...

break 語句

作用

????????用于循環語句(while, for語句)中, 當break 執行是,她會終止包含他的當前循環。

語法

break

說明?????

????????break 語句只能用在 while 語句或for語句的內部.

????????break 語句通常和 if 語句組合使用.

????????當break 語句執行后,此循環語句break 之后的所有語句都不會執行(else 子句里的語句也不執行)

????????break 語句只能終止包含他的當前循環,當有循環嵌套時,只能跳出離他最近的一個循環

示例

i = 1 while i <= 5:print('i=', i)if i == 2breaki += 1 else:print('循環結束: i=', i)

死循環

????????死循環是指循環條件一直成立的循環

????????死循環通常使用 break 語句來終止循環

????????死循環的 else 子句中的語句永遠不會執行

寫法???????

while True:語句塊

循環通常用戶循環次數無法確定的循環

for 語句

作用

????????用來遍歷可迭代對象的數據元素

遍歷是指經歷且只經歷一遍

可迭代對象是指能夠依次獲取數據元素的對象

可迭代對象

????????字符串

????????---- 以下后面才講----

????????列表 list

????????字典 dict

????????...

語法

for 變量列表 in 可迭代對象:語句塊1 else:語句塊2

語法說明??

????????else 子句可以省略

????????else 子句的語句塊2 只有在 可迭代對象不再能提供數據的時候才會執行

????????因為 語句塊1 部分調用break 而終止循環式,else 子句部分不會執行

示例

s = 'ABCDE' for ch in s:print('ch=', ch) else:print("遍歷結束")

?range 函數

作用

????????用來生成一個能夠得到一系列整數的可迭代對象(也叫整數序列生成器)

調用格式

range(stop) # stop 停止整數 range(start, stop) # start 開始整數 range(start, stop, step) # step 步長

range 函數調用會生成從 start 開始,到 stop 結束(不包含stop) 的一系列整數,整數的間隔 step

start 默認值為0, step 默認值為1

示意

range(4) # 生成 0 1 2 3 range(3, 6) # 生成 3 4 5 range(1, 10, 2) # 生成 1 3 5 7 9 range(5, 0, -2) # 生成 5 3 1

示例

>>> for x in range(4): ... print(x) ... 0 1 2 3 >>> for x in range(3, 6): ... print(x) ... 3 4 5 >>> for x in range(1, 10, 2): ... print(x) ... 1 3 5 7 9 >>> for x in range(5, 0, -2): ... print(x) ...

continue 語句

作用

????????用于循環語句(while 語句和for語句)中, 不再執行本次循環內 continue 之后的語句,開始一次新的循環

語法

continue

說明

????????在for 語句中, 執行continue 語句,for語句將會從可迭代對象向中獲取下一個元素綁定變量后再次進行循環

????????在while 中,執行continue 語句, 將會直接跳轉到while 語句的真值表達式處,重新判斷循環條件

示例1

for x in range(5):if x % 2 == 0:continueprint(x) # 0 1 2 3 4

示例2

x = 0 while x < 5:print(x)x += 1

None

復合賦值分隔符

x += y # 等同于 x = x + y x -= y # 等同于 x = x - y x *= y # 等同于 x = x * y x /= y # 等同于 x = x / y x //= y # 等同于 x = x // y x %= y # 等同于 x = x % y ....

容器

列表 list

????????列表是一種可以存儲任意個各種類型的序列容器

????????列表內的數據有先后順序關系

????????列表是可變的容器

序列指有序排列

  • python 中默認有4種可變的容器

????????列表list

????????字典 dict

????????集合 set

????????字節數組 bytearray

  • python 3 中的序列

????????字符串 str

????????列表 list

????????元組 tuple

  • 創建列表的字面值
>>> L = [] # 創建一個空的列表 >>> L = ['北京', '上海', '廣州', '西安'] # 創建一個含有4個字符串的列表 >>> L = [1, 'Two', 3.14, True, False, None] >>> L = [1, 2, [3.1, 3.2], 4] # 含有四個元素的列表,第三個元素是列表 >>> L2 = [['姓名','語文成績','數學成績'],['小明', 90, 100],['小新', 59, 26] ]

注: python 中的 (), [], {} 和 三引號字符串都要成對出現, 可以換行

  • 創建列表的構造函數 list
L = list() # L = [] L = list("ABC") # L = ['A', 'B', 'C'] L = list(range(5)) # L = [0, 1, 2, 3, 4]
  • 列表的運算

????????列表list同字符串str都是序列, 他們的運算規則基本相同

+ 用于拼接列表

>>> [1, 2, 3] + [4, 5, 6] # [1, 2, 3, 4, 5, 6]

+= 追加

語法 列表 += 可迭代對象

>>> L = [1, 2, 3] >>> L += [4, 5] # L = [1, 2, 3, 4, 5] >>> L = [1, 2, 3] >>> L += "ABC" # L = [1, 2, 3, 'A', 'B', 'C'] >>> L += range(2)

* 用于生產重復的列表

>>> [1, 2] * 3 # [1, 2, 1, 2, 1, 2] >>> L = [5, 6] >>> L *= 3 # L = [5, 6, 5, 6, 5, 6]

==? != 用于比較

列表[整數表達式] >>> [1, 2, 3] == [1, 2, 3] # True >>> [1, 2, 3] != [3, 2, 1] # True

in /not in 用于判斷一個數據元素是否在列表中

>>> "hello" in [1, "hello", 'world'] True >>> '紅樓夢' in ['三國演義', '西游記'] False

索引

列表[整數表達式] L = [1, 2, 3, 4, 5, 6] print(L[0]) # 1 print(L[-1]) # 6

切片

列表[(開始索引b):(終止索引e)(: (步長s))]

????????() 里的內容代表可以省略

x = [1, 2, 3, 4, 5, 6, 7, 8] y1 = x[:4] # y1 = [1, 2, 3, 4] y2 = x[::2] # y2 = [1, 3, 5, 7] y3 = x[::-1] # y3 = [8, 7, 6, 5, 4, 3, 2, 1]

列表是可變的容器(不同于字符串)

????????列表是可變的

????????字符串是不可變的

>>> L1 = L2 = [1, 2, 3] >>> L1 += [4, 5, 6] # L1 = [1, 2, 3, 4, 5, 6] >>> L2 [1, 2, 3, 4, 5, 6] # 不同于字符串 >>> s1 = s2 = "ABC" >>> s1 += 'DEF' # s1 = 'ABCDEF' >>> s2 'ABC'
  • 列表的數據操作(增、刪、改、查)

添加數據

????????方法

方法名(L代表列表) 說明 L.append(x) 向列表的末尾追加單個數據 L.insert(index, obj) 將某個數據obj 插入到 index這個索引位置的數據之前 L.extend(可迭代對象) 等同于: L += 可迭代對象

示例

mylist1 = [1, 3, 4] # 目標是變成 [1, 2, 3, 4, 5] mylist1.append(5) # mylist1 = [1, 3, 4, 5] mylist1.insert(1, 2) # mylist1 = [1, 2, 3, 4, 5] mylist1.extend(range(6, 10)) # mylist1 = [1, 2, 3, 4, 5, 6, 7, 8, 9]

修改數據(改)

????????用索引賦值可以改變列表內的數據

列表[整數表達式] = 表達式

示例

mylist2 = [1, 1.99, 3] # 把1.99 改為2 mylist2[1] = 2 # mylist2 = [1, 2, 3]

刪除數據(刪)

方法

方法 說明 L.remove(x) 從列表L中刪除第一次出現在列表中的數據元素,如果x不存在則報錯 L.clear() 清空列表

示例

L = [1, 2, 3, 4, 2, 2, 3, 4] L.remove(3) # L = [1, 2, 4, 2, 2, 3, 4] L.remove(3) # L = [1, 2, 4, 2, 2, 4] L.remove(3) # 報錯了 L.clear() # L = []
  • del 語句刪除指定位置的數據元素

語法

del 變量名 # 刪除變量,同時解除變量綁定的對象 del 列表[整數表達式]

示例

L = ['張飛', '趙云', '魯班7號', '孫悟空'] del L[2] # L = ['張飛', '趙云', '孫悟空'] del L # 刪除L 變量

查看(索引取值就是查看)

print(L[0]) # 取值
  • 列表的常用方法
運算 結果 s.index(x[, i[, j]]) x 在 s 中首次出現項的索引號(索引號在 i 或其后且在 j 之前) s.count(x) x 在 s 中出現的總次數 s.append(x) 將 x 添加到序列的末尾 (等同于 s[len(s):len(s)] = [x]) s.clear() 從 s 中移除所有項 (等同于 del s[:]) s.copy() 創建 s 的淺拷貝 (等同于 s[:]) s.extend(t) 或 s += t 用 t 的內容擴展 s (基本上等同于 s[len(s):len(s)] = t) s.insert(i, x) 在由 i 給出的索引位置將 x 插入 s (等同于 s[i:i] = [x]) s.pop([i]) 提取在 i 位置上的項,并將其從 s 中移除 s.remove(x) 刪除 s 中第一個 s[i] 等于 x 的項目。 s.reverse() 就地將列表中的元素逆序。 s.sort( key=None, reverse=False) 對列表內的數據進行排序, reverse=False 升序排序,否則是降序排序

示例:

s = [1, "二", 3] value = s.pop(1) # s= [1, 3]; value = '二' >>> s = [1, 2, 3, 5] >>> s.reverse() # 反轉 >>> s [5, 3, 2, 1] >>> s = [1, 2, 3, 4, 2, 2, 3, 4] >>> s.index(3) # 返回第一次出現的位置的索引 2 >>> s.index(3, 4) 6 >>> s.index(100) # 觸發異常,要用try 語句處理 Traceback (most recent call last):File "<stdin>", line 1, in <module> ValueError: 100 is not in list >>> s.count(3) # 在列表 s 中 找出所有值為3 的元素的個數,并返回 2 >>> s.count(2) 3 >>> L1 = [2, 4, 6, 8, 9, 1] >>> L1.reverse() >>> L1 [1, 9, 8, 6, 4, 2] >>> s.sort() # 排序,默認是升序排序 >>> s [1, 2, 2, 2, 3, 3, 4, 4] >>> s.sort(reverse=True) >>> s [4, 4, 3, 3, 2, 2, 2, 1]
  • ?列表解析(也叫列表推導式)

作用

????????用簡單的表達式方式來創建列表

語法規則

[ 表達式 for 自定義變量 in 可迭代對象 ] # 或 [ 表達式 for 自定義變量 in 可迭代對象 if 真值表達式 ]

示例

生成一個列表, 里面有 100 個數是[1, 4, 9, 16, 25, ...] # 用 for 語句實現 L = [] for x in range(1, 101):L.append(x ** 2) print(L)# 用列表推導式 L2 = [ x ** 2 for x in range(1, 101)] print(L2)L3 = [ x ** 2 for x in range(1, 101) if x % 2 == 0] # 取出所有的偶數 # L3 = [4, 16, 36, ...]

python3 中常用于序列的函數

運算 結果 len(s) s 的長度 min(s) s 的最小項 max(s) s 的最大項 # 課間休息: 11:11 回來 sum(s) 求 s內所有數字的和(不允許有其他數據) >>> L = [1, 5, 8] >>> len(L) 3 >>> min(L) 1 >>> max(L) 8 >>> sum(L) 14

元組 tuple

元組是不可改變的列表, 同 列表list 一樣,元組可以存放任意類型的數據,但是,一旦創建將不可修改

  • 創建元組的字面值

????????用小括號() 括起來,單個元素括起來后加逗號來區分單個元素還是元組

t = () # 空元組 t = (100,) # 含有一個數據元素的元組 t = 100, # 含有一個數據元素的元組 t = (1, 2, 3) # 含有三個數據元素的元組 t = 1, 2, 3 # 含有三個數據元素的元組

????????type(x) 函數用來返回數據x的類型

  • 創建元組的函數 tuple
t = tuple() # t = () t = tuple(range(5)) # t = (0, 1, 2, 3, 4)
  • tuple 的運算

????????tuple 是序列的一種, 同列表的運算,但是不可以修改元組

>>> t = (1, 2, 3) + (4, 5, 6) >>> t += (7, 8, 9) >>> t = t * 2 >>> t *= 2 >>> 5 in t True >>> t[0] 1 >>> t[0:2] (1, 2)
  • 元組的方法
運算 結果 s.index(x[, i[, j]]) x 在 s 中首次出現項的索引號(索引號在 i 或其后且在 j 之前) s.count(x) x 在 s 中出現的總次數

容器都是可迭代對象, 可以用for 語句來遍歷容器

for x in [1, 2, 3]:print(x)for y in (1, 2, 3):print(y)
  • 列表和元組的 +和 += 運算
# 列表(可變) >>> L1 = [1, 2, 3] + [4, 5, 6] >>> L2 = L1 # 兩個變量同時綁定同一個列表 >>> L2 += [7, 8, 9] >>> print(L1) # [1, 2, 3, 4, 5, 6, 7, 8, 9] >>> print(L2) # [1, 2, 3, 4, 5, 6, 7, 8, 9] # 元組(不可變) >>> T1 = (1, 2, 3) + (4, 5, 6) >>> T2 = T1 # 兩個變量同時綁定同一個元組 >>> T2 += (7, 8, 9) >>> print(T1) # (1,2, 3, 4, 5, 6) >>> print(T2) # (1, 2, 3, 4, 5, 6, 7, 8, 9)

字典 dict

  • 什么是字典

??????? -字典是一種可變的容器,可以存儲任意類型的數據

??????? -字典的數據都是以鍵(key)-值(value)對的形式進行映射存儲.

??????? -字典的數據是無序的

??????? -字典的鍵不能重復,且之能用不可變類型作為字典的鍵

??????? -字典中的數據只能用"鍵"key 進行索引,不能用整數進行索引

  • 創建字典的字面值:

字典的表示方式以? {} 括起來, 以英文的冒號 (:) 分隔鍵值對,各鍵值對之間用逗號(,)分隔

d = {} # 創建空字典 d = {'name': "weimingze", "age": 35} d = {'a': [1, 2, 3]} d = {'b': {"bb": 222}} d = {1:'壹', 2:'貳', 5:'伍'} d = {(1, 2, 3):'壹貳伍'}
  • 以下寫法會存在問題
d = {'a': 1, 'b': 2, 'a': 3} # 字典的鍵不能重復 d = {'a': 3, 'b': 2} d = {[1, 2, 3]: 'a'} # 不能用可變類型作為字典的鍵 # 報錯
  • dict 的創建函數 dict
d = dict() # d = {} d = dict([("name", "小明"), ("age", 35)]) # {'name': '小明', 'age': 35} d = dict(a=1, b=2, c=3) # {'a':1, 'b':2, 'c':3} d = dict([1, 2, 3, 4]) # 錯

注: python 中有四種可變類型

????????列表 list

????????字典dict

????????集合 set

????????字節數組 bytearray

persons = [{'name': 'weimz', 'age': 35},{'name': '小張', 'age': 18}, ]
  • 字典的鍵索引

語法

字典[鍵key]

用鍵索引可以查看字典中的數據

示例:

d = {'one': 1, 'two': 2} print(d['two'])
  • 添加和修改字典的元素

語法

字典[鍵key] = 表達式

????????鍵不存在, 會創建鍵并綁定鍵對應的值

????????鍵存在, 會改變鍵對應的值

示例:

d = {} d['name'] = 'tarena' # 添加鍵值對 d = {'name': 'tarena'} d['age'] = 18 # d = {'name': 'tarena', 'age': 18} d['age'] = 19 # 改變 'age' 鍵對應的值 d = {'name': 'tarena', 'age': 19}
  • 刪除 字典的元素

語法‘

del 字典[鍵]

示例:

>>> d = dict(a=1, b=2) # d = {'a': 1, 'b': 2} >>> del d['a'] >>> d {'b': 2}
  • in / not in? 運算符

?????????in 可以判斷一個鍵是否存在于字典中,如果存在返回 True, 否則返回 False

?????????not in 與 in? 相反

示例

>>> d = dict(a=1, b=2) # d = {'a': 1, 'b': 2} >>> 'a' in d True >>> 1 in d False >>> 'hello' not in d True
  • 字典是可迭代對象, 字典只能對所有的鍵進行迭代訪問
>>> d = {'name': 'tarena', 'age': 19} >>> for k in d: ... print(k) ... name age >>> for k in d: ... print("key=", k, 'value=', d[k]) ... key= name value= tarena key= age value= 19
  • 字典的常用方法
方法D代表字典 說明D D.clear() 清空字典 D.copy() 復制 D.get(key[, default]) 如果 key 存在于字典中則返回 key 的值,否則返回 default。 如果 default 未給出則默認為 None,因而此方法絕不會引發 KeyError。 D.pop(key) 移除鍵, 同時返回鍵對應的值

示例

>>> d = {'name': 'tarena', 'age': 19} >>> >>> d['age'] 19 >>> d['address'] Traceback (most recent call last):File "<stdin>", line 1, in <module> KeyError: 'address' >>> d.get('address', '未填寫住址') '未填寫住址' >>> d.get('age', 0) 19 >>> n = d.pop('name') >>> d { 'age': 19} >>> n 'tarena'

列表、元組、字典小結

列表和元組是有序的,字典的存儲是無序的

列表、字典是可變的,元組是不可變的

字典的鍵索引速度快,列表的整數索引速度快

列表和元組是順序存儲的,字典是散列存儲的

d = {'a':1, 'b':2, .........} print(d['c']) # 速度快 L = [7, 5, 1, ........] print(L[10009]) # 速度快

字典的 in / not in 運算符快于 列表的 in / not in 運算符

L = ['孫悟空', '趙云', '呂布', ...] if '王昭君' in L: # 速度慢pass D = {'孫悟空':'花果山', '趙云':'長山', '呂布':'石家莊', .....} if '王昭君' in D: # 速度快pass

集合 set/ 固定集合 frozenset

????????集合是可變的容器,固定集合是不可變的集合

????????集合相當于只有鍵沒有值的字典

????????集合是無序的存儲結構

????????集合內的數據都是唯一的,不可變

  • 創建集合的方式

????????空集合 set()

????????非空集合 用 {} 括起來,值用逗號分隔開

s = set() # 用函數空集合 s = {1, 2, 3, 4} # 創建非空集合的字面值 s = set(range(5)) # 調用 set(可迭代對象) 來創建集合 s = {0, 1, 2, 3, 4} s = set("ABC") # s = {'B', 'C', 'A'} s = set("ABCCCCCCC") # s = {'B', 'C', 'A'} s = set(['ABC']) # s = {'ABC'}
  • 創建固定集合frozensets的方式
fs = frozenset() # 空固定集合 fs = frozenset() fs = frozenset([1, 2, 3]) # fs = frozenset({1, 2, 3})

集合和固定集合的運算

  • in/ not in 運算符 與列表相同
  • 其他運算
& 交集 | 并集 - 補集 ^ 對稱補集 < 子集 > 超集

示例

s1 = {1, 2, 3} s2 = {2, 3, 4} s3 = s1 & s2 # s3 = {2, 3} # 交集 s4 = s1 | s2 # s4 = {1, 2, 3, 4 } 并集 s5 = s1 - s2 # s5 = {1} 補集 s6 = s1 ^ s2 # s6 = {1, 4} # 對稱補集 s7 = {1, 2} < {1, 2, 3} # s7 = True s8 = {1, 2} > {1, 2, 3} # s8 = False s9 = {4, 5, 6, 7} > {5, 6} # {4, 5, 6, 7} 是 {5, 6} 的超集
  • 集合set的方法
方法 說明 S.add(e) 添加e S.remove(e) 刪除e S.clear() 清空集合 S.pop() 移除一個并返回,如果集合為空則觸發ValueError

容器總結

  • 可變和不可變

????????????????可變的容器

list dict set bytearray(字節數組)

????????????????不可變得容器

tuple, frozenset, bytes(字節串)
  • 序和亂序

????????????????有序

list tuple bytes bytearray

????????????????無序

dict set frozenset

總結

以上是生活随笔為你收集整理的《《python基础》》的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。