零基礎入門學習python_014_筆記及作業_字串_內建函數

字串內建函數:
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,否則返回 Falsestart  end 參數表示範圍,可選。
expandtabs([tabsize=8])
把字串中的 tab 符號(\t)轉換為空格,如不指定參數,默認的空格數是 tabsize=8
find(sub[, start[, end]])
檢測 sub 是否包含在字串中,如果有則返回索引值,否則返回 -1start  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,否則返回 Falsestart  end 參數可以指定範圍檢查,可選。
strip([chars])
刪除字串前邊和後邊所有的空格,chars 參數可以定制刪除的字元,可選。
swapcase()
翻轉字串中的大小寫。
title()
返回標題化(所有的單詞都是以大寫開始,其餘字母均小寫)的字串。
translate(table)
根據 table 的規則(可以由 str.maketrans('a', 'b') 定制)轉換字串中的字元。
upper()
轉換字串中的所有小寫字元為大寫。
zfill(width)
返回長度為 width 的字串,原字串右對齊,前邊用 0 填充。




作業1:還記得如何定義一個跨越多行的字串嗎(請至少寫出兩種實現的方法)?

小提示:有三種情況
(1) 定義時分行,print也分行
(2) 定義時不分行,print分行
(3) 定義時分行,print沒分行

==============================以下為程式碼==============================

(1) 定義時分行,print也分行
str1 = ('''123
321''')

(2) 定義時不分行,print分行
str1 = '123\n321'

(3) 定義時分行,print沒分行
str1 = ('123\
321')
str2 = ('123'
'321')

========================================================================

作業2:據說只有智商高於150的魚油才能解開這個字串(還原為有意義的字串):str1 = 'i2sl54ovvvb4e3bferi32s56h;$c43.sfc67o0cm99'

==============================以下為程式碼==============================

>>> str1 = 'i2sl54ovvvb4e3bferi32s56h;$c43.sfc67o0cm99'
>>> str1[::3]
'ilovefishc.com'

[::3]就是從第一個字元開始,隔兩個字元取第三個字元的意思。

========================================================================

作業3:請寫一個密碼安全性檢查的腳本代碼:check.py

 # 低級密碼要求:
 #   1. 密碼由單純的數位或字母組成
 #   2. 密碼長度小於等於8位元
 #
 # 中級密碼要求:
 #   1. 密碼必須由數位、字母或特殊字元(僅限:~!@#$%^&*()_=-/,.?<>;:[]{}|\)任意兩種組合
 #   2. 密碼長度不能低於8位元
 #
 # 高級密碼要求:
 #   1. 密碼必須由數位、字母及特殊字元(僅限:~!@#$%^&*()_=-/,.?<>;:[]{}|\)三種組合
 #   2. 密碼只能由字母開頭
 #   3. 密碼長度不能低於16位元

預期程式運行結果:
輸入密碼組合後,程式會判斷密碼強度為低中高何者,並提示
1. 密碼必須由數位、字母及特殊字元三種組合
2. 密碼只能由字母開頭
3. 密碼長度不能低於16位元

這太難了,直接看甲魚哥的解答XD

========================================================================

#設定變數symbols等於題目所要求的特殊字元
symbols = r'''`!@#$%^&*()_+-=/*{}[]\|'";:/?,.<>'''
#設定變數chars等於題目所要求的字母字元
chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
#設定變數nums等於題目所要求的數字字元
nums = '0123456789'

#設定變數passwd為可讓使用者自行輸入的字串組合
passwd = input('請輸入需要檢查的密碼組合:')

# 判斷長度
# 設定變數length以檢查密碼長度是否符合強度要求
length = len(passwd)

#當passwd只有空格,或是長度為零的時候
while (passwd.isspace() or length == 0) :
#請使用者重新輸入字串組合
    passwd = input("您輸入的密碼為空(或空格),請重新輸入:")

#當length小於等於8的時候
if length <= 8:
#設定變數flag_len等於1
    flag_len = 1
#或是當length介於8與16中間的時候
elif 8 < length < 16:
#設定變數flag_len等於2
    flag_len = 2
#或是其他情形時
else:
#設定變數flag_len等於3
    flag_len = 3

#設定變數flag_con等於0
flag_con = 0

# 判斷是否包含特殊字元
#設定變數each在passwd裡面
for each in passwd:
#當each屬於symbols時
    if each in symbols:
#變數flag_con數值+1
        flag_con += 1
#中斷本輪判斷特殊字元之迴圈
        break

# 判斷是否包含字母
#設定變數each在passwd裡面
for each in passwd:
#當each屬於chars時
    if each in chars:
#變數flag_con數值+1
        flag_con += 1
#中斷本輪判斷字母之迴圈
        break

# 判斷是否包含數位
#設定變數each在passwd裡面
for each in passwd:
#當each屬於nums時
    if each in nums:
#變數flag_con數值+1
        flag_con += 1
#中斷本輪判斷數字之迴圈
        break   

# 列印結果
#同等於while True,無限迴圈之意
while 1 :
#輸出文字
# end=''是使print不換行的程式碼,可使下一個print的內容直接接續在此行print後面。
    print("您的密碼安全級別評定為:", end='')
# 當變數flag_len或變數flag_con等於1時
    if flag_len == 1 or flag_con == 1 :
# 輸出文字
        print("低")
# 或是當變數flag_len或變數flag_con等於2時
    elif flag_len == 2 or flag_con == 2 :
# 輸出文字
        print("中")
# 其他情形
    else :
# 輸出文字
        print("高")
        print("請繼續保持")
# 中斷迴圈
        break

# 輸出文字。\n是換行,\t是tab
# 本段輸出文字若使用三引號'''也許會簡便一些
    print("請按以下方式提升您的密碼安全級別:\n\
    \t1. 密碼必須由數位、字母及特殊字元三種組合\n\
    \t2. 密碼只能由字母開頭\n\
    \t3. 密碼長度不能低於16位元'")
# 中斷迴圈
    break

========================================================================

留言

這個網誌中的熱門文章

簡易版複利計算機

零基礎入門學習python_003筆記及作業_字串與轉譯

哈佛大學計算機通識課程:CS50