一、循環和分支
1. 條件分支語句
if 條件:
代碼塊
else:
代碼塊
2. 循環語句之while
思考1:求1+2+3+....+10的值
sum = 0 num = 1 while num < 101: sum += num num += 1 print(sum)
for 循環
for 語句:
代碼塊
二、字符串操作
1.字符串的拼接
使用加號進行鏈接
#字符串的鏈接,通過“+”進行鏈接 s1 = 'welcome' s2 = 'to guangzhou' print(s1 + s2)
使用“,‘進行鏈接
s1 = 'hello' s2 = 'world' print(s1, s2) #使用“,”鏈接的時候,在“,”的位置會產生一個空格
使用%格式化鏈接
s1 = 'hello' s2 = 'world' print("%s %s"%(s1, s2))
使用join函數進行鏈接
s1 = ['hello', 'world'] print("".join(s1))
注意:''.join*()函數內部只需要傳遞一個參數。
2.重復輸出字符串
#重復輸出字符串,通過乘法的方式實現 s3 = 'good' print(s3 * 3)
3.獲取字符串中的字符
#通過索引的方式實現 #索引:給一個字符串中的字符從0開始編號,也成為下標 #索引的取值范圍:[0,str.length-1] #訪問方式: 變量名稱[索引] str3 = 'good' print(str3[0]) #索引值還可以從-1開始,-1代表倒數第一個字符 print(str3[-1])
4.截取字符串
#通過索引的方式實現 #索引:給一個字符串中的字符從0開始編號,也成為下標 #索引的取值范圍:[0,str.length-1] #訪問方式: 變量名稱[索引] str3 = 'good' print(str3[0]) #索引值還可以從-1開始,-1代表倒數第一個字符 print(str3[-1])
5.判斷是否包含指定字符
#判斷字符串中是否包含某指定字符串 str4 = "you are a good boy" print("good" in str4) #若包含有則返回True否則為False
6.格式化輸出
#通過%來改變后面的字母或者是符號的含義,%被稱為占位符 # %s:格式化字符串 # %d:格式化整數 # %f:格式化浮點數,可指定小數點后的精度 age = 18 name = "麗麗" weight = 45.5 print("my name is %s , I am %d year old and my weight is %.2f kg"%(name, age, weight)) #注意:%.nf表示精確到小數點后n位,會四舍五入
三、關於字符串常用函數
1.eval(str)
功能:將字符串str當成有效的表達式來求值並返回計算結果。可以把list,tuple,dict,set和string相互轉化
>>>num1 = eval('123') >>>print(num1) 123 >>>num2 = eval("[1, 2, 3]") >>>print(num2) [1, 2, 3] >>> num3 = eval("12-3") >>> print(num3) 9
2.len(str)
功能:返回當前字符串的長度(字符的個數)
>>> len("you are good") 12
3.str.lower()
功能:返回一個把字符串中的大寫字母轉為小寫字母的字符串
>>> str = "Hello World" >>> print(str.lower()) hello world
4.str.upper()
功能:返回一個把字符串中的小寫字母轉換為大寫字母的字符串
>>> str = "Hello World" >>> print(str.upper()) HELLO WORLD
5.str.swapcase()
功能:返回一個把字符串中的大寫字母轉為小寫字母,小寫字母轉為大寫字母的字符串(字符串大小寫反轉)
>>> str = "Hello World" >>> print(str.swapcase()) hELLO wORLD
6.str.capitalize()
功能:返回一個首字母大寫,其他小寫的字符串
>>> str = "Hello World" >>> print(str.capitalize()) Hello world
7.str.title()
功能:返回一個每個單詞首字母大寫的字符串
>>> str = "Hello World" >>> print(str.title()) Hello World
8.str.center(width[,fillchar])
功能:返回一個指定寬度的居中字符串,fillchar為填充字符
>>> str = "Hello World" >>> print(str.center(50,"*")) *******************Hello World********************
9.str.ljust(width[,fillchar])
功能:返回一個指定寬度的左對齊字符串,fillchar為填充字符。默認使用空格填充
>>> str = "Hello World" >>> print(str.ljust(50,"*")) Hello World***************************************
10.str.rjust(width[,fillchar])
功能:返回一個指定寬度的左對齊字符串,fillchar為填充字符。默認使用空格填充
>>> str = "Hello World" >>> print(str.rjust(50,"*")) ***************************************Hello World
11.str.zfill(width)
功能:返回一個長度為width字符串,原字符串右對齊,前面補0
>>> str = "Hello World" >>> print(str.zfill(50)) 000000000000000000000000000000000000000Hello World
12.str.count(str[ ,strat][,end])
功能:返回字符串中str出現的次數,可以指定一個范圍,若不指定,則默認從頭到尾,匹配的時候是區分大小寫的
>>> str = "Hello World" >>> print(str.count("hello", 0 , 10)) 0
13.str.find(str1[,start],[,end])
功能:從左右右檢測str1字符串是否包含字符串中,可以指定范圍,默認從頭到尾。
返回的是第一次出現的下標,若未查詢到,則返回-1
>>> str = "Hello World" >>> str1 = "llo" >>> print(str.find(str1, 0 , 10)) 2
14.str.rfind(str1[,start][,end])
功能:類似於str.find(),不過是從右邊開始查找
>>> str = "Hello World" >>> str1 = "llo" >>> print(str.rfind(str1, 0 , 10)) 2
15.str.index(str1[strat=0],[end = len(str)])
功能類似於find(),與find()不同的是,如果str1不存在的時候會報一個異常
>>> str2 = "Hello World" >>> str1 = "hello" >>> print(str2.index(str1, 0 , 10)) ValueError: substring not found
16.str.lstrip()
功能:截掉字符串左側指定的字符串,默認刪除空白符(包括'\n','\r','\t',' ')
>>> str = '**** you are very good' >>> print(str.lstrip()) >>> print(str.lstrip()) **** you are very good >>> print(str.lstrip("*")) you are very good
17,str.rstrip()
功能:截掉字符串右側指定的字符串,則默認刪除空白符(包括'\n','\r','\t',' ')
>>> str = '**** you are good****' >>> print(str.rstrip()) **** you are good**** >>> print(str.rstrip("*")) **** you are good
18.str.strip()
功能:截掉字符串左右兩側指定的字符串,則默認刪除空白符(包括'\n','\r','\t',' ')
>>> str1 = " hello world " >>> str1.strip() 'hello world'
19.string.split(str = '',num=string.count(str))
功能:以str為分割符切片string,如果num有指定值,則僅分割num個子字符串
str--分割符,默認為所有的空字符,包括空格、換行(\n)、制表符(\t)等。num--分割次數
>>> str1 = "hello you are good" >>> str1.split() ['hello', 'you', 'are', 'good'] >>> str1.split(" ",2) ['hello', 'you', 'are good ']
20. str1.splitlines([keepends])
功能:字符串會按照行(’\r‘,'\r\n','\n')進行分割,返回一個包含各行作為元素的列表,如果參數keepends的值為False,不包含換行符,如果為True,則保留換行符
str2 = '''how are you ? i am fine ! ''' list2 = str2.splitlines() print(list2) #結果 ['how are', 'you ?', 'i am', 'fine', '!'] str2 = '''how are you ? i am fine ! ''' list2 = str2.splitlines(keepends=True) print(list2) #結果 ['how are\n', 'you ?\n', 'i am\n', 'fine\n', '!\n']
21.str1.join(seq)
功能:以指定字符串作為分隔符,將seq中的所有元素合並成為一個新的字符串
list2 = ['you', 'are', 'very', 'great', '!'] str3 = ' '.join(list2) print(str3) #結果 you are very great ! str1 = "how are you , i am fine thank you" str3 = "*".join(str1) print(str3) #結果 h*o*w* *a*r*e* *y*o*u* *,* *i* *a*m* *f*i*n*e* *t*h*a*n*k* *y*o*u
注意:如果連接的是字符串,則它會把字符串中的每個字符使用指定字符連接
22.replace(old,new[,count])
功能:將字符串中的old替換成new,若不指定count,則默認全部替換,若指定count,則替換前count個
str1 = "how are you , i am fine thank you" str2 = str1.replace("you" ,'me') print(str2) #結果 how are me , i am fine thank me
23.判斷字符串的開頭結尾
str.startswith(str1,strat = 0, end = len(str))
功能:在給定的范圍內判斷字符串是否以給定的字符串開頭,如果沒有指定范圍,默認整個字符串
str1 = "aaa bbb ccc deee" print(str1.startswith("aa")) #結果 True str1 = "aaa bbb ccc deee" print(str1.startswith("aa", 3, 9)) #結果 False
24.str.endswith(str1,strat = 0, end = len(str))
功能:在給定的范圍內判斷字符串是否以給定的字符串結尾,如果沒有指定范圍,默認整個字符串
str1 = "aaa bbb ccc deee" print(str1.endswith("e")) #結果 True str1 = "aaa bbb ccc deee" print(str1.endswith("e", 3 ,9)) #結果 False
25.編碼與解碼
str.encode(encoding = 'utf-8',errors = 'scrict')
功能:字符串的編碼,若不指定encoding則默認utf-8
str1 = "你好嗎?" data = str1.encode() print(data) print(type(data)) #結果 b'\xe4\xbd\xa0\xe5\xa5\xbd\xe5\x90\x97\xef\xbc\x9f' <class 'bytes'>
str.decode(encoding = 'utf-8')
功能:對字符進行解碼,若不指定編碼格式,則默認選擇utf-8
str1 = "你好嗎?" data = str1.encode() print(data) print(type(data)) data2 = data.decode() print(data2) print(type(data2)) #結果 b'\xe4\xbd\xa0\xe5\xa5\xbd\xe5\x90\x97\xef\xbc\x9f' <class 'bytes'> 你好嗎? <class 'str'>
注意:解碼時的編碼格式要與編碼時的保持一致,
拓展:errors= ingnore的時候,忽略錯誤
練習:
1.計算1~100以內所有能被3或者17整除的數的和 2.計算100-999的水仙花數的個數。 3.計算200~500以內能被7整除但不是偶數的數的個數。 4.押寶游戲: 開始游戲 -> 投入賭金【一次性投入】 -> 循環 :押寶【5塊錢一次】 -> 開獎 --》中獎/未中獎 --》用戶輸入是否繼續 【當余額為0則自動退出游戲】 5.百錢買百雞,現有100文錢,公雞5文錢一只,母雞3文錢一只,小雞一文錢3只,要求:公雞,母雞,小雞都要有,買100只雞,把100文錢花完,買的雞是整數。多少只公雞,多少只母雞多少只小雞?