1.字符串補(bǔ)充
1.格式字符串:字符串中通過 ‘格式站位符’ 來表示字符串中變化的部分
- 格式:一個包含格式站位符的字符串%(給格式站位符賦值的列表)
格式站位符:%s - 字符串占位
%d - 整數(shù)
%.Nf - 浮點(diǎn)數(shù) 可以使用N約束后面的小數(shù)位數(shù)
%c - 字符 輸入一個字符异吻,
如果輸入數(shù)字,則會將其作為編碼轉(zhuǎn)化為字符
%x/%X - x整數(shù)(16進(jìn)制)
name = 'sss'
age = 23
sex = '男'
message = '%s今年%d歲, 性別:%c' % (name, age, sex)
print(message)
# 輸入學(xué)生姓名 年齡 性別 以xx今年x歲,性別x的格式打印
2.常用對象方法
- str1.count(str2)
count()統(tǒng)計str2 在str1中出現(xiàn)的次數(shù) - str1.find(str2, 開始下標(biāo), 結(jié)束下標(biāo))
返回str2在str1中指定范圍內(nèi)首次出現(xiàn) 起始位置的下標(biāo)值凄鼻,沒有則返回-1
str1 = ' hao are you '
print(str1.find('are', 3, 5))
- join 字符串.join(序列)
將序列中的元素(字符串)用字符串1連接在一起津肛, 產(chǎn)生一個新的字符串
print('$'.join('abc'))
print('++'.join(['aa', 'ee', 'ss']))
print(str1.strip(), str1)
- 字符串1.split(字符串2) 在字符串1中把字符串2當(dāng)做切點(diǎn),
分割字符串1刨裆,產(chǎn)生的新各個字符串用列表保存
str2 = 'how are you?0h~'
s_print = ''
#統(tǒng)計str2中所有元素出現(xiàn)的次數(shù)
for s in str2:
if s not in s_print:
print(s, str2.count(s))
s_print += s
#求字符串中出現(xiàn)次數(shù)最多的字符 及出現(xiàn)次數(shù)
max_count = 0
max_s = ''
for s in str2:
count = str2.count(s)
if count > max_count:
max_count = count
max_s = s
#找出字符串中指定字符串出現(xiàn)的下標(biāo)并打印
str3 = 'and you how are you?0h~'
str4 = 'you'
start_index = 0
while True:
index = str3.find(str4, start_index)
if index == -1:
break
else:
print(index, end=',')
start_index = index + len(str4)
print()
練習(xí):實(shí)現(xiàn)join的功能 用字符串1 將字符串2中所有的字符連接起來
str5 = 'aa'
str6 = '123444'
new_str = ''
for char in str6:
new_str += char + str5
new_str = new_str[:-len(str5)]
print(new_str)
#取出數(shù)字并用字符拼接
str5 = '+'
str6 = 'asd235dsdsg55'
new_str = ''
for char in str6:
if '0' <= char <= '9':
new_str += char + str5
new_str = new_str[:-len(str5)]
print(new_str)
2.list列表
- 什么時候用列表:需要用一個變量保存多個程序
什么是列表
列表是python內(nèi)置的容器型數(shù)據(jù)類型(序列)维贺,可變(支持增刪改)且有序(支持通過下標(biāo)操作)
用中括號將多個元素括起來它掂,多個元素用逗號隔開:[元素1,元素2幸缕,元素3....]列表中的元素:python內(nèi)置數(shù)據(jù)類型對應(yīng)的數(shù)據(jù)群发,或者自定義的類型數(shù)據(jù)都可以
- 不同元素類型可以不一樣
list1 = [120, 12.9, True, 'abc', [1, 2, 3], lambda x: x*10]
print(list1)
num = 10
# 注意:賦值運(yùn)算不能作為元素,其他都可以將結(jié)果作為元素存貯在列表中
list2 = [num, 100+200]
3.查 - 獲取列表元素 同字符串
# 獲取單個元素:列表[下標(biāo)]
names = ['海賊王', '火影忍者', '死神', '犬夜叉', '妖精']
print(names[0])
# 獲取部分元素-切片(同字符串):列表[開始下標(biāo):結(jié)束下標(biāo):步長]
# 列表切片結(jié)果是列表
print(names[1:4])
print(names[:]) #屬于淺拷貝
- 遍歷
a.直接遍歷
for 變量 in 列表: 變量取到元素
循環(huán)體
b. 通過下標(biāo)遍歷
for 變量 in range(len(列表)): 變量取到下標(biāo)
循環(huán)體
#遍歷元素
for item in names:
print(item)
#遍歷索引
for index in range(len(names)):
print(index, names[index])
#統(tǒng)計平均分和不及格人數(shù)
scores = [90, 80, 54, 40, 70, 57, 54]
sum_score = 0
notPass = 0
for score in scores:
sum_score += score
if score < 60:
notPass += 1
print('平均分%.2f,不及格%d人' % (sum_score/len(scores), notPass))
補(bǔ)充求和函數(shù) sum
sum(序列) - 求序列中所有元素的和发乔;
序列要求元素類型一致,且支持加法運(yùn)算
print(sum(scores), sum(range(101)))
- 增 - 添加元素
# 列表.append(元素) - 在指定列表的最后添加元素
persons = ['路費(fèi)', '寶兒姐', '張楚楠']
persons.append('容嬤嬤')
persons.append('趙云')
print(persons)
# 2.列表.insert(下標(biāo)雪猪, 元素) -在指定列表的 指定下標(biāo)前 插入指定元素
numbers = [1, 20, 34, 50]
numbers.insert(2, 22)
print(numbers)
# 練習(xí):輸入一個數(shù)字栏尚,然后將其添加到一個有序列表中,要求加入后不改變其排列順序
numbers = [1, 20, 34, 50, 100, 200, 1000]
num = 10
for index in range(len(numbers)):
if numbers[index] > num:
numbers.insert(index, num)
break
else:
numbers.append(num)
print(numbers)
- 刪除元素
# del 列表[下標(biāo)] - 將指定列表中指定下標(biāo)對應(yīng)元素刪除
numbers = [1, 20, 34, 50, 100, 200, 1000]
del numbers[2]
print(numbers)
# 列表.remove(元素) - 將指定列表中第一個指定元素刪掉只恨,如元素不存在译仗,會報錯
names.remove('海賊王')
print(names)
# 列表.pop() -移除列表中最后一個元素
# 列表.pop(下標(biāo)) -移除列表中指定對應(yīng)下標(biāo)的元素
# 會返回移除的元素
del_name = names.pop()
print(names, del_name)
del_name = names.pop(0)
print(names, del_name)
names = ['海賊王', '火影忍者', '死神', '海賊王', '犬夜叉', '海賊王', '妖精']
# 刪除所有的海賊王抬虽,remove, del pop
while True:
if '海賊王' in names:
names.remove('海賊王')
else:
break
# 清空 列表.clear() 刪除列表中所有元素 保留空列表
- 改 - 修改列表中的元素
#列表[下標(biāo)] = 新值 將列表中纵菌,指定下標(biāo)對應(yīng)元素阐污,改成新值
nums = [1, 2, 3]
nums[0] = 100
print(nums)
- in/not in
# 元素 in 列表 判斷列表中是否包含指定元素
print(['b', 'a'] + ['a'])
# remove, append, insert沒有返回值
9.補(bǔ)充刪除列表遍歷的規(guī)則
scores = [10, 50, 90, 89, 89, 89, 40, 10]
# 刪除所有小于60的數(shù)
# 按元素遍歷:通過remove刪除的時候可能出現(xiàn) 刪不干凈的問題
for score in scores:
if score < 60:
scores.remove(score)
print(scores)
# 解決思路
# 先備份一份
socore2 = scores.copy()
# 遍歷備份咱圆,操作原本
# 問題2, 通過下標(biāo)遍歷刪除滿足要求的元素時笛辟,出現(xiàn)下標(biāo)越界
for index in range(len(scores)):
if scores[index] < 60:
del scores[index]
print(scores)
#將range(len(scores))產(chǎn)生的序列計算后保存起來,按此遍歷序苏,
# 后續(xù)len()的改變不會對保存的序列操作手幢,
# 解決問題2 , 如果刪除操作執(zhí)行,index不能改變
index = 0
while index < len(scores):
if scores[index] < 60:
del scores[index]
continue
index += 1