程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

3.3python基礎03

編輯:Python

文章目錄

  • 四、字符串常用操作方法:
    • 4.1 len():獲取字符串長度或字節數
    • 4.2split():分割字符串
    • 4.3join()方法:合並字符串
    • 4.4 count()方法:統計字符串出現的次數
    • 4.5 find()方法:檢測字符串中是否包含某子串
    • 4.6index()方法:檢測字符串中是否包含某子串
    • 4.7 startswith()和endswith()方法
      • startswith()方法
      • endswith()方法
    • 4.8 字符串大小寫轉換
      • title()方法
      • lower()方法
      • upper()方法
    • 4.9 strip:去除字符串中空格
    • 4.10 replace()字符串替換
    • 4.11 format()格式化輸出
    • 五、常用的內置函數使用:
  • 六、流程控制
    • 6.1 if 語句
      • 6.1.1 if else條件語句詳解
    • 6.1.2 if else 如何判斷表達式是否成立
    • 6.1.3if語句嵌套
    • 6.1.4 pass語句
    • 6.1.5 assert斷言函數
    • 6.2 while循環語句
      • 6.2.1 while循環語句詳解
    • 6.3for循環
    • 6.4 break用法詳解
    • 6.5 continue的用法

四、字符串常用操作方法:

4.1 len():獲取字符串長度或字節數

len 函數的基本語法格式為:

len(string)

其中 string 用於指定要進行長度統計的字符串。

例如,定義一個字符串,內容為“http://c.biancheng.net”,然後用 len() 函數計算該字符串的長度,執行代碼如下:

>>> a='http://c.biancheng.net'
>>> len(a)
22

4.2split():分割字符串

split() 方法可以實現將一個字符串按照指定的分隔符切分成多個子串,這些子串會被保存到列表中(不包含分隔符),作為方法的返回值反饋回來。該方法的基本語法格式如下:

str.split(sep,maxsplit)

此方法中各部分參數的含義分別是:

  • str:表示要進行分割的字符串;
  • sep:用於指定分隔符,可以包含多個字符。此參數默認為 None,表示所有空字符,包括空格、換行符“\n”、制表符“\t”等。
  • maxsplit:可選參數,用於指定分割的次數,最後列表中子串的個數最多為 maxsplit+1。如果不指定或者指定為 -1,則表示分割次數沒有限制。
>>> str = "C語言中文網 >>> c.biancheng.net"
>>> str
'C語言中文網 >>> c.biancheng.net'
>>> list1 = str.split() #采用默認分隔符進行分割
>>> list1
['C語言中文網', '>>>', 'c.biancheng.net']
>>> list2 = str.split('>>>') #采用多個字符進行分割
>>> list2
['C語言中文網 ', ' c.biancheng.net']
>>> list3 = str.split('.') #采用 . 號進行分割
>>> list3
['C語言中文網 >>> c', 'biancheng', 'net']
>>> list4 = str.split(' ',4) #采用空格進行分割,並規定最多只能分割成 4 個子串
>>> list4
['C語言中文網', '>>>', 'c.biancheng.net']
>>> list5 = str.split('>') #采用 > 字符進行分割
>>> list5
['C語言中文網 ', '', '', ' c.biancheng.net']
>>>

需要注意的是,在未指定 sep 參數時,split() 方法默認采用空字符進行分割,但當字符串中有連續的空格或其他空字符時,都會被視為一個分隔符對字符串進行分割,例如:

>>> str = "C語言中文網 >>> c.biancheng.net" #包含 3 個連續的空格
>>> list6 = str.split()
>>> list6
['C語言中文網', '>>>', 'c.biancheng.net']
>>>

4.3join()方法:合並字符串

join() 方法也是非常重要的字符串方法,它是 split() 方法的逆方法,用來將列表(或元組)中包含的多個字符串連接成一個字符串。

join() 方法的語法格式如下:

newstr = str.join(iterable)

此方法中各參數的含義如下:

  • newstr:表示合並後生成的新字符串;
  • str:用於指定合並時的分隔符;
  • iterable:做合並操作的源字符串數據,允許以列表、元組等形式提供。

【例 1】將列表中的字符串合並成一個字符串。

>>> list = ['c','biancheng','net']
>>> '.'.join(list)
'c.biancheng.net'

【例 2】將元組中的字符串合並成一個字符串。

>>> dir = '','usr','bin','env'
>>> type(dir)
<class 'tuple'>
>>> '/'.join(dir)
'/usr/bin/env'

4.4 count()方法:統計字符串出現的次數

count 方法用於檢索指定字符串在另一字符串中出現的次數,如果檢索的字符串不存在,則返回 0,否則返回出現的次數。

count 方法的語法格式如下:

str.count(sub[,start[,end]])

此方法中,各參數的具體含義如下:

  • str:表示原字符串;
  • sub:表示要檢索的字符串;
  • start:指定檢索的起始位置,也就是從什麼位置開始檢測。如果不指定,默認從頭開始檢索;
  • end:指定檢索的終止位置,如果不指定,則表示一直檢索到結尾。

【例 1】檢索字符串“c.biancheng.net”中“.”出現的次數。

>>> str = "c.biancheng.net"
>>> str.count('.')
2

【例 2】

>>> str = "c.biancheng.net"
>>> str.count('.',1)
2
>>> str.count('.',2)
1

前面講過,字符串中各字符對應的檢索值,從 0 開始,因此,本例中檢索值 1 對應的是第 2 個字符‘.’,從輸出結果可以分析出,從指定索引位置開始檢索,其中也包含此索引位置。

【例 3】

>>> str = "c.biancheng.net"
>>> str.count('.',2,-3)
1
>>> str.count('.',2,-4)
0

4.5 find()方法:檢測字符串中是否包含某子串

find() 方法用於檢索字符串中是否包含目標字符串,如果包含,則返回第一次出現該字符串的索引;反之,則返回 -1。

find() 方法的語法格式如下:

str.find(sub[,start[,end]])

此格式中各參數的含義如下:

  • str:表示原字符串;
  • sub:表示要檢索的目標字符串;
  • start:表示開始檢索的起始位置。如果不指定,則默認從頭開始檢索;
  • end:表示結束檢索的結束位置。如果不指定,則默認一直檢索到結尾。

【例 1】用 find() 方法檢索 “c.biancheng.net” 中首次出現 “.” 的位置索引。

>>> str = "c.biancheng.net"
>>> str.find('.')
1

【例 2】手動指定起始索引的位置。

>>> str = "c.biancheng.net"
>>> str.find('.',2)
11

【例 3】手動指定起始索引和結束索引的位置。

>>> str = "c.biancheng.net"
>>> str.find('.',2,-4)
-1

位於索引(2,-4)之間的字符串為“biancheng”,由於其不包含“.”,因此 find() 方法的返回值為 -1。

4.6index()方法:檢測字符串中是否包含某子串

同 find() 方法類似,index() 方法也可以用於檢索是否包含指定的字符串,不同之處在於,當指定的字符串不存在時,index() 方法會拋出異常。

index() 方法的語法格式如下:

str.index(sub[,start[,end]])

此格式中各參數的含義分別是:

  • str:表示原字符串;
  • sub:表示要檢索的子字符串;
  • start:表示檢索開始的起始位置,如果不指定,默認從頭開始檢索;
  • end:表示檢索的結束位置,如果不指定,默認一直檢索到結尾。

【例 1】用 index() 方法檢索“c.biancheng.net”中首次出現“.”的位置索引。

>>> str = "c.biancheng.net"
>>> str.index('.')
1

【例 2】當檢索失敗時,index()會拋出異常。

>>> str = "c.biancheng.net"
>>> str.index('z')
Traceback (most recent call last):
File "<pyshell#49>", line 1, in <module>
str.index('z')
ValueError: substring not found

4.7 startswith()和endswith()方法

startswith()方法

startswith() 方法用於檢索字符串是否以指定字符串開頭,如果是返回 True;反之返回 False。此方法的語法格式如下:

str.startswith(sub[,start[,end]])

此格式中各個參數的具體含義如下:

  • str:表示原字符串;
  • sub:要檢索的子串;
  • start:指定檢索開始的起始位置索引,如果不指定,則默認從頭開始檢索;
  • end:指定檢索的結束位置索引,如果不指定,則默認一直檢索在結束。

【例 1】判斷“c.biancheng.net”是否以“c”子串開頭。

>>> str = "c.biancheng.net"
>>> str.startswith("c")
True

【例 2】

>>> str = "c.biancheng.net"
>>> str.startswith("http")
False

【例 3】從指定位置開始檢索。

>>> str = "c.biancheng.net"
>>> str.startswith("b",2)
True

endswith()方法

endswith() 方法用於檢索字符串是否以指定字符串結尾,如果是則返回 True;反之則返回 False。該方法的語法格式如下:

str.endswith(sub[,start[,end]])

此格式中各參數的含義如下:

  • str:表示原字符串;
  • sub:表示要檢索的字符串;
  • start:指定檢索開始時的起始位置索引(字符串第一個字符對應的索引值為 0),如果不指定,默認從頭開始檢索。
  • end:指定檢索的結束位置索引,如果不指定,默認一直檢索到結束。

【例 4】檢索“c.biancheng.net”是否以“net”結束。

>>> str = "c.biancheng.net"
>>> str.endswith("net")
True

4.8 字符串大小寫轉換

title()方法

title() 方法用於將字符串中每個單詞的首字母轉為大寫,其他字母全部轉為小寫,轉換完成後,此方法會返回轉換得到的字符串。如果字符串中沒有需要被轉換的字符,此方法會將字符串原封不動地返回。

title() 方法的語法格式如下:

str.title()

其中,str 表示要進行轉換的字符串。

【例 1】

>>> str = "c.biancheng.net"
>>> str.title()
'C.Biancheng.Net'
>>> str = "I LIKE C"
>>> str.title()
'I Like C'

lower()方法

lower() 方法用於將字符串中的所有大寫字母轉換為小寫字母,轉換完成後,該方法會返回新得到的字符串。如果字符串中原本就都是小寫字母,則該方法會返回原字符串。

lower() 方法的語法格式如下:

str.lower()

其中,str 表示要進行轉換的字符串。

【例 2】

>>> str = "I LIKE C"
>>> str.lower()
'i like c'

upper()方法

upper() 的功能和 lower() 方法恰好相反,它用於將字符串中的所有小寫字母轉換為大寫字母,和以上兩種方法的返回方式相同,即如果轉換成功,則返回新字符串;反之,則返回原字符串

upper() 方法的語法格式如下:

str.upper()

其中,str 表示要進行轉換的字符串。

【例 3】

>>> str = "i like C"
>>> str.upper()
'I LIKE C'

4.9 strip:去除字符串中空格

strip() 方法用於刪除字符串左右兩個的空格和特殊字符,該方法的語法格式為:

str.strip([chars])

其中,str 表示原字符串,[chars] 用來指定要刪除的字符,可以同時指定多個,如果不手動指定,則默認會刪除空格以及制表符、回車符、換行符等特殊字符。

【例 1】

>>> str = " c.biancheng.net \t\n\r"
>>> str.strip()
'c.biancheng.net'
>>> str.strip(" ,\r")
'c.biancheng.net \t\n'
>>> str
' c.biancheng.net \t\n\r'

分析運行結果不難看出,通過 strip() 確實能夠刪除字符串左右兩側的空格和特殊字符,但並沒有真正改變字符串本身。

4.10 replace()字符串替換

replace() 方法用另一個指定的短語替換一個指定的短語。

string.replace(oldvalue, newvalue, count)

此格式中各參數的含義如下:

  • oldvalue 必需。要檢索的字符串。
  • newvalue 必需。替換舊值的字符串。
  • count 可選。數字,指定要替換的舊值出現次數。默認為所有的出現。

實例:替換所有出現的單詞 “one”:

txt = "one one was a race horse, two two was one too."
x = txt.replace("one", "three")
print(x)

實例:替換前兩次出現的單詞 “one”:

txt = "one one was a race horse, two two was one too."
x = txt.replace("one", "three", 2)
print(x)

注意:可以用replace(’ ‘,’')來去掉字符串裡的所有空格

4.11 format()格式化輸出

前面章節介紹了如何使用 % 操作符對各種類型的數據進行格式化輸出,這是早期 Python 提供的方法。自 Python 2.6 版本開始,字符串類型(str)提供了 format() 方法對字符串進行格式化,本節就來學習此方法。

format() 方法的語法格式如下:

str.format(args)

此方法中,str 用於指定字符串的顯示樣式;args 用於指定要進行格式轉換的項,如果有多項,之間有逗號進行分割。

str="網站名稱:{}網址:{}"
print(str.format("C語言中文網","c.biancheng.net"))

五、常用的內置函數使用:

https://m.php.cn/article/471822.html

  • reversed:反轉序列生成新的可迭代對象
>>> a = reversed(range(10)) # 傳入range對象
>>> a # 類型變成迭代器
<range_iterator object at 0x035634E8>
>>> list(a)
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
  • sorted:對可迭代對象進行排序,返回一個新的列表
>>> a = ['a','b','d','c','B','A']
>>> a
['a', 'b', 'd', 'c', 'B', 'A']
>>> sorted(a) # 默認按字符ascii碼排序
['A', 'B', 'a', 'b', 'c', 'd']
>>> sorted(a,key = str.lower) # 轉換成小寫後再排序,'a'和'A'值一樣,'b'和'B'值一樣
['a', 'A', 'b', 'B', 'c', 'd']
  • zip:聚合傳入的每個迭代器中相同位置的元素,返回一個新的元組類型迭代器
>>> x = [1,2,3] #長度3
>>> y = [4,5,6,7,8] #長度5
>>> list(zip(x,y)) # 取最小長度3
[(1, 4), (2, 5), (3, 6)]
  • dir() 函數

返回對象或者當前作用域內的屬性列表

dir(obj)

obj 表示要查看的對象。obj 可以不寫,此時 dir() 會列出當前范圍內的變量、方法和定義的類型。

>>> import math
>>> math
<module 'math' (built-in)>
>>> dir(math)
['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'copysign', 'cos', 'cosh', 'degrees', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'trunc']
  • help() 函數

用來查看某個函數或者模塊的幫助文檔,它的用法為:

help(obj)

obj 表示要查看的對象。obj 可以不寫,此時 help() 會進入幫助子程序。

  • id:返回對象的唯一標識符
>>> a = 'some text'
>>> id(a)
69228568
  • type:返回對象的類型,或者根據傳入的參數創建一個新的類型
>>> type(1) # 返回對象的類型
<class 'int'>
  • len:返回對象的長度
>>> len('abcd') # 字符串
>>> len(bytes('abcd','utf-8')) # 字節數組
>>> len((1,2,3,4)) # 元組
>>> len([1,2,3,4]) # 列表
>>> len(range(1,5)) # range對象
>>> len({
'a':1,'b':2,'c':3,'d':4}) # 字典
>>> len({
'a','b','c','d'}) # 集合
>>> len(frozenset('abcd')) #不可變集合

六、流程控制

6.1 if 語句

6.1.1 if else條件語句詳解

Python 中的 if else 語句可以細分為三種形式,分別是 if 語句、if else 語句和 if elif else 語句,它們的語法和執行流程如表1所示。

#【實例1】使用第一種選擇結構判斷用戶是否符合條件:
age = int( input("請輸入你的年齡:") )
if age < 18 :
print("你還未成年,建議在家人陪同下使用該軟件!")
print("如果你已經得到了家長的同意,請忽略以上提示。")
#該語句不屬於if的代碼塊
print("軟件正在使用中...")
#【實例2】改進上面的代碼,年齡不符合時退出程序:
import sys
age = int( input("請輸入你的年齡:") )
if age < 18 :
print("警告:你還未成年,不能使用該軟件!")
print("未成年人應該好好學習,讀個好大學,報效祖國。")
sys.exit()
else:
print("你已經成年,可以使用該軟件。")
print("時間寶貴,請不要在該軟件上浪費太多時間。")
print("軟件正在使用中...")
#【實例3】判斷一個人的身材是否合理:
height = float(input("輸入身高(米):"))
weight = float(input("輸入體重(千克):"))
bmi = weight / (height * height) #計算BMI指數
if bmi<18.5:
print("BMI指數為:"+str(bmi))
print("體重過輕")
elif bmi>=18.5 and bmi<24.9:
print("BMI指數為:"+str(bmi))
print("正常范圍,注意保持")
elif bmi>=24.9 and bmi<29.9:
print("BMI指數為:"+str(bmi))
print("體重過重")
else:
print("BMI指數為:"+str(bmi))
print("肥胖")
會從上到下逐個判斷表達式是否成立,一旦遇到某個成立的表達式,就執行後面緊跟的語句塊;
剩下的代碼就不再執行了,不管後面的表達式是否成立。

6.1.2 if else 如何判斷表達式是否成立

布爾類型(bool)只有兩個值,分別是 True 和 False,Python 會把 True 當做“真”,把 False 當做“假”。

對於數字,Python 會把 0 和 0.0 當做“假”,把其它值當做“真”。

對於其它類型,當對象為空或者為 None 時,Python 會把它們當做“假”,其它情況當做真

下面的表達式會把它們當做“假”:

"" #空字符串
[ ] #空列表
( ) #空元組
{
 } #空字典
None #空值
b = False
if b:
print('b是True')
else:
print('b是False')
n = 0
if n:
print('n不是零值')
else:
print('n是零值')
s = ""
if s:
print('s不是空字符串')
else:
print('s是空字符串')
l = []
if l:
print('l不是空列表')
else:
print('l是空列表')
d = {
}
if d:
print('d不是空字典')
else:
print('d是空字典')
if None:
print('不為空')
else:
print('為空')

6.1.3if語句嵌套

Python 是以縮進來標記代碼塊的,代碼塊一定要有縮進,沒有縮進的不是代碼塊。另外,同一個代碼塊的縮進量要相同,縮進量不同的不屬於同一個代碼塊。

通過縮進,在相互嵌套時,查看邏輯關系。

proof = int(input("輸入駕駛員每 100ml 血液酒精的含量:"))
if proof < 20:
print("駕駛員不構成酒駕")
else:
if proof < 80:
print("駕駛員已構成酒駕")
else:
print("駕駛員已構成醉駕")

6.1.4 pass語句

pass 是 Python 中的關鍵字,用來讓解釋器跳過此處,什麼都不做。

age = int( input("請輸入你的年齡:") )
if age < 12 :
print("嬰幼兒")
elif age >= 12 and age < 18:
print("青少年")
elif age >= 18 and age < 30:
print("成年人")
elif age >= 30 and age < 50:
pass
else:
print("老年人")

6.1.5 assert斷言函數

assert 語句,又稱斷言語句,可以看做是功能縮小版的 if 語句,它用於判斷某個表達式的值,如果值為真,則程序可以繼續往下執行;反之,Python 解釋器會報 AssertionError 錯誤。

mathmark = int(input())
#斷言數學考試分數是否位於正常范圍內
assert 0 <= mathmark <= 100
#只有當 mathmark 位於 [0,100]范圍內,程序才會繼續執行
print("數學考試分數為:",mathmark)

6.2 while循環語句

6.2.1 while循環語句詳解

while 循環和 if 條件分支語句類似,即在條件(表達式)為真的情況下,會執行相應的代碼塊。不同之處在於,只要條件為真,while 就會一直重復執行那段代碼塊。

# 循環的初始化條件
num = 1
# 當 num 小於100時,會一直執行循環體
while num < 100 :
print("num=", num)
# 迭代語句
num += 1
print("循環結束!")

6.3for循環

add = "http://c.biancheng.net/python/"
#for循環,遍歷 add 字符串
for ch in add:
print(ch,end="")
##for 循環進行數值循環
print("計算 1+2+...+100 的結果為:")
#保存累加結果的變量
result = 0
#逐個獲取從 1 到 100 這些值,並做累加操作
for i in range(101):
result += i
print(result)
##for循環遍歷列表和元組
my_list = [1,2,3,4,5]
for ele in my_list:
print('ele =', ele)
##for 循環遍歷字典
my_dic = {
'python教程':"http://c.biancheng.net/python/",\
'shell教程':"http://c.biancheng.net/shell/",\
'java教程':"http://c.biancheng.net/java/"}
for ele in my_dic:
print('ele =', ele)

6.4 break用法詳解

break 語句可以立即終止當前循環的執行,跳出當前所在的循環結構。無論是 while 循環還是 for 循環,只要執行 break 語句,就會直接結束當前正在執行的循環體

add = "http://c.biancheng.net/python/,http://c.biancheng.net/shell/"
# 一個簡單的for循環
for i in add:
if i == ',' :
#終止循環
break
print(i,end="")
print("\n執行循環體外的代碼")

6.5 continue的用法

和 break 語句相比,continue 語句的作用則沒有那麼強大,它只會終止執行本次循環中剩下的代碼,直接從下一次循環繼續執行。

add = "http://c.biancheng.net/python/,http://c.biancheng.net/shell/"
# 一個簡單的for循環
for i in add:
if i == ',' :
# 忽略本次循環的剩下語句
print('\n')
continue
print(i,end="")

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved