整型即整數,用 int 表示,在 Python3 中整型沒有長度限制。python
1. int(num, base=None)git
int( ) 函數用於將字符串轉換爲整型,默認轉換爲十進制。算法
>>> int('123') 123 >>> int('123', base=16) 291
2. bit_length( num)api
當前數字的二進制,至少用多少位表示。dom
>>> a = 5 >>> a.bit_length() 3
浮點型即小數,用 float 表示,也能夠用科學計算法表示。函數
>>> a = 0.005 >>> a # 科學計數法 5e-3
類型轉換:this
>>> float(2) 2.0 >>> float('2') 2.0
布爾型是一種特殊的整型,用 True 和 False 或 0 和 1 表示,Python 中是 False 的有:編碼
類型轉換:spa
>>> bool(None) False
字符串是 Python 裏的文本,用 str 表示,建立一個字符串使用單引號【' '】或雙引號【" "】,引發便可。code
字符串一旦建立,不可修改,同時它也是可迭代對象。
若是字符串中的內容既有單引號,又有雙引號,有兩種辦法解決:
>>> 'Let\'s go' "Let's go"
>>> "Let's go" "Let's go"
當字符串內容行數比較多時,咱們能夠使用 三重引號引發內容。
>>> print(""" ... 從明天起,作一個幸福的人 ... 餵馬,劈柴,周遊世界 ... """) 從明天起,作一個幸福的人 餵馬,劈柴,周遊世界
PART 1:
# capitalize():將字符串內容首字母轉換爲大寫 >>> s = 'i am rose' >>> s.capitalize() 'I am rose' # casefold():將字符串的全部字符轉換爲小寫,與 lower()同樣,可是能夠轉換特殊字符 # lower():將字符串裏的全部字符都轉換爲小寫 >>> s = 'i love You' >>> s.lower() 'i love you' # upper():將字符串裏的全部字符都轉換爲大寫 >>> s.upper() 'I LOVE YOU' # count(sub,start,end):統計字符串中某個字符出現的次數,可指定範圍 >>> s = 'i am Rose, age 18' >>> s.count('a') 2 >>> s.count('a', 3, 5) 0 # startswith(suffix,start,end)、endswith(suffix,start,end) # 查找這個字符串,判斷是以什麼字符開頭或結尾,返回布爾值,可指定範圍 >>> s = 'i am Rose, age 18' >>> s.startswith('I') True >>> s.endswith('I') False # find(sub,start,end):查找某個字符,返回其下標,如有多個只返回第一個的下標,若不存在則返回 -1 >>> s = 'I am rose' # 空格也佔位 >>> s.find('a') 2 # index(sub,start,end):與 find()同樣,可是不存在則拋出 ValueError # format(*args,**kwargs):格式化字符串,將字符串中的佔位符替換爲指定值,不限參數(能夠是位置、關鍵字參數) >>>'I am {0}, age {1}'.format('rose', 18) # 位置參數 >>>'I am {name}, age {age}'.format(name='rose', age=18) # 關鍵字參數 >>> d = {'name': 'rose', 'age': 18} # 傳入字典(加 **) >>>'I am {name}, age {age}'.format(**d) >>> l = ['rose', 18] # 傳入列表(加 *) >>> 'I am {:s}, age {:d}'.format(*l) 'I am rose, age 18' # format_map():格式化字符串,接收字典 >>> 'I am {name}, age {age}'.format_map({'name': 'rose', 'age': 18}) 'I am rose, age 18' # isalnum():判斷當前字符串是否只包含字母或數字,返回布爾值 >>> s1 = 'sda12' >>> s.isalnum() True >>> s2 = '12' >>> s2.isalnum() True >>> s3 = 's_' >>> s3.isalnum() False # isalpha():判斷當前字符串全部字符是否都是字母,包括漢字,返回布爾值 >>> s1 = 'sda12' >>> s1.isalpha() False >>> s2 = '漢字' >>> s2.isalpha() True # isdecimal():判斷當前字符串全部字符是否都是數字,返回布爾值 >>> s = '123' >>> s.isdecimal() True >>> s1 = '123s' >>> s1.isdecimal() False # isdigit():判斷當前字符串全部字符是否都是數字,可識別 ②,返回布爾值 >>> s2 = '②' >>> s2.isdigit() True >>> s3 = '二' >>> s3.isdigit() False # isnumeric():判斷當前字符串全部字符是否都是數字,可識別 ②,和二,返回布爾值 >>> s3.isnumeric() True # isprintable():判斷字符串是否存在不可顯示的字符,如 \t、\n,空格等返回布爾值 >>> s6 = '' >>> s6.isprintable() True >>> s6 = ' ' >>> s6.isprintable() True # isspace():判斷字符串是否都是空格,返回布爾值 >>> s5.isspace() True >>> s6 = '' >>> s6.isspace() False # istitle():判斷字符串中每一個單詞首字母是否都是大寫,便是否是標題 >>> s = 'i love you' >>> s.istitle() False # title():將字符串標題化 >>> s.title() 'I Love You'
PART 2:
# join(iterable):以字符串爲分隔符,插入到序列的每一個字符間,傳入的列表、元組等,其中的元素必須是字符串不能是數字 >>> '-'.join('內置方法') # 以 - 分隔符 '內-置-方-法' >>> ' '.join('內置方法') '內 置 方 法' >>> '-'.join(['abd', '123']) 'abd-123' # ljust(width,fillchar=None):將字符串居左,右邊以字符填充,默認以空格填充,能夠指定寬度 # rjust(width,fillchar=None):將字符串居右,左邊以字符填充,默認以空格填充,能夠指定寬度 # center(width,fillchar=None):將字符串居中,兩邊以字符填充,默認以空格填充,能夠指定寬度 >>> s = 'love' >>> s.ljust(10, '*') 'love******' >>> s.rjust(10, '*') '******love' >>> s.center(10, '*') '***love***' # zfill(width):返回長度爲 width 的字符串,原字符串右對齊,前面以 0 填充 >>> s = 'abc' >>> s.zfill(10) '0000000abc' # islower()、isupper():判斷字符串全部字符是否都是小寫或大寫,返回布爾值 >>> s = 'i love you' >>> s.islower() True >>> s.isupper() False # lstrip(chars=None):去掉字符串左邊全部空格,包括 \t、\n # rstrip(chras=None):去掉字符串右邊全部空格,包括 \t、\n # strip(chras=None):去掉字符串兩邊全部空格,包括 \t、\n >>> s = ' 123 ' >>> s.lstrip() '123 ' >>> s.rstrip() ' 123' >>> s.strip() '123' # partition(sep):separator 分隔符,從左邊開始分割字符串,只能分紅三份,多個時只返回第一個 >>> s = 'testsadsabc' >>> s.partition('s') ('te', 's', 'tsadsabc') # rpartition(sep):從右邊開始分割字符串,只能分紅三份,多個時只返回第一個 >>> s.rpartition('s') ('testsad', 's', 'abc') # split(sep=None,maxsplit=-1):不帶參數,默認以空格分割字符串,可指定最大分割次數,返回分割後子串列表 >>> s = 'testlosve' # 不包含分割字符 >>> s.split('s') ['te', 'tlo', 've'] # rsplit(sep=None,maxsplit=-1):從右邊分割字符串,與 split()相似 >>> s.rsplit('s') ['te', 'tlo', 've'] # splitlines([keepends]):以 \n 分割,返回一個列表,TRUE、False 表示是否保留換行符 >>> s = 'testab\ncd\nh' >>> s.splitlines() ['testab', 'cd', 'h'] >>> s.splitlines(True) ['testab\n', 'cd\n', 'h'] >>> s.splitlines(False) ['testab', 'cd', 'h'] # swapcase():翻轉大小寫 >>> s = 'abc' >>> s.swapcase() 'ABC' # maketrans():用於建立字符映射的轉換表,兩個參數,第一個爲要轉換的字符,第二個爲轉換的目標,二者長度一致 # translate(table):根據 table規則(由 str.maketrans('a', 'b')制定),轉換字符串字符。 >>> s = 'this is string' >>> s.translate(s.maketrans('aeiou', '12345')) # aeiou 與 12345 一一對應 'th3s 3s str3ng' # replace(old,new[,count]):把字符串中的 old 字符替換成 new 字符,count 爲替換次數,可選 >>> s = 'hello' >>> s.replace('e', 'h') 'hhllo' >>> s # 不改變原始字符串 'hello' # expandtabs([tabsize=8]):將字符串中的 \t 轉換爲空格,可指定長度,默認 tabsize = 8 >>> s = 'username\teamil\tpassword\nlixiang\tlixiang@qq.com\t123456' >>> s.expandtabs(20) username eamil password lixiang lixiang@qq.com 123456 # bit_length():返回一個 int 用二進制表示須要多少位,不包含前導數和符號 >>> n = 37 >>> n.bit_length() 6 # bin(number):返回一個 int 的二進制表示 >>> bin(37) '0b100101' # 37 用二進制表示,恰好 6 位 # encode(encoding='utf-8', errors='strict):以 encoding 方式編碼字符串,errors 指定不一樣的錯誤處理方案,返回編碼後的字符串,是一個 bytes 對象 # bytes.decode(encoding='utf-8', errors='strict):以指定的編碼格式解碼 bytes 對象,默認 utf-8 >>> s = '編碼解碼' >>> s1 = s.encode('utf-8') >>> s2 = s.encode('gbk') >>> s1 b'\xe7\xbc\x96\xe7\xa0\x81\xe8\xa7\xa3\xe7\xa0\x81' >>> s2 b'\xb1\xe0\xc2\xeb\xbd\xe2\xc2\xeb' >>> s1.decode('utf-8', 'strict') # 解碼,以什麼方式編碼就以什麼方式解碼 '編碼解碼' >>> s2.decode('gbk', 'strict') '編碼解碼'
獲取字符串中某個字符,只需傳入索引便可,索引從 0 開始,支持負數索引(最後一個爲 -1)
>>> s = 'hello' >>> s[0] 'h' >>> s[-1] 'o'
字符串是可迭代對象,所以也支持切片:
>>> s = 'hello' >>> s[0:2] 'he' >>> s[-2:-1] 'l'
一樣地 也支持 for 循環遍歷其中每個元素:
>>> for i in s: ... print(i) ... h e l l o
len()能夠獲取字符串長度
>>> len('hi') 2
爲了保證內存的連續性,字符串一旦建立,不容許被修改;一旦修改,將會產生新的字符串,使用鏈接符 + 能夠將兩個字符串拼接成一個新的字符串。
>>> myteacher = '李' >>> yourteacher = '老師' >>> ourteacher = myteacher + yourteacher >>> ourteacher '李老師'
Python 中不一樣數據類型是不能拼接的,可是能夠使用別的方法實現:
>>> print('score' + ':' + str(95)) # 使用 + 鏈接符須要考慮是不是相同數據類型 score:95 >>> print('score:',95) # 能夠不用考慮數據類型 score: 95
全部的字符串都是按照字面的意思來使用,沒有轉義特殊和不能打印的字符。
當字符串中有反斜槓 時,每每會被當成轉義字符處理,而有些時候咱們並不須要將反斜槓保存下來,有兩種方法,一是再加一個反斜槓將其保存下來,可是當反斜槓不少時候,就顯得很亂:
>>> s = 'c:\\now' >>> s 'c:\\now' >>> print(s) c:\now
另外一個方法就是使用原始字符串 raw,只須要在字符串前面加個 r 便可,它會自動在程序內部添加反斜槓,無需手動添加:
>>> s = r'c:\now' >>> s # 自動添加 \ 'c:\\now' >>> print(s) c:\now
格式化字符串,即將字符串中的佔位符替換爲指定值。
1. format()
format()方法接收位置參數和關鍵字參數,分別使用位置、關鍵字佔位:
語法:
format(*args,**kwargs)
位置參數:
>>>'I am {0}, age {1}'.format('rose', 18) # 位置參數 I am rose, age 18
關鍵字參數:
>>>'I am {name}, age {age}'.format(name='rose', age=18) # 關鍵字參數 I am rose, age 18
也能夠接收列表和字典做爲參數傳入,只需在列表前面添加 *,字典前面添加 ** 便可:
>>> d = {'name': 'rose', 'age': 18} # 傳入字典(加 **) >>>'I am {name}, age {age}'.format(**d) >>> l = ['rose', 18] # 傳入列表(加 *) >>> 'I am {:s}, age {:d}'.format(*l) 'I am rose, age 18'
2. 格式化操做符 %
Python 提供了一系列的格式化操做符,用於格式化字符串。
符號 | 含義 |
---|---|
%s | 格式化字符串 |
%d | 格式化整數 |
%c | 格式化字符及 ASCII 碼 |
%o | 格式化無符號八進制數 |
%x | 格式化無符號十六進制數 |
%X | 格式化無符號十六進制(大寫) |
%f | 格式化浮點數,可指定小數點後的精度 |
%e | 用科學計數法格式化浮點數 |
%E | 做用同 %e,用科學計數法格式化浮點數 |
%g | 根據值的大小決定使用 %f 或 %e |
%G | z做用同 %g,根據值的大小決定使用 %f 或 %E |
示例:
>>> msg = 'I am %s, age %d' % ('rose', 18) >>> msg 'I am rose, age 18' # 保留兩位有效小數(在 f 前面添加 .2) >>> s = 'percent: %.2f' % 97.687 >>> s 'percent: 97.69' # 保留百分號(在 f 後面添加兩個 %) >>> s1 = 'percent: %.2f%%' % 97.687 >>> s1 'percent: 97.69%' >>> s2 = 'I am %(name)s, age %(age)d' % {'name':'rose', 'age':18} >>> s2 'I am rose, age 18' >>> s3 = 'I am %(pp).2f' % {'pp':123.4567} >>> s3 'I am 123.46'
1. Python 2 和 Python 3 中 range()區別?
2. 實現一個加法計算器(如 5 + 9)?
value = '5 + 9' v1, v2 = value.split('+') print(int(v1) + int(v2))
3. int 和 二、str 和 ‘xx' 的關係?
類和對象的關係
4. 計算用戶輸入的內容有幾個數字,幾個字母?
n = input('請輸入內容:') # input()接收的內容爲 字符串 a = 0, b = 0 # 統計數字、字母 for i in n: # 對內容遍歷循環 if i.isdecimal(): # 判斷是不是數字 a += 1 else: b +=1 print(a, b)
5. 製做隨機驗證碼,不區分大小寫
流程以下:
# 每次生成一個字符,循環四次,生成四個字符,即一個驗證碼 import random verify_coe = '' for i in range(4): current = random.randrange(0, 4) # if current != i: # chr()能夠將數字轉換爲 ASCII 碼錶中所對應的字符,65~90 對應 A~Z,98~122 對應 a~z # 生成一個 65~90 的隨機整數,並將其轉換爲大寫字母 temp = chr(random.randint(65, 90)) else: temp = random.randint(0, 9) # 生成一個 0~9 的隨機整數 verify_code += str(temp) while True: n = input('請輸入驗證碼:') if n.upper == verify_code: print('輸入正確') break else: print('輸入錯誤,請從新輸入')
使用函數寫:
import random def check_code(): """ 生成隨機驗證碼 :return: 驗證碼 """ verify_code = '' for i in range(4): current = random.randrange(0, 4) # if current != i: # chr()能夠將數字轉換爲 ASCII 碼錶中所對應的字符,65~90 對應 A~Z,98~122 對應 a~z # 生成一個 65~90 的隨機整數,並將其轉換爲大寫字母 temp = chr(random.randint(65, 90)) else: temp = random.randint(0, 9) # 生成一個 0~9 的隨機整數 verify_code += str(temp) return verify_code def verify(code): """ 驗證用戶輸入的驗證碼是否與隨機生成的一致 :param code: :return: """ while True: n = input('請輸入驗證碼:') if n.upper() == code: # 不區分大小寫 print('輸入正確') break else: print('輸入錯誤,請從新輸入!') def main(): code = check_code() print(code) verify(code) main()
6. 製做表格
循環提示用戶輸入:用戶名、密碼和郵箱(不超過 20 個字符,超過只取前 20 個字符,)若輸入 q 或 Q 則退出,將內容以表格形式顯示:
s = '' while True: user = input('請輸入用戶名:') if user == 'q' or user == 'Q': break psd = input('請輸入密碼:') email = input('請輸入郵箱:') user_one = user[0:20] psd_one = psd[0:20] email_one = email[0:20] temp1 = 'username\tpassword\temial\n' temp2 = '{0}\t{1}\t{2}\n' a = temp2.format(user_one, psd_one, email_one) s += a print(temp1.expandtabs(20), s.expandtabs(20))
請輸入用戶名:rose 請輸入密碼:123456 請輸入郵箱:123456@qq.com username password emial rose 123456 123456@qq.com