1.運(yùn)算符: 數(shù)學(xué)運(yùn)算符、比較運(yùn)算符、邏輯運(yùn)算符、賦值運(yùn)算符
數(shù)學(xué)運(yùn)算符: +, -, *, /, //, **, %
比較運(yùn)算符: >, <, ==, !=, >=, <=
邏輯運(yùn)算符:and, or, not
賦值運(yùn)算符:=, +=没隘, -=, *=禁荸, /=, //=, %=, **=
運(yùn)算符的優(yōu)先級(jí): 數(shù)學(xué)運(yùn)算符>比較運(yùn)算符>邏輯運(yùn)算符>賦值運(yùn)算符
2.數(shù)字類(lèi)型
整型(int): 0b(二進(jìn)制)右蒲、0o(八進(jìn)制)、0x(十六進(jìn)制)
bin()屡限、 oct() hex()
浮點(diǎn)型(float): 支持科學(xué)計(jì)數(shù)法, 19e-2 0.000001 == 1e-6
布爾(bool): True == 1, False == 0
3.字符串(str)
字符串又叫字符集
'', ""
空串: '', ""
空格字符串: ' ', " "
普通字符: 'a', '1', ',', '好', '??', '??'
轉(zhuǎn)義字符: \n, \t, ', ", \; 阻止轉(zhuǎn)義: r/R
編碼字符: \uXXXX 十六進(jìn)制數(shù):每一位上的數(shù)是0-9或者a-f(A-F)
4.字符的編碼
a-z: 97-122
A-Z: 65-90
中文編碼范圍: 4e00 - 9fa5
chr(編碼)
ord(字符)
===========獲取字符===========
1.獲取單個(gè)字符
"""
字符串中的每一個(gè)字符都會(huì)對(duì)應(yīng)一個(gè)唯一的下標(biāo)(索引)用來(lái)表示字符在字符串中的位置炕倘。
下標(biāo)是從0開(kāi)始一次增加的钧大, 0對(duì)應(yīng)的是第一個(gè)字符(0 ~ 字符串長(zhǎng)度-1)
可以是從-1開(kāi)始依次減小,-1代表最后一個(gè)字符(-1 ~ -字符串長(zhǎng)度)
例如
:'hello' -> h->(0,-5) e->(1,-4) l->(2,-3) l->(3,-2) o->(4,-1)
'\tpytho\u4e00n' -> p->(1, -7)
a.語(yǔ)法:
字符串[下標(biāo)] - 獲取字符串中指定下標(biāo)對(duì)應(yīng)的字符
b.說(shuō)明:
字符串 - 只要結(jié)果是字符串的表達(dá)式都可以,例如:字符串字面量, 字符串變量
[] - 固定寫(xiě)法
下標(biāo) - 需要獲取的字符對(duì)應(yīng)的下標(biāo); 注意,這兒的下標(biāo)不能越界
"""
result = 'how are you!'[0] # 獲取字符串'how are you!'中下標(biāo)是0的字符罩旋,并且賦給變量result
print(result)
print('how are you!'[-4]) # y
# print('how are you!'[-13]) # IndexError: string index out of range
str1 = 'good good study! day day up!'
print(str1[10])
2.獲取部分字符(字符串切片)
"""
方法一:
a.語(yǔ)法:
字符串[開(kāi)始下標(biāo):結(jié)束下標(biāo):步長(zhǎng)] - 從開(kāi)始下標(biāo)開(kāi)始啊央,獲取到結(jié)束下標(biāo)前為止。每次下標(biāo)值加上步長(zhǎng)去獲取下一個(gè)
b.說(shuō)明:
字符串 - 只要結(jié)果是字符串的表達(dá)式都可以,例如:字符串字面量, 字符串變量
[] - 固定寫(xiě)法
開(kāi)始下標(biāo)涨醋、結(jié)束下標(biāo) - 下標(biāo)值(這兒的下標(biāo)可以越界)
步長(zhǎng) - 必須是整數(shù)(正數(shù)和負(fù)數(shù)都行)瓜饥; 如果步長(zhǎng)是正數(shù),是從開(kāi)始下標(biāo)開(kāi)始從前往后獲仍÷睢乓土;
如果步長(zhǎng)是負(fù)數(shù),是從開(kāi)始下標(biāo)開(kāi)始從后往前獲人菥趣苏;
c.注意:
當(dāng)步長(zhǎng)為正,要求開(kāi)始下標(biāo)對(duì)應(yīng)的字符的位置必須在結(jié)束下標(biāo)對(duì)應(yīng)的字符的位置的前面,否則結(jié)果是空串梯轻!
當(dāng)步長(zhǎng)為負(fù)食磕,要求開(kāi)始下標(biāo)對(duì)應(yīng)的字符的位置必須在結(jié)束下標(biāo)對(duì)應(yīng)的字符的位置的后面,否則結(jié)果是空串!
不管怎么取喳挑,結(jié)束下標(biāo)一定取不到彬伦!
"""
str1 = 'hello python!'
print('結(jié)果1:', str1[0:-1:2]) # 從前往后取
print('結(jié)果2:', str1[-1:0:-2]) # 從后往前取
print('結(jié)果3:', str1[-1:-100:-1]) # 結(jié)束下標(biāo)越界
print('結(jié)果4:', str1[100: -100: -1]) # 下標(biāo)越界
練習(xí):獲取一個(gè)字符串中所有下標(biāo)是奇數(shù)的字符(順序)
print(str1[1:100:2])
str2 = "{'name':'小明', 'age': 18}"
print(str2[1:-1:1])
"""
方法二:(省略步長(zhǎng))
字符串[開(kāi)始下標(biāo):結(jié)束下標(biāo)] - 步長(zhǎng)是1滔悉;從開(kāi)始下標(biāo)開(kāi)始到結(jié)束下標(biāo)前為止,一個(gè)一個(gè)的鹊グ蟆回官!
"""
print('when i was young!'[2:6])
"""
方法三:(省略開(kāi)始下標(biāo)和結(jié)束下標(biāo))
a.省略開(kāi)始下標(biāo)
字符串[:結(jié)束下標(biāo):步長(zhǎng)] - 當(dāng)步長(zhǎng)是正數(shù),從字符串的第一個(gè)字符開(kāi)始取到結(jié)束下標(biāo)前為止;
當(dāng)步長(zhǎng)是負(fù)數(shù),從字符串的最后一個(gè)字符開(kāi)始取到結(jié)束下標(biāo)前為止.
b.省略結(jié)束下標(biāo)
字符串[開(kāi)始下標(biāo)::步長(zhǎng)] - 當(dāng)步長(zhǎng)是正數(shù),從開(kāi)始下標(biāo)開(kāi)始取到字符串最后一個(gè)字符為止;
當(dāng)步長(zhǎng)是負(fù)數(shù)询张,從開(kāi)始下標(biāo)開(kāi)始取到字符串的第一個(gè)字符為止
"""
str3 = 'when i was young!'
print(str3[:6], str3[:6:-1])
print(str3[2:], str3[2::-1])
print(str3[:])
print(str3[::-1]) # 讓字符串倒序
print(str3)
1.字符串支持的運(yùn)算符: +, *, >, <, ==, != ,>=, <=
python中的字符串支持?jǐn)?shù)學(xué)運(yùn)算符中的+和*,以及所有的比較運(yùn)算符
"""
a. + : 字符串1 + 字符串2 - 將字符串1和字符串2拼接在一起產(chǎn)生一個(gè)新的字符串
注意:字符串和數(shù)字不能混合相加!
b. * : 字符串 * N - N是正整數(shù); 字符串重復(fù)N次產(chǎn)生一個(gè)新的字符串
"""
new_str = 'abc' + '123'
print(new_str)
name = '張三'
message = '吃飯了嗎孙乖?'
print(name+message+'....')
# print('abc'+123) # TypeError: must be str, not int
new_str = 'abc'*3
print(new_str)
print(('abc'+'123')*2) # abc123abc123
print('abc'+'123'*2) # abc123123
"""
c.比較是否相等
==, != 可以判斷兩個(gè)字符串是否相等或者不相等
d.字符比較大小:從第一個(gè)字符開(kāi)始依次往后找份氧,找到第一個(gè)不相等的字符對(duì)唯袄,判斷它們的編碼值的大小,
誰(shuí)的編碼值大蜗帜,對(duì)應(yīng)的字符串就大恋拷;不會(huì)再往后比較了!
應(yīng)用:
1.判斷是否是小寫(xiě)字母: 'a'<=char<='z' <===> char>='a' and char<='z'
2.判斷是否是大寫(xiě)字母: 'A'<=char<='Z'
3.判斷是否是字母: 'a' <= char <= 'z' or 'A' <= char <= 'Z'
"""
print('abc' == 'abc') # True
print('abc' == 'cba') # False
print('abc' != 'abc') # False
print('abdcb' > 'abczde')
判斷一個(gè)字符串中第3個(gè)字符是否是字母
str1 = 'sh是23.ssy23'
char = str1[2] # 將第3個(gè)字符取出
print('是否是字母:', 'a' <= char <= 'z' or 'A' <= char <= 'Z')
print('是否是中文:', '\u4e00' <= char <= '\u9fa5')
2. in和not in操作
"""
字符串1(是否在)字符串2中
字符串1 in 字符串2 -> 判斷字符串2中是否包含字符串1(判斷字符串1是否是字符串2的子串)判斷字符串1(是否在)字符串2中
字符串1 not in 字符串2 -> 判斷字符串2中是否不包含字符串1(判斷字符串1是否是字符串2的子串)
"""
print('abc' in 'hello abc') # True
print('abc' in 'ahello bc') # False
print('abc' not in 'hello abc') # False
print('abc' not in 'ahello bc') # True
print('A' in 'hello Abc')
3. len函數(shù)
"""
len(序列) - 獲取序列長(zhǎng)度, 獲取序列中元素的個(gè)數(shù)
len(字符串) - 獲取字符串的長(zhǎng)度(字符的個(gè)數(shù)) -- 結(jié)果是一個(gè)整數(shù)
注意:
一個(gè)可以轉(zhuǎn)移的轉(zhuǎn)義字符的長(zhǎng)度是1厅缺!
一個(gè)編碼字符的長(zhǎng)度是1蔬顾!
一個(gè)空格字符的長(zhǎng)度是1!
手動(dòng)在鍵盤(pán)上按一個(gè)tab湘捎,一般是4個(gè)空格诀豁,長(zhǎng)度是4; 一個(gè)\t來(lái)表示的tab,長(zhǎng)度是1
"""
print(len('abc'))
str1 = input('請(qǐng)輸入:')
last_char = str1[len(str1)-1] # 獲取輸入的字符串中的最后一個(gè)字符
print(last_char)
str1 = ' abc'
str2 = '\tabc'
print(str1)
print(str2)
print(len(str1), len(str2)) # 手動(dòng)輸入的tab和\t對(duì)應(yīng)的字符個(gè)數(shù)可能不一樣窥妇!\t永遠(yuǎn)是1
===========格式字符串============
"""
1.什么是格式字符串:
在字符串中通過(guò)格式占位符來(lái)代替字符串中變化的部分舷胜,然后在后面通過(guò)數(shù)據(jù)或者變量確定變化
語(yǔ)法:
包含占位符的字符串 % (值1, 值2, 值3...)
說(shuō)明:
占位符 - %s 字符串
%d 整數(shù)
%f 小數(shù) (%.Nf 保留小數(shù)點(diǎn)后N位小數(shù))
%c 字符 (可以將數(shù)字轉(zhuǎn)換成字符)
% - 固定寫(xiě)法
() - 固定寫(xiě)法,字符串中只有一個(gè)占位符的時(shí)候活翩,這個(gè)()可以省略
括號(hào)中的值 - 值和占位符要一一對(duì)應(yīng)(個(gè)數(shù)烹骨、類(lèi)型、位置都要對(duì)應(yīng))
"""
name = input('姓名:')
age = 18
sex = '男'
加操作
mesage = '我叫XXX材泄,今天xx歲,性別:X, 月薪x萬(wàn)'
mesage = '我叫'+name+',今年'+age+'歲沮焕,性別:'+sex
print(mesage)
格式字符串
message = '我叫%s,今年%s,性別:%d, 月薪%.2f萬(wàn) 字符:%c' % (name, age, sex, 1.5, 97)
print(message)
練習(xí): 輸入一個(gè)字符串, 用一個(gè)變量保存輸入的字符串的相關(guān)信息:XXX的長(zhǎng)度是XX,最后一個(gè)字符是X
例如: 輸入abc -> abc的長(zhǎng)度是3,最后一個(gè)字符是c
input_str = input('輸入一個(gè)字符串:')
message = '%s的長(zhǎng)度是%d, 最后一個(gè)字符是%c' % (input_str, len(input_str), input_str[-1])
print(message)
print('%s-%d-%c' % ('abc', 100, 'A'))
"""
==========類(lèi)型轉(zhuǎn)換==========
1.基本語(yǔ)法
語(yǔ)法:
類(lèi)型名(數(shù)據(jù)) - 將指定數(shù)據(jù)轉(zhuǎn)換成指定類(lèi)型
說(shuō)明:
類(lèi)型名 - 任何python支持的,或者自定的類(lèi)型都可以
數(shù)據(jù) - 需要轉(zhuǎn)換的對(duì)象(類(lèi)型不同要求可能不一樣)
2.轉(zhuǎn)換實(shí)例
int(數(shù)據(jù)) -> 將其他數(shù)據(jù)轉(zhuǎn)換成整型
float(數(shù)據(jù)) -> 將其他數(shù)據(jù)轉(zhuǎn)換成浮點(diǎn)型
bool(數(shù)據(jù)) -> 將其他類(lèi)型轉(zhuǎn)換成布爾
str(數(shù)據(jù)) -> 將其他數(shù)據(jù)轉(zhuǎn)換成字符串
"""
age = input('年齡:')
print(type(age), age)
print('是否能進(jìn)入網(wǎng)吧:', int(age) >= 18)
1.轉(zhuǎn)換成整型
a = int(-10.90) # 所有浮點(diǎn)數(shù)可以轉(zhuǎn)換成整數(shù)拉宗,直接保留整數(shù)部分
b = int(False) # 所有布爾可以轉(zhuǎn)化成整數(shù)峦树, True -> 1; False -> 0
c = int('-120') # 只有去掉字符串的引號(hào)后本身就是一個(gè)整數(shù)的字符串才能轉(zhuǎn)換成整型
print(a, b, c)
2.轉(zhuǎn)換成浮點(diǎn)型
a = float(100) # 所有整數(shù)都可以轉(zhuǎn)換成浮點(diǎn)數(shù),在后面加.0
b = float(True) # 所有布爾可以轉(zhuǎn)化成浮點(diǎn)數(shù)旦事, True -> 1.0; False -> 0.0
c = float('12.9') # 去掉引號(hào)后本身就是一個(gè)數(shù)字的字符串能轉(zhuǎn)換成浮點(diǎn)型
print(a, b, c)
3.轉(zhuǎn)換成布爾類(lèi)型
python中所有的數(shù)據(jù)都可以轉(zhuǎn)換成布爾
所有為空為0的值都會(huì)轉(zhuǎn)換成False,其他都是True
a = bool(0)
b = bool(-0.0)
c = bool('')
d = bool([])
e = bool({})
f = bool(None)
print(a, b, c, d, e, f)
4.轉(zhuǎn)換成字符串類(lèi)型
python中所有的數(shù)據(jù)都可以轉(zhuǎn)換成字符串,而且轉(zhuǎn)換的時(shí)候就是單純的在最外面加引號(hào)
a = str(100)
print(a)
print('abc'+str(100))
練習(xí):輸入三個(gè)數(shù)字空入,求三個(gè)數(shù)的和
num1 = input('第一個(gè)數(shù):')
num2 = input('第二個(gè)數(shù):')
num3 = input('第三個(gè)數(shù):')
print(float(num1)+float(num2)+float(num3))
inputstr = input('輸入三個(gè)數(shù)以逗號(hào)隔開(kāi):')
print(inputstr)
表中所有字符串相關(guān)方法的使用方式都是: 字符串.方法名()
1.capitalize()
字符串.capitalize() - 將指定的字符串的第一個(gè)字符轉(zhuǎn)換成大寫(xiě)字母,返回新的字符串
注意:只有第一個(gè)字符是字母的時(shí)候才有效
str1 = 'abc'
print(str1.capitalize())
2.字符串對(duì)齊方式
"""
字符串.center(width, fillchar) - 居中, width決定新的字符串的長(zhǎng)度, fillchar就是用來(lái)填充多出來(lái)的位置的字符
width是整數(shù),fillchar是字符
字符串.ljust(width, fillchar) - 左對(duì)齊
字符串.rjust(width, fillchar) - 右對(duì)齊
"""
str1 = 'abc'
print(str1.center(7, '0'))
print(str1.ljust(7, '*'))
print(str1.rjust(7, '='))
3.count
字符串1.count(字符串2) - 在字符串1中統(tǒng)計(jì)字符串2出現(xiàn)的次數(shù)
print('abc and hight a'.count('abc'))
4.isalpha
字符串.isalpha() - 判斷字符串中是否全是字母
注意:非ASCII碼表中的字符檢測(cè)不出來(lái)族檬!
print('aSH'.isalpha())
5.join
字符串1.join(字符串2) - 將字符串1插入到字符串2中的每個(gè)字符之間
new_str = '**'.join('abc')
print(new_str)
6.split
字符串1.split(字符串2) - 以字符串2去切割字符串1,返回一個(gè)列表
print('12,89,90'.split(','))
python1809009
python1809010
練習(xí):輸入進(jìn)班順序歪赢,然后自動(dòng)產(chǎn)生對(duì)應(yīng)的學(xué)號(hào), py1809XXXX
例如:輸入1 ——> py18090001 輸入32 ——> py18090032 ...
zfill (width) == rjust(width, '0')
num = input('請(qǐng)輸入順序號(hào):')
生成序號(hào)后面變化的部分
new_num = num.rjust(4, '0')
new_num = num.zfill(4)
添加固定部分
study_num = 'py1809'+new_num
print(study_num)