1.格式字符串:
在字符串中通過格式占位符來表示字符串中的變化部分
1.1語法:
包含格式占位符的字符%(給格式占位賦值的數(shù)據(jù)列表)
1.2說明:
格式占位符:%s - 字符串
%d - 整數(shù)
%.nf - 浮點(diǎn)數(shù),n可以約束小數(shù)點(diǎn)后面的小數(shù)位數(shù)(正整數(shù))
%c - 字符,可以將整數(shù)轉(zhuǎn)換為字符
# name = input('姓名:')
# age = int(input("age:"))
# print('%s今年%d歲' % (name, age))
2.常用對象方法
2.1 字符串1.count(字符串2)
- 字符串1.count(字符串2)
統(tǒng)計(jì)字符串2 在字符串1中出現(xiàn)的次數(shù)
str1 = 'and you? how are you!'
print(str1.count('a'))
# 練習(xí):打印字符串中出現(xiàn)次數(shù)最多的字符和次數(shù)
# 'how are you?oh' 打印: o 3次
str1 = 'how are you?oh'
max_conut = 0 #保存當(dāng)前最大次數(shù)
max_char = '' #保存當(dāng)前最大次數(shù)對應(yīng)的字符
for char in str1:
if str1.count(char) > max_conut :# 獲取字符出現(xiàn)的次數(shù),如果次數(shù)大于當(dāng)前最大次數(shù),更新最大次數(shù)和字符
max_conut = str1.count(char)
max_char = char
print('%s出現(xiàn)%d次'%(max_char , max_conut))
2.2字符串1.find(字符串2)
- 字符串1.find(字符串2)
在字符串1中查找字符串2 第一次出現(xiàn)的位置,如果找不到返回-1,找到了返回第一個字符的下標(biāo) - 字符串1.find(字符串2,開始下標(biāo),結(jié)束下標(biāo))
在字符串1中的開始下標(biāo)到結(jié)束下標(biāo)查找字符串2 第一次出現(xiàn)的位置
print(str1.find('you'))
print(str1.find('you', -8, -1))
# 練習(xí) :在字符串中'and you? how are you! you' ,找到所有'you'出現(xiàn)的下標(biāo).打印:4,17,22
str1 = 'and you? how are you! you'
count = str1.find('you')
while True:
print(count, ',', end=' ')
count = str1.find('you', count + 1,)
if count == -1:
break
print()
2.2.1 字符串1.index
- index 功能和find一樣,只是如果字符串2不存在的時候回報(bào)錯
print(str1.index('you2'))
2.3字符串1.isdigit
- 判斷字符串1中是否只有數(shù)字字符
print('83'.isdigit())
2.4 字符串1.isnumeric()
- 判斷字符串1是否是數(shù)字字符串(可以檢查中文數(shù)字)
print('壹仟'.isnumeric())
2.5字符串1.join(序列)
- 將序列中的元素用字符串1鏈接在一起產(chǎn)生一個新的字符串
print('*'.join('abc'))
print('+'.join(['me', 'you', 'he']))
- 練習(xí): 自己實(shí)現(xiàn)join的功能,給字符串1,和字符串2,用字符串1將字符串2中的所有的字符串連接起來
- 例如 : str1 = 'aaa', str2 = '123' .輸出:'1aaa2aaa3'
tr1, str2 = 'aaa', '123'
nuw_str = ''
for index in range(len(str2)):
if index == len(str2) - 1:
nuw_str += str2[index]
else:
nuw_str += str2[index] + str1
print(nuw_str)
str2 = 'ag23bsh2390s'
str1 = '+'
str3 = ''
for char in str2:
if '0' <= char <= '9':
str3 += char + str1
print(str3[:-len(str1)])
2.6 max(序列),min(序列) - 求序列中元素的最大值和最小值
print(max('ahfaehfkaheaz'))
print(min('ahahfka'))
print(min([120, 2, 9, 99, -10]))
print('afaweffafe'.replace('a','A',3))
2.7 字符串1.split(字符串2) - 在字符串1中把字符串2作為切點(diǎn),將字符串1切割
print('afaweffafewarawerr2rgehjutre'.split('w'))
3. 列表
3.1 什么時候用列表
需要用一個變量去同時保存多個數(shù)據(jù)
3.2什么是列表(list)
列表是python內(nèi)置的容器型數(shù)據(jù)類型(序列),
可變(說明支持增刪改)并且有序(支持下標(biāo)操作)
用[]將多個元素括起來,多個元素之間用','隔開:[元素1,元素2,元素3...]
3.3 列表中的元素:
python內(nèi)置的數(shù)據(jù)類型對應(yīng)的數(shù)據(jù),或者是程序員自定義類型的數(shù)據(jù)都可以:
不同元素的類型可以不一樣
賦值運(yùn)算表達(dá)式不能作為列表元素,其他的都可以
list1 = [120, 12.9, True, 'abc', [1, 23], {'a':10}, lambda x: x*10]
print(list1)
num1 = 10
list2 = [num1, 100 + 200, 20 > num1]
練習(xí):
將班級學(xué)生的成績保存到score中,求班級的平均成績,和不及格人數(shù)
scores = [90, 80,70, 100, 76, 57, 54]
num1 = 0 #不及格人數(shù)
num2 = 0 #總成績
for index in range(len(scores)):
num2 += scores[index]
if scores[index] < 60:
num1 += 1
print('平均成績是:%.2f 不及格人數(shù):%d' % (num2 / len(scores), num1))
3.4 查 - 獲取列表元素
3.4.1 獲取單個元素: 列表[下標(biāo)]
names = ['海蜇王', '火影', '死神', '犬夜叉', '妖精的尾巴', '熊出沒', '一人之下']
print(names[-2])
3.4.2 獲取部分元素-切片(和字符串一樣):
列表[開始下標(biāo):結(jié)束下標(biāo):步長]
切片的結(jié)果是列表
print(names[1:4]) #['火影', '死神', '犬夜叉']
print(names[::-1]) #['一人之下', '熊出沒', '妖精的尾巴', '犬夜叉', '死神', '火影', '海蜇王']
print(name[:]) #淺拷貝
3.4.3 遍歷
a.直接遍歷
for 變量 in 列表:
循環(huán)體
b.通過下標(biāo)遍歷
for 變量 in range(len(列表))
循環(huán)體
for item in names:
print(item)
for index in range(len(names)):
print(index, names[index])
3.4.4 補(bǔ)充: 求和函數(shù)sum
sum(序列) - 求序列中所有元素的和:序列要求元素類型一致,并且元素支持求和運(yùn)算
print(sum(scores), sum(range(101)))
3.5 增 - 添加元素
3.5.1 列表.append(元素)
在指定的列表的最后添加指定元素
persons = ['路飛', '寶兒姐', '張楚蘭']
persons.append('容嬤嬤')
persons.append('趙云')
print(persons)
3.5.2列表.insert(下標(biāo),元素)
在指定列表的指定下標(biāo)前插入元素
numbers = [1, 20, 34, 50]
numbers.insert(2, 22)
print(numbers)
** 練習(xí):**
輸入一個數(shù)字將他添加到一個有序列表中,要求添加進(jìn)去后不改變從大到小或者從小到大排列順序
numbers1 = [1, 20, 100, 200]
num = int(input('請輸入數(shù)字:'))
# 思路:找到第一個比輸入的數(shù)字大的數(shù)字對應(yīng)的下標(biāo),然后插入到這個下標(biāo)前.如果原來的數(shù)字都比輸入的小,就會添加到最后
for index in range(len(numbers1)):
if numbers1[index] >= num:
numbers1.insert(index, num)
break
else:
numbers1.append(num)
print(numbers1)
3.6 刪 - 刪除元素
3.6.1 del 列表[下標(biāo)]
將指定列表中指定下標(biāo)對應(yīng)的元素刪除
names = ['海蜇王', '火影', '死神', '犬夜叉', '妖精的尾巴', '熊出沒', '一人之下']
del names[2] # 凡是單個的下標(biāo)就不能越界
print(names)
3.6.2 列表.remove(元素)
將指定列表中第一指定元素刪除
注意如果元素不存在,會報(bào)錯
names.remove('海蜇王')
print(names)
3.6.3 列表.pop()
移除列表中最后一個,返回被移除的元素
列表.pop(下標(biāo)) - 移除列表中指定下標(biāo)對應(yīng)的元素
del_name = names.pop()
print(del_name)
names.pop(0)
print(names)
需求:刪除所有的指定元素,例如'海蜇王'
names = ['海蜇王', '火影', '海蜇王', '死神', '犬夜叉', '妖精的尾巴', '熊出沒', '一人之下', '海蜇王']
要求: 用remove , 用del/pop
print('=================================================')
names = ['海蜇王', '火腿', '海蜇王', '死神辣條', '狗肉叉燒', '豬尾巴', '熊掌', '螞蟻上樹', '海蜇王']
while True:
if '海蜇王' in names :
names.remove( '海蜇王')
else:
break
print(names)
name = '海蜇王'
names = ['海蜇王', '火腿', '海蜇王', '死神辣條', '狗肉叉燒', '豬尾巴', '熊掌', '螞蟻上樹', '海蜇王']
while True:
if '海蜇王' not in names :
break
for index in range(len(names)):
if names[index] in name:
del names[index]
break
print(names)
name = '海蜇王'
names = ['海蜇王', '海蜇王', '火腿', '海蜇王', '死神辣條', '狗肉叉燒', '豬尾巴', '熊掌', '螞蟻上樹', '海蜇王']
while True:
if '海蜇王' not in names :
break
for index in range(len(names)):
if names[index] in name:
names.pop(index)
break
print(names)
print('=================================================')
3.6.4 清空: 列表.clear()
刪除列表中所有的元素
names = ['海蜇王', '海蜇王', '火腿', '海蜇王', '死神辣條', '狗肉叉燒', '豬尾巴', '熊掌', '螞蟻上樹', '海蜇王']
names.clear()
print(names)
3.7 改 - 修改列表中的元素
列表[下標(biāo)] = 新值 - 將列表中指定下標(biāo)對應(yīng)的元素改成新值
nums = [1, 2, 3]
nums[0] = 100
print(nums)
3.8 in / not in
元素列表
print([1, 2] in [1, 2, 3, 4]) # False
print([1, 2] in [1, 2, 3, 4, [1, 2]]) # True
print(1 in [[1], 2, 3, 4]) # False
print(1 in [1, 2, 3, 4]) # True