1. 程式人生 > >Python 字串切片、索引、查詢、統計,使用者登陸驗證

Python 字串切片、索引、查詢、統計,使用者登陸驗證

# 切片和索引
# 1.索引.索引就是下標,Python中下表從0開始
# s1 = "python最牛B"
# p y t h o n 最 牛 B
# 索引 0 1 2 3 4 5 6 7 8
# print(s1[0]) #結果:p
# print(s1[1])
# print(s1[2])
# print(s1[3])
# print(s1[4])
# print(s1[5])
# print(s1[6])
# print(s1[7])
# print(s1[8]) #結果:B
# print(s1[9]) #沒有9 會報錯
# print(s1[-1]) #結果:-1標識倒數B
# print(s1[-2]) #結果:牛


# 2.切片.使用下表來擷取部分字串的內容
# 語法:str[start:end:step] 規則:顧頭不顧尾,從start開始擷取,擷取到end位置,不包括end.
# s2 = "python最牛B"
# p y t h o n 最 牛 B
# 索引 0 1 2 3 4 5 6 7 8
# print(s2[0:3]) #從0獲取到3,不包含3. 結果:pth
# print(s2[6:8]) #從6獲取到8,不包含8, 結果:最牛
# print(s2[6:9]) #從6獲取到9,不包含9,最大是8, 結果:最牛B
# print(s2[6:10]) #最大是8,只能獲取到最大值,結果:最牛B
# print(s2[4:]) #從4獲取到最大值,最大是8, 結果:on最牛


# s2 = "python最牛B"
# p y t h o n 最 牛 B
# 索引 0 1 2 3 4 5 6 7 8
# 3.跳著擷取,步長
# print(s2[1:5:2]) #從1開始擷取,每2個擷取一個,擷取到4. ytho-結果:yh
# print(s2[:5:2]) #從0開始擷取至4,每2個擷取一個. pytho結果:pto
# print(s2[4::2]) #從4開始擷取至最後一個,每2個擷取一個,on最牛B結果:o最B
# print(s2[-5::2]) #從倒數第五個擷取到最後,每2個擷取一個,on最牛B結果:o最B
# print(s2[-1:-5]) #從倒數第一個至倒數第四個,因為step預設為1,1代表從左往右擷取,所以沒有.

# print(s2[-1:-5:-1]) #從倒數第一個擷取至倒數第四個,因為step為-1,-1代表從右往左擷取,結果:B牛最n
# print(s2[-5::-3]) #從倒數第五個擷取至最後一個,是由右至左,step=-3,ohtyp結果:oy

# 字串相關操作方法
# 1.大小寫轉換
# s1= "abcdeF"
# s1.capitalize()
# print(s1)
# ret =s1.capitalize()
# print(ret) #結果:Abcdef 首字母變大寫

# ret = s1.lower() #全轉成小寫:abcdef
# print(ret)

# ret = s1.upper() #全轉成大寫:ABCDEF
# print(ret)

# 檢驗使用者輸入碼是否合法(功能:使用者賬戶實為大小寫混一起,輸入小寫時也能通過)
# verify_code = "abCd"
# user_verify_code = input("請輸入驗證碼:")
# if verify_code.upper() == user_verify_code.upper(): #思路:兩邊都變成大寫且相等時通過.
#
# print("驗證成功")
# else:
# print("驗證失敗")

# s1 = "AbCdEf"
# ret=s1.swapcase() #大小寫互換 結果:aBcDeF
# print(ret)

# 每個被特殊字元隔開的字母大寫,注:其他字母變成小寫
# s1 ="cHen cHao jIe 陳超傑"
# ret =s1.title()
# print(ret) #結果:Chen Chao Jie 陳超傑

# 2.字串居中
# s1 ="陳超傑"
# ret =s1.center(20,"*") #長邊變成20並將s1居中,兩端用*補齊.
# print(ret)

# 3.更改tab的長度
# s1 ="chenchao\tjie"
# print(s1) #chenchao jie
# ret = s1.expandtabs(18)
# print(ret) #chenchao jie


# 4.去空格
# s1 =" chen chaoj ie "
# ret = s1.strip() #strip去掉左右兩端空格
# print(ret) #chen chaoj ie
# retl = s1.lstrip()#lstrip去掉左邊空格
# print(retl) #chen chaoj ie
# ret2 =s1.rstrip() #rstrip去掉右邊空格
# print(ret2) # chen chaoj ie

# 小應用,模擬使用者登陸,忽略使用者輸入空格
# username = input("請輸入使用者名稱:").strip()
# password = input("請輸入密碼:").strip()
# if username == "ccj" and password == "888" :
# print("登陸成功")
# else:
# print("登陸失敗")

# 模擬登陸升級,使用者登陸時忽略空格和大小寫
# usr = "ccj"
# pw = "888"
# username = input("請輸入使用者名稱:")
# password = input("請輸入密碼:")
# if usr.strip().upper() == username.strip().upper() and pw.strip().upper() == password.strip().upper(): #包含密碼空格..
# print("登陸成功")
# else:
# print("登陸失敗")

# strip也可以去掉指定元素
# s1 = "chenchaojie"
# print(s1.strip("c")) #去掉c,結果:henchaojie

# 5.字串替換
# 語法 replace("old","new",count)
# s1 = "chen_chao_jie_good_man"
# ret =s1.replace("o","X",5) #把o換成X,換5次
# print(ret)

# 6.字串切割
# s1 ="ccj,boy,girl,hello"
# ret =s1.split(",") #用,切割 結果:['ccj', 'boy', 'girl', 'hello']
# print(ret)

# 7.用\n切割
# s1="""ccj
# boy
# girl"""
# print(s1.split("\n")) #結果:['ccj', 'boy', 'girl']

# 注意坑:split切割兩端有空格時,出現空字元
# s1 ="ccj,boy,girl,hello"
# ret = s1.split("c")
# print(ret) #結果['', '', 'j,boy,girl,hello']


# 格式化輸出
# s1 = "我叫%s,今年%d歲了,我喜歡%s" % ("ccj",18,"IT") #常用方法
# print(s1)
# s2 = "我叫{},今年{}歲了,我喜歡{}".format("zjl",28,"muzic") #按格式化輸出
# print(s2)
# s3 = "我叫{0},今年{2}歲了,我喜歡{1}".format("zjl","muzic",28) #按位置輸出
# print(s3)
# s4 = "我叫{name},今年{age}歲了,我喜歡{hobby}".format(hobby ="muzic",name ="zjl",age =28) #指定關鍵字
# print(s4)

# 查詢字串
# 1.語法:startswith(X) 判斷字串是否以X開頭
# s1 = "我叫boy,我喜歡python,java,php等程式語言."
# ret = s1.startswith("boy")
# print(ret) #判斷是否boy開頭,False
# rst = s1.startswith("我叫boy")
# print(rst) #判斷是否我叫boy開頭,true

# 2.endswith(X)判斷字串是否以X結尾
# s1 = "我叫boy,我喜歡python,java,php等程式語言."
# ret = s1.endswith("語言.")
# print(ret) #True

# 3.count() 查詢字串出現的次數
# s1 ="chenchaojie"
# ret = s1.count("c")
# print(ret) #結果:2 出現2次

# 4.find(X) 查詢字串位置,返回索引
# s1 ="chenchaojie"
# ret = s1.find("h") #返回索引 1,如果沒有找到,返回-1 ,index()不同的是:找不到時程式報錯.
# print(ret)

# 5.切片查詢字串的索引
# s1 ="chenchaojie"
# ret = s1.find("h",2,10)
# print(ret) #結果5, 如果是("h",1,10)只會返回第一個h的索引位置為1.

# 字串之條件判斷 isalnum
# 1.條件判斷
# s1 = "123.45"
# s2 = "abcd"
# s3 = "[email protected]#"
# 2.判斷字串是否由字母和數字組成
# print(s1.isalnum()) #F
# print(s2.isalnum()) #T
# print(s3.isalnum()) #F
# 3.是否由字母組成
# print(s1.isalpha()) #F
# print(s2.isalpha()) #T
# print(s3.isalpha()) #F
# 4.是否由數字組成,不包括小數點
# print(s1.isdigit()) #F isdigit檢測是否只由數字組成,因為有小數點,所以為F,負整數也為F
# print(s2.isdigit()) #F
# print(s3.isdigit()) #F
# s4 = "一二"
# print(s4.isnumeric()) #能識別中文數字

# 小演算法.判斷某一個字串是否是小數
# s1 ="-123.12"
# s1 = s1.replace("-","")
# if s1.isdigit():
# print("這是一個整數")
# else:
# if s1.count(".") ==1 and not s1.startswith(".") and not s1.endswith("."):
# print("這是一個小數")
# else:
# print("這不是小數")

# 小演算法升級.迴圈判斷小數
# while 1:
# s1 = input("輸入一個數:")
# s1 = s1.replace("-","")
# if s1.isdigit():
# print("這是一個整數")
# else:
# if s1.count(".") ==1 and not s1.startswith(".") and not s1.endswith("."):
# print("這是一個小數")
# break
# else:
# print("這不是小數")


# 計算字串的長度
# s1 ="你是我的眼,帶我領略四季的變化"
# ret = len(s1)
# print(ret) #結果:15, len()的計算

# 迭代
# for 迴圈可以用來便利擷取字串中的每一個字元
# 語法: for 變數 in可迭代的物件:
# pass
# 可迭代的物件:可以一個一個往外取值的物件
# s1 = "大家好,我是CCJ,前端的小朋友們,你們好麼?"
# 用while迴圈
# index = 0
# while index < len(s1):
# print(s1[index]) #利用索引切片來完成字元的查詢,len(s1)檢視s1索引為0-23,所以即逐個打印出索引0123456...23的字串
# index += 1

# 用for迴圈,把s1中的每一個字元拿出來複製給前面的c
# for c in s1:
# print(c) #輸出效果同上!

# in 有兩種用法:
# 1.在for中,是把每一個元素獲取然後賦值給前面的變數.
# 2.不在for中,是判斷某個字元是否出現在檢測的字串中.
# print("CCJ" in s1) #CCJ在s1中,結果:True

# 例子:計算在字串中"I am Jack,I'm 18 years old, I'have 2 dogs."(用for迴圈計算該字串中有多少個數字)
# s1 = "I am Jack,I'm 18 years old, I'have 2 dogs."
# count = 0
# for c in s1:
# if c.isdigit():
# count += 1
# print(count) #結果為3. 因為s1中包含"1","8","2".