Python集合和字符串及练习
集合
認識集合
1.認識集合(set)
- 必須是不可變的數(shù)據(jù)
- 元素是唯一
2.集合的增刪改查(不重要)
查 - 只能遍歷
補充:用for循環(huán)遍歷無序序列的時候,系統(tǒng)在遍歷之前會自動將無序序列轉(zhuǎn)換成列表,然后再遍歷列表
增
- 集合.add(元素) - 添加指定元素
- 集合.update(序列) - 將序列中所有的元素都添加到集合中
刪
集合.remove(元素)
3.數(shù)學(xué)集合運算
python中使用的集合和數(shù)學(xué)集合是一個東西,并且支持數(shù)學(xué)集合運算
python支持的數(shù)學(xué)集合運算:交集(&)、并集(|)、差集(-)、對稱差集(^)、子集(>=、<=)、真子集(>、<)
交集 - 獲取兩個集合的公共部分
并集 - 將兩個集合合并成一個集合
差集
集合1 - 集合2 - 獲取集合1中去掉包含在集合2中的部分剩下的部分
對稱差集 - 將兩個集合合并然后去掉公共部分
子集和真子集
- 集合1 > 集合2 - 判斷集合2是否是集合1的真子集
- 集合1 < 集合2 - 判斷集合1是否是集合2的真子集
字符串
字符串和字符
1.什么是字符串(str)
2.字符 - 字符串中的每個獨立的符號就是一個字符
字符分為普通字符和轉(zhuǎn)義字符
普通字符 - 表示符號本身的字符就是普通字符
轉(zhuǎn)義字符 - 具備特殊功能或特殊意義的符號就是轉(zhuǎn)義字符。所有的轉(zhuǎn)義字符的通用格式:\X、\XXXX(轉(zhuǎn)義字符是通過\加普通字符構(gòu)成的,但是不是所有的普通字符前加\都可以變成轉(zhuǎn)義字符)
\n - 換行 \t - 水平制表符(相當(dāng)于按一次tab鍵) \' - 一個單引號 \" - 一個雙引號 \\ - 一個反斜杠? 注意:所有的轉(zhuǎn)義字符的長度都是1
\u4位的十六進制數(shù) - 編碼字符(4位的十六進制數(shù)是字符在計算機中的編碼值)
十六進制數(shù) - 每一位上的數(shù)可以是09或者af(A-F)
字符編碼
1.計算機存儲數(shù)據(jù)的原理
2.字符編碼
每個文字符號(字符)在計算機中都對應(yīng)一個固定的數(shù)字,這個數(shù)字就是這個符號的編碼值。
3.字符編碼表 - 記錄每個符號和數(shù)字對應(yīng)關(guān)系的表
常用編碼表: ASCII碼表、Unicode編碼表(Python)
ASCII碼表
-
ASCII碼表只有128個字符(不夠用)
-
在ASCII碼表中:數(shù)字字符在字母的前面、大寫字母在小寫字母的前面、大寫字母和小寫字母之間有間隙、數(shù)字從0開始連續(xù)遞增,字母從(a/A)開始連續(xù)遞增
a - 97
A - 65
Unicode編碼表 - 是ASCII碼表的擴展,里面包含ASCII碼表
- Unicode編碼表中包含了世界上所有的國家所有的民族的所有符號(萬國碼)
- 中文編碼范圍:4e00 ~ 9fa5
4.編碼值在python中的應(yīng)用
字符串常用操作
1.查 - 獲取字符
字符串獲取字符和列表獲取元素的語法一模一樣
str1 = 'hello world!' print(str1[1], str1[-1])str2 = '\t123\u5fa3abc' print(str2[5])str1 = 'hello world!' print(str1[-3:]) # 'ld!' print(str1[-5::-1]) # 'ow olleh'for x in str1:print(x)2.字符串相關(guān)操作
+、*
str1 = 'abc' str2 = '123' print(str1 + str2) # 'abc123' print(str1 * 3) # 'abcabcabc'比較大小: >、<、>=、<=
兩個字符串比較大小,比較的是第一對不相等的字符的編碼值大小;
應(yīng)用:判斷字符的性質(zhì)
- 判斷字符x是否是數(shù)字字符: ‘0’ <= x <= ‘9’
- 判斷字符x是否是小寫字母: ‘a(chǎn)’ <= x <= ‘z’
- 判斷字符x是否是大寫字母: ‘A’ <= x <= ‘Z’
- 判斷字符x是否是字母:‘a(chǎn)’ <= x <= ‘z’ or ‘A’ <= x <= ‘Z’
- 判斷字符x是否是中文:’\u4e00’ <= x <= ‘\u9fa5’
in 和 not in
字符串1 in 字符串2 - 判斷字符串1是在字符串2中(判斷字符串1是否是字符串2的子串)
str1 = 'abc123' print('a' in str1) # True print('abc' in str1) # True print('23' in str1) # True print('13' in str1) # False作業(yè)
輸入一個字符串,打印所有奇數(shù)位上的字符(下標(biāo)是1,3,5,7…位上的字符)
例如: 輸入’abcd1234 ’ 輸出’bd24’
str1 = input('請輸入一個字符串:') print(str1[1::2])輸入用戶名,判斷用戶名是否合法(用戶名長度6~10位)
str2 = input('請輸入用戶名:') if 6 <= len(str2) <= 10:print('合法') else:print('不合法')輸入用戶名,判斷用戶名是否合法(用戶名中只能由數(shù)字和字母組成)
例如: ‘a(chǎn)bc’ — 合法 ‘123’ — 合法 ‘a(chǎn)bc123a’ — 合法
str3 = input('請輸入用戶名:') for x in str3:if '0' <= x <= '9' or 'A' <= x <= 'Z' or 'a' <= x <= 'z':continueelse:print('不合法')break else:print('合法')輸入用戶名,判斷用戶名是否合法(用戶名必須包含且只能包含數(shù)字和字母,并且第一個字符必須是大寫字母)
例如: ‘a(chǎn)bc’ — 不合法 ‘Mabc’ — 不合法 ‘123’ — 不合法 ‘a(chǎn)bc123’ — 不合法 ‘Abc123ahs’ — 合法
username = 'Masf123' if not 'A' <= username[0] <= 'Z':print('不合法') else:num_count = 0for x in username[1:]:if not ('0' <= x <= '9' or 'a' <= x <= 'z' or 'A' <= x <= 'Z'):# 如果出現(xiàn)不是字母數(shù)字的時候print('不合法')breakelse:# 在是數(shù)字或者字母的是判斷是否是數(shù)字if '0' <= x <= '9':num_count += 1else:# 沒有出現(xiàn)數(shù)字、字母以外的符號if num_count == 0:print('不合法')else:print('合法')輸入一個字符串,將字符串中所有的數(shù)字字符取出來產(chǎn)生一個新的字符串
例如:輸入**‘a(chǎn)bc1shj23kls99+2kkk’** 輸出:'123992’
str5 = input('請輸入一個字符串:') str0 = '' for x in str5:if '0' <= x <= '9':str0 += x print(str0)輸入一個字符串,將字符串中所有的小寫字母變成對應(yīng)的大寫字母輸出 (用upper方法和自己寫算法兩種方式實現(xiàn))
例如: 輸入**‘a(chǎn)2h2klm12+’ ** 輸出 'A2H2KLM12+'
# 方法一 str6 = input('請輸入一個字符串:') print(str6.upper())# 方法二 str0 = '' for x in str6:if 'a' <= x <= 'z':str0 += chr(ord(x) - 32)else:str0 += x print(str0)輸入一個小于1000的數(shù)字,產(chǎn)生對應(yīng)的學(xué)號
例如: 輸入**‘23’,輸出’py1901023’** 輸入**‘9’, 輸出’py1901009’** 輸入**‘123’,輸出’py1901123’**
# 9 -> 009 12 -> 012 234 -> 234 num = input('請輸入小于1000的數(shù)字:') result = 'py1901' + (3 - len(num)) * '0' + num print(result)result = 'py1901' + num.zfill(3) print(result)輸入一個字符串,統(tǒng)計字符串中非數(shù)字字母的字符的個數(shù)
例如: 輸入**‘a(chǎn)nc2+93-sj胡說’** 輸出:4 輸入**’===’** 輸出:3
str8 = input('請輸入一個字符串:') count = 0 for x in str8:if '0' <= x <= '9' or 'a' <= x <= 'z' or 'A' <= x <= 'Z':continueelse:count += 1 print(count)輸入字符串,將字符串的開頭和結(jié)尾變成’+’,產(chǎn)生一個新的字符串
例如: 輸入字符串**‘a(chǎn)bc123’, 輸出’+bc12+’**
str1 = 'abc123' if len(str1) >= 2:result = '+' + str1[1:-1] + '+'print(result)輸入字符串,獲取字符串的中間字符
例如: 輸入**‘a(chǎn)bc1234’** 輸出:‘1’ 輸入**‘a(chǎn)bc123’** 輸出**‘c1’**
str10 = input('請輸入字符串:') if len(str10) % 2 == 1:print(str10[len(str10)//2]) else:print(str10[len(str10)//2-1]+str10[len(str10)//2])寫程序?qū)崿F(xiàn)字符串函數(shù)find/index的功能(獲取字符串1中字符串2第一次出現(xiàn)的位置)
例如: 字符串1為:how are you? Im fine, Thank you! , 字符串2為:you, 打印8
str1 = 'how are you? Im fine, Thank you!' str2 = 'you' len2 = len(str2)# 方法一: for index, item in enumerate(str1):if item == str2[0]:if str1[index:index + len2] == str2:print(index)break else:print('找不到')# 方法二 for index in range(len(str1)):if str1[index: index+len2] == str2:print(index)break else:print('找不到')獲取兩個字符串中公共的字符
例如: 字符串1為:abc123, 字符串2為: huak3 , 打印:公共字符有:a3
str1 = input('請輸入字符串1:') str2 = input('請輸入字符串2:') str12 = '' for x in str1:if x in str2:str12 += x print(str12)str1 = 'abac123' str2 = 'huak3'# 方法一: result = set(str1) & set(str2) new_str = '' for x in result:new_str += x print(new_str)result = ''.join(set(str1) & set(str2)) print(result)# 方法二 new_str = '' for x in str1:if x in str2 and x not in new_str:new_str += x print(new_str)?
總結(jié)
以上是生活随笔為你收集整理的Python集合和字符串及练习的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CP2K入门教程分享
- 下一篇: python爬取bili评论