第二課????運算符(day10)
一、運算符
結果是值 ????????????????????????????????????
算數運算
a = 10 * 10
賦值運算
a = a + 1 ???a+=1
結果是布爾值
比較運算
a = 1 > 5
邏輯運算
a = 1>6 or 1==1
成員運算
a = "蚊" in "鄭建文"
二、基本數據類型
1、數值(int)
(1)??Int() 把字符串變成數值型 ??eg ?int(num,base=16) ?把字符串變成16進制 ?的數,默認是變成10進制的數。
(2)??Type()什么類型
(3)??.bit_lenght ?什么的二進制位數
Eg: ??a='123'
type(a)
print(type(a),a)
?
age=10
s=age.bit_length()
print(s)
?
num='0011'
v=int(num,base=16)
print(v)
?
2、字符串(str)
(1)??.capitalize() ?首字母大寫
??????Eg: ??test='alex'
v=test.capitalize() ???????輸出Alex
print(v)
(2)???.casefold() ???所有 變成?字母小寫 ??????????大寫。小寫
??????.lower() ?????將英文字母 變成?小寫
??????.islower() ????判斷是否為小寫
???????.upper ???????將英文字母 變成大寫
???????.isupper() ????判斷是否為大寫
???????.swapcase ????大小寫轉換
??Eg: ?test='AlEx'
v1=test.casefold() ???輸出alex
v2=test.lower() ??????輸出alex ?????????????
v3=test.islower() ????輸出false
v5=test.isupper() ????輸出false ?
v4=test.upper() ??????輸出ALEX
v6=test.swapcase() ???輸出aLeX
print(v1,v2,v3,v4,v5,v6)
?
?
(3)??.center(12,’#’) 表示把某放在12個字符中間,其余的地方用#補充 ?字符補充
????????.center(12,’#’) ????輸出####AlEx#### ?Eg:print(test.center(12,'#')) ???
????????.ljus(12,’#’) ????????輸出AlEx########
????????.rjust(12,’#’) ???????輸出########AlEx
????????.join(test) ???????????用某把test表示的AlEx連接起來
????????.zfill(12) ????????輸出00000000AlEx
????????????????Eg: ??test='AlEx'
v1=test.center(12,'#')
v2=test.ljust(12,'#')
v3=test.rjust(12,'#')
v4='@'.join(test)
v5=test.zfill(12)
print(v1,v2,v3,v4,v5)
####AlEx#### ??AlEx######## ??########AlEx ???A@l@E@x 00000000AlEx
??????????????????????????????
?
(4)??.count(‘a’,5,6) ??字母a在字符串[5,6)的位置中出現次數
??????Eg: ??test='alexalex'
v=test.count('a',4,5) ??alexalex字符串位置01234567 ?輸出1次
print(v)
?
(5)???.startswith() ??????以什么開頭,判斷輸出布爾值
??????.endswith() ????以什么結尾,判斷輸出布爾值
?????????Eg: test='alex'
v1=test.startswith('al')
v2=test.endswith('al') ??????輸出 true ?flase
print(v1,v2)
?
(6)?????.find ?從某位置開始找,找到第一個后獲得其位置值
Eg: ??test='alexalex'
V1=test.find('ex',5,7) ???ex在6,7位置[5,7)就沒有輸出-1
V2=test.find('ex',5,8) ??????????????????[5,8)輸出6 ?
print(v1,v2) ??
???????????????????????????
(7)?????.format ?格式化,將占位置符換成值
????????.format_map ?將占位置符換成值
??????????Eg: ????test='i am {name},age{a}'
v1=test.format(name='alex',a=19) ????輸出i am alex,age19
v2=test.format_map({'name':'alex','a':19})
print(v1)
print(v2)
?
(8)?????.isalnum ??判斷字符串中是否只包含 字母和數字,輸出布爾值
???????????Eg: ???test='123aa'
v=test.isalnum() ????輸出true
print(v)
??????????.isalpha ??判斷字符串中是否只包含 字母和漢字
Eg: ????test='aaa啊'
v=test.isalpha() ????輸出true
print(v)
?
(9)?????.isdecinal() ????判斷是否數字
????????.isdigit() ??????判斷是否數字,包涵特殊數字②
????????.isnumeric() ???判斷是否數字,包涵特殊數字、中文數字二
Eg: ??test=’2’\’②’\'二'
v1=test.isdecimal()
v2=test.isdigit() ???????????輸出ttt\ftt\fft
v3=test.isnumeric()
print(v1,v2,v3)
?
(10)????.isprintable ?判斷是否存在不可顯示字符(空格也是可以顯示的)
\t ??制表符
???\n ??換行
.expandtabs(20) ?遇到\t斷句,將\t前面的字符和空格一起組成20長的字符串,\n換行
?
Eg: ????test='111\t222\t333\naaa\tbbb\tccc\n+++\t---\t***\n'
v1=test.isprintable()
v2=test.expandtabs(20)
print(v1)
print(v2)
輸出:
False
111 ????????????????222 ????????????????333
aaa ????????????????bbb ????????????????ccc
+++ ????????????????--- ????????????????***
?
test=' ?123 ?'
v1=test.isprintable() ??????輸出true
print(v1)
?
(11)??????.isspace ??判斷是否全是空格, ?’’什么都沒有也不是空格(false)
???????????Eg: ?????test1=''
test2=' ?'
v1=test1.isspace() ??????false ?true
v2=test2.isspace()
print(v1)
print(v2)
?
(12)????????.istitle() ??判斷是否是英文標題
????????.title() ????變成英文標題 ,首字母大寫
Eg: ?????test='test is test'
v1=test.istitle() ????輸出false ?Test ?Is Test
v2=test.title()
print(v1,v2)
?
(13)????.lstrip() ????????去掉 左邊、右邊、兩邊 ?字符串中的空格,\t,\n
????????.rstrip()
????????.strip()
?
????????Eg: ??????test=' ?\talex\n ?'
v1=test.lstrip()
v2=test.rstrip()
v3=test.strip()
print(v1,v2,v3)
輸出alex
????? ???????????alex alex
?
(14)?????m=str.maketrans( ‘abc’,’123’) ????輸出abc和123對應
???????????.translate(m) ?????根據m對應關系替換
?????
?eg: ???test='avbvcv'
m=str.maketrans('abc','123') ???輸入1v2v3v
v1=test.translate(m)
print(v1)
?
(15)????.partition ?對字符串進行分割從左到右分割只成三份(包涵分割元素)
????????.rpartition ??右——左只分割三份(包涵分割元素)
????????.split(‘s’,2) ???分割兩次,不保留分割元素
????????.splitlines() ??只能分割\n——.splitlines(True)?保留\n分割
?????????????????????????????????????.splitlines(False) 無\n分割
Eg: ????test='bacdayyhua123a\nc'
v1=test.partition('a')
v2=test.rpartition('a')
v3=test.split('a')
v4=test.split('a',2)
v5=test.splitlines(True)
v6=test.splitlines(False)
print(v1)
print(v2)
print(v3)
print(v4)
print(v5)
print(v6)
輸出:('b', 'a', 'cdayyhua123a\nc')
('bacdayyhua123', 'a', '\nc')
['b', 'cd', 'yyhu', '123', '\nc']
['b', 'cd', 'yyhua123a\nc']
['bacdayyhua123a\n', 'c']
['bacdayyhua123a', 'c']
?
(16)????.isidentifier ?判斷是否是標識符 def ?class(字母、數字、下劃線)
?
Eg: ??????test='avb_'
v1=test.isidentifier() ???輸出True
print(v1)
?
?
3.7個常用的語句
(1).join() ??用什么拼接某字符
(2).Split() ?分割字符,全分割,不保留分割元素
(3)?.find()查找某一字符在字符串的位置。字符串位置eg0123 ?len()計算字符串長度4
(4).strip() 去左右的空格、\n、\t
(5).upper() ?轉換成大寫
(6).lower() ?轉換成小寫
(7).replace(‘ex’,’b’,2) ?將第2個ex換成b
?????????Eg: ???test='exavvvexaaex+'
v1=test.replace('ex','b') ???????輸出:bavvvbaab+
v2=test.replace('ex','b',2) ????????bavvvbaaex+
print(v1)
print(v2)
?
4、5個灰魔法
(1)????for循環: For變量名 in ?字符串:
?????????????break
?????????????Continue
???????????Eg: ?a. ???n=0
test = "鄭建文妹子有種沖我來"
while n<len(test): ?????????a和b算法結果一致
??????????????????????v=test[n]
??????????????????????n=n+1
??????????????????????print(v)
????
- for ?n ?in ?test:
????????????????????????print(n)
- for ?n ?in ?test:
???????????????????????print(n)
???????????????????????break ???????????輸出鄭,只循環一次 ??break放在循環最后 ??
?
- for ?n ?in ?test:
?continue ?????????什么都不輸出,continue放中間
?print(n) ??
?
(2)?????字符串名稱[] ?獲取字符串的某一個字符
索引:字符串名稱[3] ???????第3個字符
????????????????切片:字符串名稱[0:1] ???0<=x<1 ?[0,1)
??????????????????????字符串名稱[0:-1] ???0字符到倒數第二個字符
?
(3)?????獲取長度: len( 字符串名稱) 字符串中字符個數,漢字中漢字的個數 ???
????????????????????????012 ?長度3
?
????????Eg: ??mmm='alexalex'
v1=mmm[0:1] ???????????a
v2=mmm[0:-1] ??????????alexale
v3=len(mmm) ????????????8
print(v1)
print(v2)
print(v3)
?
(4)???????????range(10) ???????[0,10)
????????????range(1,10) ?????[1,10)
range(0,10,2) ???[0,10) ?02468
Eg: ???for ?v ?in range(0,10,2): ??????02468
???????print(v)
(5)?????????字符串一旦創建,不可修改
一旦修改或者拼接,都會造成重新生成字符串
練習題:根據用戶輸入的值,輸出每一個字符以及當前字符所在的索引位置
?
?????Eg: ???test=input('請輸入用戶名')
for m in range(0,len(test)):
????????????k=test[m]
????????????print(m,k)
?
?