Python的語言基礎總結(二)之循環與字符串操作


一、循環和分支

  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文錢花完,買的雞是整數。多少只公雞,多少只母雞多少只小雞?

 

 

 

 

  

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM