python判断字符串在元祖_Python基础(2)——字典、元祖、字符串方法、非空即真、文件...
目錄:
一、字典
二、元祖
三、字符串方法、切片
四、非空即真,非0即真
五、文件
正文
一、字典
字典
d = {
'username':'xiaohei',
'id':1,
'grand':'天馬座',
'addr':'北京',
'age':29
}
1、增加
d ={'username':'xiaohei','id':1,'grand':'天馬座','addr':'北京','age':29}
#增:2個方法
d['money'] = 500d.setdefault('car','bmw')
print(d)
d['username'] = 123#重復key,value覆蓋
d.setdefault('grand','bmw')#存在key,value無效
print(d)
2、查詢
d ={'username':'xiaohei','id':1,'grand':'天馬座','addr':'北京','age':29}#取值:2個方法
print(d['addr'])print(d.get('username'))print(d)#print(d['addrs']) #不存在的key報錯
print(d.get('usernames')) #不存在的key返回None
print(d.get('sex','男')) #get取不存在的key返回默認值
3、刪除
#刪除
print(d)
d.pop('username')del d['addr']print(d)
4、其他方法
1)取出字典所有key到一個list中
取出字典所有values到一個list中
print(d.keys())#取出字典所有key到一個list中
print(d.values())#取出字典所有values到一個list中
2)向字典里更新值
d ={'username':'xiaohei','id':1,'grand':'天馬座','addr':'北京','age':29}
d.update(a=1,b=2)#向字典里更新值
print(d)
3)清空clear()
d.clear()#清空
print(d)
4)判斷key是否存在
users ={'fd':'123456','xzh':'45678'}
username= 'fd'
#判斷key是否存在
print(username inusers.keys())print(username in users) #判斷key是否存在,比keys()少一步轉成list#users.has_key(username)#python2
5)取key和value值
#直接取到key和value
print("轉成二維數組后取")print(d.items()) #轉成二維數組
for k,v ind.items():print(k,v)print("")print("根據key取:")#性能好
for k ind:print(k,d.get(k))
練習:錄入學生
users ={'fd':'1234','lhy':'456'}for i in range(3):
username= input('username:').strip()
password= input('password:').strip()
cpwd=input('cpwd:').strip()if username=='' or password=='' or cpwd=='':print("不能為空")elif password!=cpwd:print("兩次輸入不一致")else:
users[username]=passwordprint("注冊成功")print(users)break
else:print('輸入錯誤次數過多')
5、list字典嵌套
info ={'lgy':{'age':18,'addr':'beijing','car':['bmw','ben-z','audi'],
},'fd':{'house':{'bj':['海淀區','昌平區','朝陽區','西城區'],'sh':['靜安區','閘北區']
},'money':5000}
}
#lgy買了一輛五菱宏光
#fd賣了北京昌平的房子錢增加了400 0000
info['lgy']['car'].append("五菱宏光")
info['fd']['house']['bj'].remove('昌平區')
info['fd']['money']+=4000000
print(info)
#fd在重慶江北區買了房子
#info['fd']['house']['cq']=['江北區']#info['fd']['house'].update(cq=['江北區'])
info['fd']['house'].setdefault('cq',['江北區'])print(info)
{'lgy': {'age': 18, 'addr': 'beijing', 'car': ['bmw', 'ben-z', 'audi', '五菱宏光']}, 'fd': {'house': {'bj': ['海淀區', '朝陽區', '西城區'], 'sh': ['靜安區', '閘北區'], 'cq': ['江北區']}, 'money': 4005000}}
二、元祖
l = (1,2,3,4,5)
元祖是不可變的列表
元祖一旦被創建,不能改變里面的值
只有2個方法
li = ('118.24.3.40','root','123456','3306')#只有2個方法
print(li.index('root'))print(li.count('root'))
備注:只有一個元素的元祖要加逗號
t = ('abc') #只有一個元素不是元祖
m = ('abc',) #只有一個元素的元祖加逗號
print(t,type(t))print(m,type(m))
三、字符串
1、index
find
s = 'abca'
#s.index() 找字符串下標(找不到會報錯)#s.find() (找不到返回-1)
print("找字符串下標")print(s.index('a'))print(s.find('a'))print(s.index('a',2)) #從第二個開始找,
print(s.index('a',0,10)) #找前10個,
print(s.find('a',2))
2、s.strip() 去空格
#s.strip() 去空格
print("去空格、換行符或指定字符串")
s= 'abca,'
print(s.strip())print(s.rstrip()) #去右邊空格
print(s.lstrip())#去左邊空格
print(s.strip(','))
s= 'abcad你好\n'
print(s)print(s.strip()) #去換行符
print(s)
3、s.replace()替換
print("替換replace")
s= 'abcasffsfds'
print(s.replace('a','A'))#把小a用大A代替
#敏感詞打碼
word_list= ['傻逼','傻b','煞比','sb']
content= input("請輸入")for word inword_list:
content= content.replace(word,'**')print(content)
4、lower() upper()? 大寫、小寫轉換
s = 'ABCabc'
print(s.lower())print(s.upper())
5、zfill()? 補0
#s.zfill() 補0
s='1'
if len(s)<3:if len(s)==1:
s='00'+selif len(s)==2:
s='0'+selse:
s='0'
print(s)print(s.zfill(5))
6、
# s.isdigit() 判斷是否輸入為純數字,自然數
# s.endswith() 以...結尾
# s.startswith()以...開頭
s='1.23'
print(s.isdigit())print(s.endswith('.py'))print(s.startswith('1.'))
7、center() 使用字符使內容居中
#s.center()
print('歡迎登陸'.center(50,'1')) #用1字符湊夠50個字符,輸入內容居中
8、title() 將字符串變每個單詞首字母大寫
print('my car'.title())
9、isspace()? ?判斷輸入的字符串中是全是空格
#s.isspace()
print(' '.isspace())#判斷輸入的字符串中是全是空格
10、?s.isupper() s.islower()? 判斷是否全為大寫/小寫
#s.isupper() 判斷是否全為大寫#s.islower() 判斷是否全為小寫
print('my car'.islower())
11、capitalize() 首字母大寫
#capitalize()
print('my car'.capitalize()) #首字母大寫
12、s.split()分割字符串
入參空默認按著空格和換行符分割字符串
s='''aa
bb
cc
dd'''
print(s.split())
s= 'aaa,bbb,ccc,ddd'
print(s.split(','))print(s.split('z')) #沒有該分割符,則把所有字符串放到一個list中
13、s.join() 連接list里的每個元素的
l = ['aa','bb','cc','dd']
s=' '.join(l)print(l)print(type(l)) #將原來的list變為字符串
14、切片
切片是list范圍取值的一種方式
importstringprint(string.ascii_lowercase) #所有小寫
print(string.ascii_uppercase)print(string.digits) #所有數字
print(string.ascii_letters) #所有字母
print(string.punctuation) #所有符號
list切片
l=['a','b','c','d','e','f','g','h','i']print(l[0:2])#切片,從0開始到第二個2結束 顧頭不顧尾
print(l[2:])#從第二個開始到末尾
print(l[:3])#取到前3個
print(l[:])#取所有元素
print(l[0:9:2])#第三個參數:步長 0,0+2,2+2,4+2,6+2#l=['a','b','c','d','e','f','g','h','i']#0 1 2 3 4 5 6 7 8
步長為負數
print(l[::-1])#如果步長為負數,取值從右往左開始取,同時,開始和結束下標也要寫成負數#l=['a','b','c','d','e','f','g','h','i']#-9 -8 -7 -6 -5 -4 -2 -2 -1#i--f
print(l[-1:-4:-1])
字符串切片
s='abcdef'
print(s[::-1]) #只要有下標的都可以,包括list字符串元祖
15、list與循環語句
#print(list(range(1,5))) #[1, 2, 3, 4]
#0 1 2 3 4 5 6 7 8 9 10
l = [0, 1, 2, 2, 3, 4, 5, 6, 7, 8, 9]for i inl:if i%2 ==0:
l.remove(i)print(l) #循環刪除會導致下標錯亂[1, 2, 3, 5, 7, 9]
#修改為
l = [0, 1, 2, 2, 3, 4, 5, 6, 7, 8, 9]
l2=[0, 1, 2, 2, 3, 4, 5, 6, 7, 8, 9]for i inl2:if i%2 ==0:
l.remove(i)print(l)
為什么不能直接給l2賦值l
#淺拷貝/深拷貝
l = [0, 1, 2, 2, 3, 4, 5, 6, 7, 8, 9]
l2=l#淺拷貝
print(id(l))print(id(l2))#/深拷貝
importcopy
l= [0, 1, 2, 2, 3, 4, 5, 6, 7, 8, 9]
l2=copy.deepcopy(l)print(id(l))print(id(l2))
#以下雖然內存地址不是同一個但也是淺拷貝
l = [1,2,3,[1,2,3]]
l3=l.copy() #嵌套的也會隨l改變而變化
l4=copy.copy(l)
l5=l[:]
l[-1].append('abc')print(l)print(l3)print(l4)print(l5)
四、非空即真 非0即真
#非空即真,非0即真
#None {} () [] ''
username=input("username:")
password=input('password:')if username.strip(): #不為空 if not username.strip(): #為空
print('你輸入的不為空')else:print('username不能為空')
d={'a':1}ifd:print("真,d不為空")
五、文件
1、只讀
f = open('a.txt','r') #三種模式 w r a(附加模式) 默認讀模式#f = open('a.txt','r',encoding='utf-8') #有中文
result = f.read() #字符串
print(result)
f.close()
2、文件中有中文
f.readlines()、f.readline()
f = open('a.txt','r',encoding='utf-8') #有中文
result = f.readlines() #列表
f.seek(0)
result2= f.readline() #一行
print(result)print("result2:"+result2)
f.close()
3、只寫
#w只寫
f = open('a.txt','w',encoding='utf-8')
f.write('nihao') #只能是字符串
names =['\nfd','lhy','wq']
new_name='\n'.join(names)
f.writelines(new_name)#可以循環寫,只能是string類型
f.close()
#備注:#寫整數型需要轉化成字符型寫入
numbers=[1,2,3,4,5,6]for index inrange(len(numbers)):
numbers[index]=str(numbers[index])print(numbers)
4、附加模式
#附加模式
f = open('a.txt','a',encoding='utf-8')#result = f.read() 不能讀
names =['fd','lhy','wq']
f.writelines(names)
f.close()
5、讀寫
#r+ w+ a+ 三種模式#r+讀寫模式#r r+打開不存在的文件都會報錯
f = open('a.txt','r+',encoding='utf-8')
result=f.read()print(result)
names=['fd','lhy','wq']
f.writelines(names)print("readlines",f.readlines()) #有文件指針讀完后指針已經到最后,不能讀第二次
f.close()
6、a+
a+模式默認總最后附加寫,如何寫在文件開頭
方法1:先a+打開再w打開重新寫
#寫在開頭
f = open('a.txt','a+',encoding='utf-8')
f.seek(0)
result=f.read()
new_content= 'ksitou'+result
f.close()
f= open('a.txt','w',encoding='utf-8')
f.write(new_content)
f.close()
方法2
f.truncate()#清空文件內容
f = open('a.txt','a+',encoding='utf-8')
f.seek(0)
result=f.read()
f.seek(0)
new_result= result.upper()#將原文件內容改為大寫
f.truncate()#清空文件內容
f.write(new_result)
f.close()
#
總結
以上是生活随笔為你收集整理的python判断字符串在元祖_Python基础(2)——字典、元祖、字符串方法、非空即真、文件...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 招桃花的网名125个
- 下一篇: 带刘字的网名,好听带刘字的微信名519个