元組(tuple):戴上了枷鎖的列表 元組與列表非常相似但是元組內元素的類型相同,且元組內的元素不能修改 1、創建元組的方法 與列表不同創建元組大部分情況下是用小括弧,例如 也可以不用小括弧,例如 因此創建元組的關鍵在於“逗號”,在創建單個元素的元組時應註意: >>> 8*8,(64,)>>> 8* ...
元組(tuple):戴上了枷鎖的列表
元組與列表非常相似但是元組內元素的類型相同,且元組內的元素不能修改
1、創建元組的方法
與列表不同創建元組大部分情況下是用小括弧,例如
tuple1=(1,2,3) >>> tuple1 (1, 2, 3)
也可以不用小括弧,例如
tuple1=1,2,3 >>> tuple1 (1, 2, 3)
因此創建元組的關鍵在於“逗號”,在創建單個元素的元組時應註意:
tuple1=(1) tuple2=(1,) >>> type(tuple1) <class 'int'> >>> type(tuple2) <class 'tuple'>
>>> 8*8,
(64,)
>>> 8*(8,)
(8, 8, 8, 8, 8, 8, 8, 8)
>>> 8*(8)
64
由以上例子可見創建一個元素的元組時要在元素後加一個逗號
2、更新和刪除一個元組的方法
由於元組是不可變的所以更新和刪除元組中的元素都是用元組分片的方法
tuple1=('迪麗熱巴','鹿晗','關曉彤','大黑牛','鄧超') #我要刪除關曉彤 tuple1=tuple1[:2]+tuple1[3:] >>> tuple1 ('迪麗熱巴', '鹿晗', '大黑牛', '鄧超') #----------------------------------------------------- tuple1=('迪麗熱巴','鹿晗','關曉彤','大黑牛','鄧超') #我要刪除關曉彤 tuple1=tuple1[:2]+tuple1[3:] #我要加上範冰冰 tuple1=tuple1[:2]+('範冰冰',)+tuple1[2:] >>> tuple1 ('迪麗熱巴', '鹿晗', '範冰冰', '大黑牛', '鄧超')
3、相關的操作符
於列表一樣,元組有拼接操作符、重覆操作符、關係操作符、成員操作符、邏輯操作符
4、字元串
1)字元串和元組非常相似可以進行切片 操作,也可以使用索引來訪問單個字元
str1="I love You" #分片操作 str1=str1[:5] >>> str1 'I lov' #索引 str2=str1[0] >>> str2 'I'
2)字元串的更新與刪除跟元組一樣是用切片的方法
str1="I love You" str1=str1[:5] +"love"+str1[6:]#新字元串
3)與字元串相關的操作符與元組一樣
拼接操作符、重覆操作符、關係操作符、成員操作符、邏輯操作符
4)字元串的內置方法
capitalize() |
把字元串的第一個字元改為大寫 |
casefold() |
把整個字元串的所有字元改為小寫 |
center(width) |
將字元串居中,並使用空格填充至長度 width 的新字元串 |
count(sub[, start[, end]]) |
返回 sub 在字元串裡邊出現的次數,start 和 end 參數表示範圍,可選。 |
encode(encoding='utf-8', errors='strict') |
以 encoding 指定的編碼格式對字元串進行編碼。 |
endswith(sub[, start[, end]]) |
檢查字元串是否以 sub 子字元串結束,如果是返回 True,否則返回 False。start 和 end 參數表示範圍,可選。 |
expandtabs([tabsize=8]) |
把字元串中的 tab 符號(\t)轉換為空格,如不指定參數,預設的空格數是 tabsize=8。 |
find(sub[, start[, end]]) |
檢測 sub 是否包含在字元串中,如果有則返回索引值,否則返回 -1,start 和 end 參數表示範圍,可選。 |
index(sub[, start[, end]]) |
跟 find 方法一樣,不過如果 sub 不在 string 中會產生一個異常。 |
isalnum() |
如果字元串至少有一個字元並且所有字元都是字母或數字則返回 True,否則返回 False。 |
isalpha() |
如果字元串至少有一個字元並且所有字元都是字母則返回 True,否則返回 False。 |
isdecimal() |
如果字元串只包含十進位數字則返回 True,否則返回 False。 |
isdigit() |
如果字元串只包含數字則返回 True,否則返回 False。 |
islower() |
如果字元串中至少包含一個區分大小寫的字元,並且這些字元都是小寫,則返回 True,否則返回 False。 |
isnumeric() |
如果字元串中只包含數字字元,則返回 True,否則返回 False。 |
isspace() |
如果字元串中只包含空格,則返回 True,否則返回 False。 |
istitle() |
如果字元串是標題化(所有的單詞都是以大寫開始,其餘字母均小寫),則返回 True,否則返回 False。 |
isupper() |
如果字元串中至少包含一個區分大小寫的字元,並且這些字元都是大寫,則返回 True,否則返回 False。 |
join(sub) |
以字元串作為分隔符,插入到 sub 中所有的字元之間。 |
ljust(width) |
返回一個左對齊的字元串,並使用空格填充至長度為 width 的新字元串。 |
lower() |
轉換字元串中所有大寫字元為小寫。 |
lstrip() |
去掉字元串左邊的所有空格 |
partition(sub) |
找到子字元串 sub,把字元串分成一個 3 元組 (pre_sub, sub, fol_sub),如果字元串中不包含 sub 則返回 ('原字元串', '', '') |
replace(old, new[, count]) |
把字元串中的 old 子字元串替換成 new 子字元串,如果 count 指定,則替換不超過 count 次。 |
rfind(sub[, start[, end]]) |
類似於 find() 方法,不過是從右邊開始查找。 |
rindex(sub[, start[, end]]) |
類似於 index() 方法,不過是從右邊開始。 |
rjust(width) |
返回一個右對齊的字元串,並使用空格填充至長度為 width 的新字元串。 |
rpartition(sub) |
類似於 partition() 方法,不過是從右邊開始查找。 |
rstrip() |
刪除字元串末尾的空格。 |
split(sep=None, maxsplit=-1) |
不帶參數預設是以空格為分隔符切片字元串,如果 maxsplit 參數有設置,則僅分隔 maxsplit 個子字元串,返回切片後的子字元串拼接的列表。 |
splitlines(([keepends])) |
按照 '\n' 分隔,返回一個包含各行作為元素的列表,如果 keepends 參數指定,則返回前 keepends 行。 |
startswith(prefix[, start[, end]]) |
檢查字元串是否以 prefix 開頭,是則返回 True,否則返回 False。start 和 end 參數可以指定範圍檢查,可選。 |
strip([chars]) |
刪除字元串前邊和後邊所有的空格,chars 參數可以定製刪除的字元,可選。 |
swapcase() |
翻轉字元串中的大小寫。 |
title() |
返回標題化(所有的單詞都是以大寫開始,其餘字母均小寫)的字元串。 |
translate(table) |
根據 table 的規則(可以由 str.maketrans('a', 'b') 定製)轉換字元串中的字元。 |
upper() |
轉換字元串中的所有小寫字元為大寫。 |
zfill(width) |
返回長度為 width 的字元串,原字元串右對齊,前邊用 0 填充。 |
5)密碼強度檢測
# 密碼安全性檢查代碼 # # 低級密碼要求: # 1. 密碼由單純的數字或字母組成 # 2. 密碼長度小於等於8位 # # 中級密碼要求: # 1. 密碼必須由數字、字母或特殊字元(僅限:~!@#$%^&*()_=-/,.?<>;:[]{}|\)任意兩種組合 # 2. 密碼長度不能低於8位 # # 高級密碼要求: # 1. 密碼必須由數字、字母及特殊字元(僅限:~!@#$%^&*()_=-/,.?<>;:[]{}|\)三種組合 # 2. 密碼只能由字母開頭 # 3. 密碼長度不能低於16位 symbols = r'''`!@#$%^&*()_+-=/*{}[]\|'";:/?,.<>''' chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' nums = '0123456789' passwd = input('請輸入需要檢查的密碼組合:') # 判斷長度 length = len(passwd) while (passwd.isspace() or length == 0) : passwd = input("您輸入的密碼為空(或空格),請重新輸入:") length = len(passwd) if length <= 8: flag_len = 1 elif 8 < length < 16: flag_len = 2 else: flag_len = 3 flag_con = 0 # 判斷是否包含特殊字元 for each in passwd: if each in symbols: flag_con += 1 break # 判斷是否包含字母 for each in passwd: if each in chars: flag_con += 1 break # 判斷是否包含數字 for each in passwd: if each in nums: flag_con += 1 break # 列印結果 while 1 : print("您的密碼安全級別評定為:", end='') if flag_len == 1 or flag_con == 1 : print("低") elif flag_len == 3 and flag_con == 3 and (passwd[0] in chars): print("高") print("請繼續保持") break else: print("中") print("請按以下方式提升您的密碼安全級別:\n\ \t1. 密碼必須由數字、字母及特殊字元三種組合\n\ \t2. 密碼只能由字母開頭\n\ \t3. 密碼長度不能低於16位") break