1. 程式人生 > >自動化測試第三節-python基礎(字符串方法 數據類型 文件讀寫)

自動化測試第三節-python基礎(字符串方法 數據類型 文件讀寫)

inpu 寫入 增刪改查 capital 返回結果 move 博客 true xtend

for 循環:

1、for循環寫不了死循環
2、else:循環"正常"結束後執行else

例:

for i in range(3):
print(i)

字典:

1、字典是無序的

2、循環字典中的keys,例如:

dict1={‘name‘:[‘nina‘,‘lucy‘,‘mike‘],‘age‘:[11,22,33]}

for k in dict1:
print(k)

3、用in來判斷一個值是不是字典裏面的話,判斷的是字典的key,例如:

if ‘name‘ in dict1:
print(‘ok‘)

4、key不存在的時候會返回報錯信息:print(dict1[‘color‘])

5、get獲取返回值時,如果查詢結果不存在不會報錯,支持返回一個指定值:print(dict1.get(‘haha‘,‘name‘))

6、支持改

dict1[‘name‘]=‘yes‘
dict1.update(name=‘no‘)
print(dict1[‘name‘])

7、支持增

dict1[‘add‘]=‘miaomiao‘
dict1.setdefault(‘qq‘,‘ww‘)
print(dict1)

8、支持刪

del dict1[‘name‘]#刪除一個key
dict1.pop(‘age‘)#刪除一個key
dict1.popitem()#隨機刪
print(dict1[‘name‘])


print(dict1.keys())#打印keys
print(dict1.values())#打印value
print(list(dict1.values()))#打印values,每個keys對應的value作為列表的一個元素,變成一個嵌套列表
print(type(dict1.values()))#打印出valus的類型,類型為dict_values


9、字典的嵌套

user_info={
‘nina‘:
{‘age‘:28,‘color‘:‘blue‘},
‘lily‘:
{‘age‘: 28, ‘color‘: ‘blue‘}
}
print(user_info
[‘nina‘][‘age‘])#打印出28

user_info={
‘nina‘:
{‘age‘:28,‘color‘:[‘blue‘,‘yellow‘],‘money‘:100},
‘lily‘:
{‘age‘: 28, ‘color‘: ‘blue‘,‘money‘:300
}
}
print(user_info[‘nina‘][‘color‘][1])#打印出yellow:字典加列表的嵌套


10、把字符串轉換成字典:使用eval,例如:
with open(‘b.txt‘,‘a+‘,encoding=‘utf8‘) as f:
f.seek(0)
new_user_info=eval(f.read())
print(type(new_user_info))

字符串方法:
name = ‘my \t name is {name},age is {age}.‘
print(name.capitalize()) # 大寫
print(name.center(50, ‘-‘)) # 使用-補足50個字符,把name放中間
print(name.endswith(‘u‘)) # 是否以x結尾--常用---1
print(name.expandtabs(30)) # 補\t的次數--了解
print(name.find(‘n‘)) # 查找字符串的索引,找到不到返回-1---常用
print(name.index(‘n‘)) # 查找字符串的索引,找不到直接報錯
print(name.format(name=‘niuniu‘, age=18)) # 這個是格式字符串,再第一節的博客裏面已經寫了---常用---2

fill=input(‘請輸入名字:‘)
src = ‘select username,password from user where name like "%{name}%" or "%{name}%";‘#參數需要用{}括起來
newsrc=src.format(name=fill)
print(newsrc)

print(name.format_map({‘name‘: ‘niuniu‘, ‘age‘: 19})) # 這個也是格式化字符串,後面跟的是一個字典,字典在後面也會寫

print(‘abA123‘.isalnum()) # 是否只包含數字和字母--了解,不用記
print(‘abA‘.isalpha()) # 是否是英文字母--了解,不用記

print(‘122‘.isdigit()) # 是否是數字--常用---3
print(‘aa‘.isidentifier()) # 是否是一個合法的變量名
print(‘aa‘.islower()) # 是否是小寫字母
print(‘AA‘.isupper()) # 是否是大寫字母
print(‘Loadrunner Book‘.istitle()) # 是不是一個標題,判斷首字母是否大寫--了解
print(‘+‘.join([‘hehe‘, ‘haha‘, ‘ee‘]))# 拼接字符串,如使用+--必須會,列表變為字符串,連接list中的每一個元素,列表中的元素必須時字符串類型--常用---4
print(‘+‘.join((‘hehe‘, ‘haha‘, ‘ee‘))) # 拼接字符串,如使用+--必須會,列表變為字符串,連接list中的每一個元素,列表中的元素必須時字符串類型
print(name.lower()) # 變成小寫---常用---5
print(name.upper()) # 變成大寫---常用---6
print(‘\nmysql \n‘.lstrip()) # 默認去掉左邊的空格和換行
print(‘\nmysql \n‘.rstrip()) # 默認去掉右邊的空格和換行
print(‘\nmysql \n‘.strip()) # 默認去掉兩邊邊的空格和換行,strip(i):表示刪除字符串兩邊的i--常用---7
p = str.maketrans(‘abcdefg‘, ‘1234567‘) # 前面的字符串和後面的字符串做映射
print(‘cc ae gg‘.translate(p)) # 輸出按照上面maketrans做映射後的字符串

# 下面是反解
new_p = str.maketrans(‘1234567‘, ‘abcdefg‘)
print(‘cc ae gg‘.translate(new_p))print(‘mysql is db.‘.replace(‘mysql‘, ‘oracle‘, 1)) # 替換字符串--常用---8
print(‘mysql is db.‘.replace(‘ ‘, ‘‘, 2)) # 替換字符串---表示去除中間的空格,替換2次
print(‘mysql is is db‘.rfind(‘‘)) # 返回最右邊字符的下標
print(‘1+2+3+4‘.split(‘+‘)) # 切割字符串,返回一個list,如[‘1‘, ‘2‘, ‘3‘, ‘4‘]---常用---9
print(‘1+2+3\n1+2+3+4‘.splitlines()) # 按照換行符分割---常用--10
print(‘Abcdef‘.swapcase()) # 大小寫反轉

username=[‘nina,18‘,‘qq,99‘,‘haha,24‘]#取列表中元素的切片
for u in username:
names=u.split(‘,‘)[0]
print(names)


數據類型
http://www.nnzhp.cn/blog/archives/162---參考
[]表示列表,列表比字符串取值方便,便於增刪改查
names = [‘nina‘,‘sault‘,‘alsa‘,‘bonny‘,‘clare‘]#一維數組
下標,索引,角標
計算機從0開始計數
print(names[1])

#增# #
names.append(‘daring‘)#從末尾給列表增加元素
names.insert(8,‘yes‘)#指定位置添加元素,如果指定的下標不存在則在末尾添加
numbers=[1,2,3,4,5]
names.extend(numbers)#把number的元素加入到names這個列表中
union=names+numbers#合並2個列表,把2個列表的元素放到union裏面
print(names+numbers)#打印出兩個列表
print(union)

#查# #
print(names)
print(names.count(‘nina‘))#查詢元素出現的次數
print(names.index(‘nina‘))#查詢元素的下標,有重復元素時只能返回第一個出現的下標
names.reverse()#反轉列表
names.sort()#默認升序,寫上reserve=True就是降序
name.srot(reserve=True)
print(names[-1])#下標-1表示最後一個元素
others = [1,2,[‘qq‘,‘ww‘]]#二維數組
three = [1,2,[‘qq‘,‘ww‘,[1,2,3]]]#三維數組
print(three[2][2][1])#查詢多維數組的元素
print(three[-1][-1][1])#或如下,-1即取數組裏面的最後一個元素
print(three[-1].index(‘ww‘))#查詢嵌套列表的下標



#改# #
names[0]=‘ninanie‘

#刪# #
del names[0]
names.pop()#默認刪除最後一個元素
names.pop(0)#如果傳入下標,則刪除指定位置的元素
names.pop(9)#不存在下標時,越界會報錯
names.remove(‘sault‘)#刪除列表中指定的元素,而非下標
names.clear()#清空列表,變為一個空列表
print(names)
#切片:切片同樣適用於字符串
names = [‘nina‘, ‘sault‘, ‘alsa‘, ‘bonny‘, ‘clare‘,‘wing‘,[11,22,33,44,55,66]]
print(names[1:3])#切片取值顧頭不顧尾,即從下標1開始取一直取到小於下標3的元素[‘sault‘, ‘alsa‘]
print(names[:3])#前面的下標可以不寫,表示從頭開始取
print(names[1:])#後面的下標可以不寫,表示取到最後
print(names[:])#都不寫,表示取原來的列表的全部元素
numbers=[0,1,2,3,4,5,6,7,8,9,10,11,12]
print(numbers[1:12:2])#表示切片的區間時[1:12],步長為2,即取下標1,3,5,7,9,11
print(numbers[::1])#顯示全列表元素,步長為1
print(numbers[::-1])#切片裏面如果步長是負數,是從後面往前面開始取值的,步長為1
print(numbers[::-2])#切片裏面如果步長是負數,是從後面往前面開始取值的,步長為2
s = ‘abcdefghijklmnopqrstuvwxyz‘#字符串的值不可以修改,錯誤寫法:s[0]=q
print(s[:6:-1])#返回結果:zyxwvutsrqponmlkjih

可變變量:如list
不可變變量:如字符串,元組
元組:小括號表示元組
infos = (‘root‘,‘198.168.0.1‘,‘3306‘,123456)
print(infos.count(‘3306‘))#統計元組中元素出現的次數
print(infos.index(‘3306‘))#返回元組中元素的索引,元組只能用index和count這兩種方法
print(infos[-1])#元組也支持切片,顯示元組的最後一個元素
print(infos[:2])#元組也支持切片,下標從頭取到1
print(infos[::-1])#元組也支持切片,步長為1

循環list的時候,不要刪除list中的元素,會導致元素的下標錯位
li=[1,1,2,3,4,5,6,7]
for i in li:
if 1%2!=0:
li.remove(i)
print(li)
正確寫法:

li=[1,1,2,3,4,5,6,7]
li2=li.copy()
for i in li:
if i%2!=0:
li2.remove(i)
print(li2)
print(li)

‘‘‘交換兩個變量的值‘‘‘
a=1
b=2
a,b=b,a
print(a,b)
a=a+b
b=a-b
a=a-b
print(a,b)


文件讀寫
f=open(‘b.txt‘,‘r‘,encoding=‘utf8‘)
f=open(‘b.txt‘,‘r+‘,encoding=‘utf8‘)#r+:讀寫模式,只要模式例沾上r,文件不存在時都會報錯
f=open(‘b.txt‘,‘w+‘,encoding=‘utf8‘)#w+:寫讀模式,只要沾上w,就會清空以前的內容
f=open(‘b.txt‘,‘a+‘,encoding=‘utf8‘)#追加讀模式
print(f.read())#讀取文件所有內容
print(f.readlines())#返回一個字符串列表,list裏面每個元素時文件的每一行
print(f.readlines()[2:3])#讀取某一行
print(f.readline())#一次只讀取一行
打開文件有三種方式,默認時讀的方式打開文件,文件存在且不往文件寫東西的時候用w
讀 r,如果文件不存在會報錯
寫 w,以寫的方式打開文件不存在時,會新建一個文件;如果文件存在會清空原來的文件內容
追加 a

f.write(‘\n新增‘)#寫內容,只能是字符串
f.seek(0)#移動文件指針到最前,使寫入新內容後可讀取
print(f.read())

f.writelines([‘123\n‘,‘www\n‘])#寫的是list

f.seek(0)
i=1
for line in f:#循環一個文件的時候循環的是文件的每一行
print(‘第{hang}行:line‘.format(hang=i,line=line))
i+=1
f.close()

with open(‘b.txt‘,‘a+‘,encoding=‘utf8‘) as f:#這種寫法不需要再close文件
f.seek(0)
for line in f:
print(line)

 

自動化測試第三節-python基礎(字符串方法 數據類型 文件讀寫)