# 開發(fā)人員: hanhan丶
# 開發(fā)時間: 2020/10/21 14:37
#######################################################################################################
# 將數(shù)據(jù)輸出到文件中
# fp = open('D:/test.txt','a+')? # a+(沒有這個文件的情況下創(chuàng)建這個文件,如果存在就在文件中繼續(xù)添加)
# print('123',file=fp)
# fp.close()
#######################################################################################################
# 轉義字符
# print('hello\nworld')? # \n換行打印
# print('hello\tworld')? # \t代表4組空格
# print('hello\rworld')? # \r之前的全刪掉店枣,輸出world
# print('hello\bworld')? # \b代表退一格,輸出hellworld
# print('大家好:\'我是py\'')? # 單引號中輸出單引號
#######################################################################################################
# 原字符 (不希望專業(yè)字符起作用洽蛀,就使用原字符,在字符串前加上r或R? !!!最后一個字符不能是“\”)
# print(r'hello\nworld')
# print(R'hello\nworld')
#######################################################################################################
# 2進制? 計算機只識別2進制? 一共有2怠苔,8吱七,10刚盈,16
# print(chr(0b100111001011000))? # 0b代表2進制
# print(ord('乘'))? # ord()轉化成10進制
# print(0o777)? # 10進制
# print(0x1EAF)? # 16進制
#######################################################################################################
# 關鍵字
# import keyword
# print(keyword.kwlist)? # 輸出所有關鍵字
#######################################################################################################
# 浮點數(shù)? (因計算機是2進制羡洛,浮點數(shù)計算可能不準確,可以使用一下方法)
# from decimal import Decimal
# print(Decimal('1.1')+Decimal('2.2'))
#######################################################################################################
# str 和 int 之間的類型轉換
# name = 'xuhan'
# age = 18
# print('my name is' + name + ' ' + 'my age is' + ' ' + str(age))
#######################################################################################################
# input()
# a = input('請輸入加數(shù)')
# b = input('請輸入另一個加數(shù)')
# print(int(a)+int(b))
#######################################################################################################
# is is not
# a = 10
# b = 10
# print(a == b)? # 是在比較value
# print(a is b)? # 是在比較id
# print(a is not b)? # a的id和b的id是不相等的嗎
#######################################################################################################
# and or not
# a = 1
# b = 2
# c = True
# d = False
# print(a==1 and b==2)
# print(a==1 and b!=2)
# print(a==1 or b==2)
# print(a==1 or b!=2)
# print(not c)
# print(not d)
#######################################################################################################
# in? not in
# a = 'abcd'
# print('a' in a)
# print('f' in a)
# print('a' not in a)
# print('f' not in a)
#######################################################################################################
# 位運算符
# print(4&8)? # 按位與& 同為1時結果為1
# print(4|8)? # 按位或| 同為0時結果為0
# print(4<<1)? # 向左移動一位(移動一個位置)藕漱,相當于乘以2
# print(4<<2)? # 向左移動兩位(移動兩個位置)欲侮,相當于乘以4
# print(4>>1)? # 向右移動一位(移動一個位置),相當于除以2
# print(4>>2)? # 向右移動兩位(移動兩個位置)肋联,相當于除以4
#######################################################################################################
# if elif else? (多分支結構)
# num = int(input("請輸入金額"))
# if 90<=num<=100:
#? ? print('A')
# elif 80<=num<=89:
#? ? print('B')
# else:
#? ? print('C')
##########################
# if num < 0 or num > 100:
#? ? print('非法數(shù)字')
# elif num <= 59:
#? ? print('不及格')
# else:
#? ? print('及格')
# identity = input('您是會員嗎威蕉?y/n')
# num = int(input('輸入消費金額'))
# if identity == 'y':
#? ? if 100 <= num <= 200:
#? ? ? ? input('ziyuanma')
#? ? ? ? print('打8折')
#? ? elif 0 <= num <= 99:
#? ? ? ? print('打9折')
# elif identity == 'n':
#? ? print('非會員')
#######################################################################################################
# 條件表達式
# a = int(input('輸入a'))
# b = int(input('輸入b'))
# print(str(a) + '大于等于' + str(b) if a >= b else str(a) + '小于' + str(b))
#######################################################################################################
# pass語句,什么都不做只是一個占位符橄仍,用到需要寫語句的地方
# a = input('您是會員嗎韧涨?y/n')
# if a == "y":
#? ? pass
# else:
#? ? pass
#######################################################################################################
# range()的三種創(chuàng)建方式
# 1.第一種創(chuàng)建方式,只有一個參數(shù)(小括號中只有一個數(shù))
# r = range(10)? ? ? ? # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 默認從0開始侮繁,默認相差1虑粥,稱為步長
# print(r)? ? ? ? ? ? # range(0, 10)
# print(list(r))? ? ? # 用于查看range函數(shù)中的整數(shù)序列,
# 2.第二種創(chuàng)建方式鼎天,有兩個參數(shù)
# r = range(1,5)? ? ? ? # 指定了從1開始到5,但不包含5暑竟,默認步長為1
# print(r)? ? ? ? ? ? ? # range(1, 5)
# print(list(r))? ? ? ? # [1, 2, 3, 4]
# 第三種創(chuàng)建方式斋射,有三個參數(shù)
# r = range(1, 10, 2)? # 第一個參數(shù)是起始位置育勺,第二個參數(shù)是結束位置但不包含,第三個是步長
# print(list(r))? # [1, 3, 5, 7, 9]
# print(8 in r)? # False
#######################################################################################################
# 判斷條件表達式? while循環(huán)
# a = 1
# while a <= 4:
#? ? print(a)
#? ? a += a
#######################################################################################################
# 求0-4之間的累加和
# num = 0
# a = 0
# while a <= 4:
#? ? num += a
#? ? a += 1
# print(num)
#######################################################################################################
# 求1-100之間的偶數(shù)和
# num = 0
# a = 0
# while a <= 100:
#? ? if not bool(a % 2):? ? # 因為a%2是fasle罗岖,not 就是取不是false的就是true的
#? ? ? ? num += a
#? ? a += 1
# print(num)
#######################################################################################################
# 求0-100奇數(shù)的和
# num = 0
# a = 0
# while a <= 100:
#? ? if a % 2:? # 這個等于 a%2==0? 因為0就是false? false就進入判斷中
#? ? ? ? num += a
#? ? a += 1
# print(num)
#######################################################################################################
# for in 循環(huán)
# for item in 'xuhan':
#? ? print(item)
# for i in range(10):
#? ? print(i)
# for _ in range(10):? ? # 當你不需要打印每一次的值的時候涧至,可以用 _ 來表示
#? ? print('小徐最帥啦')
#######################################################################################################
# 使用for循環(huán)計算0-100的偶數(shù)累加和
# num = 0
# for item in range(1, 101):
#? ? if not bool(item % 2):
#? ? ? ? num += item
# print(num)
#######################################################################################################
# 使用for循環(huán)算數(shù)0-100基數(shù)的和
# num = 0
# for item in range(1,101):
#? ? if bool(item%2):
#? ? ? ? num+=item
# print(num)
#######################################################################################################
# 使用for循環(huán)算出100-999之間的水仙花數(shù)
# num = 0
# for item in range(100, 1000):
#? ? ge = item % 10? # 個位
#? ? shi = item // 10 % 10? # 十位
#? ? bai = item // 100? # 百位
#? ? if ge ** 3 + shi ** 3 + bai ** 3 == item:
#? ? ? ? num += item
#? ? item += 1
# print(num)
#######################################################################################################
# 流程控制語句break
# 從鍵盤錄入密碼,最多3次桑包,正確結束循環(huán)
# num = 3
# for item in range(1, 4):
#? ? b = input('請輸入密碼')
#? ? if b == '3':
#? ? ? ? print('輸入正確')
#? ? ? ? break
#? ? else:
#? ? ? ? num -= 1
#? ? ? ? print('輸入錯誤請重試,還剩余' + str(num) + '次')
#######################################################################################################
# while循環(huán)執(zhí)行上面的需求
# a = 0
# while a < 3:
#? ? b = input('請輸入密碼')
#? ? if b=='3':
#? ? ? ? print('登陸成功')
#? ? ? ? break
#? ? else:
#? ? ? ? print('密碼錯誤')
#? ? a += 1
#######################################################################################################
# continue語句 用于結束當前循環(huán)南蓬,執(zhí)行下一次循環(huán),通常與分支中的if一起使用
# 要求算數(shù)0-50之間所有5的倍數(shù) 使用continue
# for item in range(1, 51):
#? ? if bool(item % 5):
#? ? ? ? continue
#? ? print(item)
#######################################################################################################
# for 中的 else? while中的else同理
# for item in range(3):
#? ? b = input('請輸入密碼')
#? ? if b == '3':
#? ? ? ? print('輸入正確')
#? ? ? ? break
#? ? else:
#? ? ? ? print('密碼不正確')
# else:
#? ? print('3次機會已經(jīng)用完')
#######################################################################################################
# 輸出一個三行四列的矩形
# for item in range(3):
#? ? for test in range(4):
#? ? ? ? print('*',end="\t")? ? # 不換行輸出
#? ? print() # 換行
#######################################################################################################
# 制作一個99乘法表
# for i in range(1,10):? ? ? ? ? ? # 外行控制的是行數(shù)
#? ? for j in range(1,i+1):? ? ? ? # 內行控制的是打印的個數(shù)
#? ? ? ? print(str(j),'*',str(i),'=',j*i,end="\t")
#? ? print()
#######################################################################################################
# 二重循環(huán)中的break和contiune 只會對本層的循環(huán)有影響對外層的循環(huán)沒有影響
# for i in range(5):
#? ? for j in range(1,11):
#? ? ? ? if j % 2 == 0:
#? ? ? ? ? ? ? #break
# continue
# print(j, end="\t")
# print()
#######################################################################################################
# 列表list
# arr = ['a',1,'b',2,1,9]
# print(arr.index(1,2,5))? # 查找一個數(shù)組中有相同元素的方法
# print(arr.index(1))? ? # 若列表中有多個相同元素哑了,只會返回第一個元素所在的索引
# print(arr)
# print(arr[0])
# print(arr[-4])
#######################################################################################################
# 列表切片
# arr = [10, 20, 30, 40, 50, 60, 70, 80]
# print(arr[1:6:1])? ? ? # start:end:步長赘方,返回新數(shù)組 1是索引,6也是索引弱左,到6停止但不包含6窄陡,1為步長
# print(arr[::-1])? ? ? ? # start和end默認的情況和步長為-1時,數(shù)組倒序
# print(arr[1:0:-1])? ? ? ? # 輸出結果[20] 從索引1開始拆火,步長為一往回走跳夭,到索引為0但是不包含0,就只剩20
#######################################################################################################
# 列表中的 in们镜,not in
# arr = [1,'2',3]
# print(1 in arr)? ? ? ? # True
# print(2 in arr)? ? ? ? # False
# print(1 not in arr)? ? # False
# print(2 not in arr)? ? # True
#######################################################################################################
# 列表中的遍歷? for in 循環(huán)
# arr = [1,'2',3,'4']
# for item in arr:
#? ? print(type(item))
#######################################################################################################
# 列表元素的增加操作
# 1.append() 在列表末尾添加一元素
# 2.extend() 在列表末尾至少添加一個元素
# 3.insert() 在列表的任意位置添加一個元素
# 4.切片? ? ? 在列表任意位置添加至少一個元素
# arr = [1,2,3,4]
# arr2 = [5,6]
# arr.append(arr2)? ? # 不返回新數(shù)組? [1, 2, 3, 4, [5, 6]]? ? !!!常用!!!
# arr.extend(arr2)? ? #? [1, 2, 3, 4, 5, 6]
# arr.insert(1,1.5)? #? [1, 1.5, 2, 3, 4]? 1是索引币叹,1.5是插入的值
# arr[1:] = arr2? ? ? #? [1, 5, 6]? 1是索引,把原數(shù)組的1之后的刪掉模狭,把新數(shù)組的內容添加進去
# print(arr)
#######################################################################################################
# 列表元素的刪除操作
# 1.remove() 一次刪除一個元素颈抚,重復元素只刪除第一個,元素不存在拋出valueError
# 2.pop()? ? 刪除一個指定索引位置上的元素胞皱,指定索引不存在就拋出IndexError邪意,不指定索引刪除列表中最后一個元素
# 3.切片? ? ? 一次最少刪除一個元素,返回新數(shù)組
# 4.clear()? 清空列表
# 5.del? ? ? 刪除列表
# arr = [1,2,3,4,1,5]
# arr.remove(1)? ? ? # 只刪除第一個1 [2,3,4,1,5]
# arr.pop(1)? ? ? ? # 根據(jù)索引刪除[1, 3, 4, 1, 5]
# arr2 = arr[1:3]? ? # 返回新的數(shù)組 [2, 3] 返回的是切掉的內容
# print(arr2)
# arr[1:3] = []? ? ? # 不返回新列表的方法[1, 4, 1, 5]
# arr.clear()? ? ? ? # 清空整個列表[]
# del arr? ? ? ? ? ? # 刪除整個列表NameError: name 'arr' is not defined
# print(arr)
#######################################################################################################
# 列表元素的修改操作
# arr = [1,2,3,4,5]
# arr[1] = 6? ? ? # [1, 6, 3, 4, 5]
# arr[1:3] = [9,5.5,8.032,'a']? ? # [1, 9, 5.5, 8.032, 'a', 4, 5]
# print(arr)
#######################################################################################################
# 列表元素的排序操作
# arr = [1,3.9,5,6,2,4,3,3.4,0.3]
# 1.sort()? 列表排序方法反砌,默認升序排序 不返回新數(shù)組雾鬼。revrese=Ture降序排序
# 2.sorted()? 內置函數(shù),產(chǎn)生新的數(shù)組
# 區(qū)別:sort()對遠列表進行排序宴树,sorted()對新列表進行排序
# arr.sort()? ? ? ? ? ? ? ? # [0.3, 1, 2, 3, 3.4, 3.9, 4, 5, 6]
# arr.sort(reverse=True)? ? # [6, 5, 4, 3.9, 3.4, 3, 2, 1, 0.3] reverse=False就是升序排序
# arr2 = sorted(arr)? ? ? ? # [0.3, 1, 2, 3, 3.4, 3.9, 4, 5, 6]
# arr2 = sorted(arr,reverse=True)? # [6, 5, 4, 3.9, 3.4, 3, 2, 1, 0.3]
# print(arr2)
#######################################################################################################
# 列表生成式( 生成列表的公式)
# arr = [item for item in range(1,10)]? ? # 最終列表存儲的是i
# print(arr)? ? ? ? ? # [1, 2, 3, 4, 5, 6, 7, 8, 9]
#? 生成列表為2策菜,4,6酒贬,8又憨,10
# arr = [i for i in range(2,11,2)]
# arr = [i*2 for i in range(1,6) ]
# print(arr)
#######################################################################################################
# 字典的創(chuàng)建
# obj = {? ? ? ? ? ? ? ? ? ? ? ? # key值必須用引號引起來
#? ? 'a':'12',
#? ? 'b':13
# }
# obj = dict(name='xuhan', age=12)? # key值必須不加引號
# print(obj)
#######################################################################################################
# 字典中獲取數(shù)據(jù)
# 1.[]
# 2.get()
# 區(qū)別:當找一個對象中不存在的key值的時候,【】會返回KeyError,get()會返回None锭吨,輸入默認值的話蠢莺,會返回默認值
# dict = {
#? ? 'name':'xuhan',
#? ? 'age':18
# }
# print(dict['name'])? # 必須加上引號xuhan
# dict = dict(name='xuhan',age=16)
# print(dict['age'])? ? ? # 必須加引號16
# print(dict.get('name'))? # 必須加引號xuhan
# print(dict.get('gender','沒找到但是我默認是男'))? ? # 當沒有找到查找的key值的時候,返回默認值
#######################################################################################################
# key 的判斷
# dict = dict(name='xuhan', age=16)
# print('name' in dict)? ? ? ? ? ? # True
# print('name' not in dict)? ? ? ? # False
# 字典元素的刪除
# dict = dict(name='xuhan', age=16)
# del dict['name']? ? ? # {'age': 16} 刪除指定的鍵值對 key:value
# dict.clear()? ? ? ? ? # {} 清空字典
# print(dict)
# 字典元素的新值
# dict = dict(name='xuhan', age=16)
# dict['gender'] = '男'
# print(dict)
# 字典元素的修改
# dict = dict(name='xuhan', age=16)
# dict['name']='xuhan23'
# print(dict)
# 獲取字典視圖的3個方式
# dict = dict(name='xuhan', age=16)
# print(dict.keys())? ? ? # dict_keys(['name', 'age'])? ? type為dict_keys
# print(dict.values())? ? # dict_values(['xuhan', 16])? ? type為dict_values
# print(dict.items())? ? # dict_items([('name', 'xuhan'), ('age', 16)])? ? type為dict_items
# 字典元素的遍歷
# dict = dict(name='xuhan', age=16)
# for i in dict:
# print(i)? ? # name age
# print(dict[i]) # xuhan 16
# print(dict.get(i)) # xuhan 16
# 字典生成式
# obj = ['name', 'age', 'gender']
# val = ['xuhan', 18, '男']
# dict = {obj.upper(): val for obj, val in zip(obj, val)}? ? # {'NAME': 'xuhan', 'AGE': 18, 'GENDER': '男'} upper()變大寫? zip()打包壓縮
# print(dict)
#######################################################################################################
# 不可變序列和可變序列
# 可變序列 列表 字典? 內存地址不會更改
# arr = [1,2,3]
# print(id(arr))? ? # 2084900910528
# arr.append(4)
# print(id(arr))? ? # 2084900910528
# 不可變序列 字符串 元組? 內存地址發(fā)生更改
# font = 'ni'
# print(id(font))? ? # 1640823668336
# font = font + 'hao'
# print(id(font))? ? # 1640824975792
#######################################################################################################
# 元組
# 創(chuàng)建元組
# a = (1,2,'3',4.4)? # 第一種創(chuàng)建方式零如,使用()
# a = tuple((4, 5, '6', 7.7))? # 第二種創(chuàng)建方式躏将,使用內置函數(shù)tuple()
# a = (1,)? ? ? ? # 若括號中只有一個數(shù)據(jù)的時候锄弱,結尾必須加上逗號
# print(a)
#######################################################################################################
# 元組為什么是不可變的
# tuple = (1,[2,3],4)
# tuple[1] = 5? ? # TypeError: 'tuple' object does not support item assignment
# tuple[1].append(6)? ? # (1, [2, 3, 6], 4) 可以append因為列表是可變的,但是不能修改元組祸憋,元組是不可變的
# print(tuple)
#######################################################################################################
# 元組的遍歷
# tuple = (1,23,56,8)
# for item in tuple:
#? ? print(item)
#######################################################################################################
# 集合? 可變類型序列 無序的会宪,經(jīng)過hash模式
# 集合的創(chuàng)建方式
# a = {1,2,3,1,2,3}? ? # 使用{}創(chuàng)建,只有key蚯窥,沒有value? {1, 2, 3}? 自動過濾重復的元素? 無序
# a = set(range(6))? ? ? # 使用set()內置函數(shù)創(chuàng)建? ? {0, 1, 2, 3, 4, 5}? 自動過濾重復的元素? 無序
# a = set([1,1,2,2,3,3])? ? # {1, 2, 3}? 可以將列表中的元素轉化成集合中的元素? 自動過濾重復的元素? 無序
# a = set((1,1,2,2,3,3,4))? ? # {1, 2, 3, 4}? 可以將元組中的元素轉化成集合中的元素? 自動過濾重復的元素? 無序
# a = set('helloeeee world')? ? # {' ', 'w', 'o', 'l', 'd', 'r', 'e', 'h'} 可以將字符串中的元素轉化成集合中的元素? 自動過濾重復的元素? 無序
# a = set({1,2,3,1,2,3})? ? # {1, 2, 3}
# print(a)? ? # {1, 2, 3} 集合中的元素不可以重復
#######################################################################################################
# 定義一個空集合
# a = set()
# print(type(a))? ? #
#######################################################################################################
# 集合元素的判斷操作in not in
# a = {1,3,5,7,9}
# print(1 in a)
# print(1 not in a)
# print(2 in a)
# print(2 not in a)
#######################################################################################################
# 集合元素的新增操作add() update()
# a = {1,2,3,4,5,6}
# a.add(1.7)? ? # {1, 2, 3, 4, 5, 6, 1.7}? 添加一個
# a.update({1,6,9})? # {1, 2, 3, 4, 5, 6, 9}? 自動過濾重復的元素 列表 元組都可以添加? 添加多個
# a.update('123',[8.6,5.2],(789,'da'))? ? # {1, 2, 3, 4, 5, 6, '1', 8.6, '2', 5.2, 789, 'da', '3'}
# a.update(560)? ? # TypeError: 'int' object is not iterable
# print(a)
#######################################################################################################
# 集合元素的刪除操作
# 1.remove()一次刪除一個指定元素
# 2.discard()一次刪除一個指定元素
# 3.pop()一次只刪除第一個元素
# 4.clear()清空集合
# a = {1,2,3,4,5,6}
# a.remove(2)? ? # {1, 3, 4, 5, 6}
# a.remove(7)? ? # KeyError: 7? 沒有這個元素會拋出異常
# a.discard(5)? ? # {1, 2, 3, 4, 6}
# a.discard(7)? ? # {1, 2, 3, 4, 5, 6}? 沒有這個元素不會拋出異常
# a.pop()? ? ? # {2, 3, 4, 5, 6} 只能刪除第一個元素掸鹅,不能添加參數(shù)
# a.clear()? ? # set()
# print(a)
#######################################################################################################
# 集合間的關系
# 判斷兩個集合是否相等
# a = {1, 2, 3, 5, 8}
# b = {2, 3, 8, 5, 1}
# print(a==b)? ? #? True 因為序列是無序的
# print(a!=b)? ? # False
#######################################################################################################
# 判斷一個集合是否是另一個集合的子集
# a = {1,2,3,4,5,6}
# b = {2,5,1}
# c = {1,2,4,9}
# print(b.issubset(a))? ? # True
# print(c.issubset(a))? ? # False
#######################################################################################################
# 判斷一個集合是否是另一個集合的超集
# a = {1,2,3,4,5,6}
# b = {2,5,1}
# c = {1,2,4,9}
# print(a.issuperset(b))? # True
# print(a.issuperset(c))? # False
#######################################################################################################
# 判斷兩個集合是否沒有交集
# a = {1,2,3,4,5,6}
# b = {2,5,1}
# c = {98,8,7}
# print(a.isdisjoint(b))? # False? 語法意思是是否沒有交集 返回False就是有交集
# print(c.isdisjoint(a))? # True? 返回True就是沒有交集
#######################################################################################################
# 集合的數(shù)學操作
# 1.交集
# a = {1,2,3}
# b = {2,3,4}
# print(a.intersection(b))? ? # {2, 3}
# print(a & b)? ? # {2, 3} "&" 求交集的符號
# 2.并集
# a = {1,2,3}
# b = {2,3,4}
# print(a.union(b))? # {1, 2, 3, 4}
# print(a | b)? ? # {1, 2, 3, 4}? "|" 求并集的符號
# 3.差集
# a = {1, 2, 3}
# b = {2, 3, 4}
# print(a.difference(b))? # {1}
# print(b.difference(a))? # {4}
# print(a - b)? # "-" 求差集的符號
# print(b - a)
# 4.對稱差集
# a = {1, 2, 3}
# b = {2, 3, 4}
# print(a.symmetric_difference(b))? # {1, 4}
# print(b.symmetric_difference(a))? # {1, 4}
# print(a ^ b)? # {1, 4}? "^" 求對稱差集的符號
#######################################################################################################
# 集合生成式
# a = {1,2,3}
# b = { i for i in range(6)}
# print(type(b))? ? # 無序的 !@乖N∩场!
#######################################################################################################
# 字符串的創(chuàng)建與駐留機制
# a = 'a'
# b = 'a'
# c = 'a'
# print(id(a))? # 2247003362736
# print(id(b))? # 2247003362736
# print(id(c))? # 2247003362736
#######################################################################################################
# 字符串的查詢
# a = 'abcdefgabcdefg'
# print(a.index('q'))? # 查到字符串第一次出現(xiàn)的位置 如果沒有返回ValueError: substring not found
# print(a.find('q'))? # 查到字符串第一次出現(xiàn)的位置 如果沒有返回-1
# print(a.rindex('b'))? # 8 查到字符串最后一次出現(xiàn)的位置 如果沒有返回ValueError: substring not found
# print(a.rfind('b'))? # 8 查到字符串最后一次出現(xiàn)的位置 如果沒有返回-1
#######################################################################################################
# 字符串大小寫轉換的方法
# 1.upper()轉成大寫
# 2.lower()轉成小寫
# 3.swapcase()把所有大寫的元素轉換成小寫的矛紫,把所有小寫的轉化成大寫的
# 4.title()把每個單詞的首字符變成大寫赎瞎,其余的變成小寫
# 5.capitalize()把一個字符轉換成大寫其余轉換成小寫
# a = 'abcdefgabcdefg'
# c = 'AbCdEfG'
# d = 'adSDl Adas lDF'
# b = a.upper()? # 轉成大寫之后會產(chǎn)生一個新的字符串對象
# print(a)? ? # abcdefgabcdefg
# print(b)? ? # ABCDEFGABCDEFG
# print(b.lower())? ? # abcdefgabcdefg 轉成小寫之后會產(chǎn)生一個新的字符串對象
# s = c.swapcase()? # 把所有大寫的元素轉換成小寫的,把所有小寫的轉化成大寫的
# print(s)? ? # aBcDeFg
# x = d.title()? # 把每個單詞的首字符變成大寫颊咬,其余的變成小寫
# print(x)? ? # Adsdl Adas Ldf
# j = d.capitalize()? ? # 把一個字符轉換成大寫其余轉換成小寫
# print(j)? # Adsdl adas ldf
#######################################################################################################
# 字符串內容對齊的方法
# 1.center()居中對齊务甥,第一個參數(shù)指定寬度,第二個參數(shù)指定填充符喳篇,第二個參數(shù)是可選的敞临,默認是空格,如果設置的寬度小于實際寬度則返回原字符串
# 2.ljust()左對齊麸澜,第一個參數(shù)指定寬度挺尿,第二個參數(shù)指定填充符,第二個參數(shù)是可選的炊邦,默認是空格编矾,如果設置的寬度小于實際寬度則返回原字符串
# 3.rjust()右對齊,第一個參數(shù)指定寬度馁害,第二個參數(shù)指定填充符窄俏,第二個參數(shù)是可選的,默認是空格碘菜,如果設置的寬度小于實際寬度則返回原字符串
# 4.zfill()右對齊凹蜈,左邊用0填充,該方法只接收一個參數(shù)忍啸,用于指定字符串的參數(shù)仰坦,如果設置的寬度小于實際寬度則返回原字符串
# a = 'hello world'
# print(a.center(20,'*'))? # ****hello world*****? 字符串長度是11,用(20-11)/2就是兩邊各占的字符
# print(a.ljust(20,'*'))? # hello world*********? ? 全部填充到右邊
# print(a.rjust(20,'*'))? # *********hello world? ? 全部填充到左邊
# print(a.zfill(20))? ? ? # 000000000hello world
# print('-8989'.zfill(8))? # -0008989? 會加在-號的后面计雌,算上-號一共8位
#######################################################################################################
# 字符串劈分操作
# 1.split()從字符串左側開始劈分嘿般,默認劈分空格尝偎,返回的值是一個列表酗捌,通過參數(shù)sep指定分隔符,
# 通過參數(shù)maxsplit指定劈分字符串時最大的劈分次數(shù)鼠渺,經(jīng)過最大的劈分之后,剩余的字符串都會單獨作為一部分眷细。
# 2.rsplit()從字符串右側開始劈分,默認劈分空格鹃祖,返回的值是一個列表溪椎,通過參數(shù)sep指定分隔符,
# # 通過參數(shù)maxsplit指定劈分字符串時最大的劈分次數(shù)恬口,經(jīng)過最大的劈分之后校读,剩余的字符串都會單獨作為一部分。
# a = 'name xuhan age 18'
# b = a.rsplit()? # ['name', 'xuhan', 'age', '18']
# print(b)
# b = a.split()? ? # ['name', 'xuhan', 'age', '18']
# print(b)
# a = 'name$xuhan$age$18'
# b = a.split(sep='$')? ? # ['name', 'xuhan', 'age', '18'] sep="" 確定分割符
# b = a.split(sep="$",maxsplit=1)? ? # ['name', 'xuhan$age$18'] maxsplit分割的段數(shù)
# print(b)
#######################################################################################################
# 判斷字符串操作方法
# 1.isidentifier()判斷是不是合法的字符串
# 2. isspace()判斷指定的字符串是否全部由空白字符組成(回車祖能,換行歉秫,水平制表符)
# 3. isalpha()判斷指定的字符串是否全由字母組成
# 4. isdecimal()判斷指定的字符串是否全部由十進制的數(shù)字組成
# 5. isnumeric()判斷指定的字符串是否全部數(shù)字組成
# 6. isalnum()判斷指定的字符串是否全部由字母和數(shù)字組成
# print('我愛你abc123_'.isidentifier())? # True
# print('\t'.isspace())? # True
# print('asd123'.isalpha())? # False
# print('徐晗'.isalpha())? # True
# print('452'.isdecimal())? # True
# print('1237891223'.isnumeric())? # True
# print('12378一二'.isnumeric())? # True
# print('12378一二'.isalnum())? # True
# print('1237!8一二'.isalnum())? # False
#######################################################################################################
# 字符串操作的其他方法
# 1.replace() 第一個參數(shù)是你要替換誰,第二個參數(shù)是你要替換后的內容养铸,第三個參數(shù)是設定替換的次數(shù)
# 2.join()將列表或元組中的的字符串合并為一個字符串
# a = 'hello xuhan'
# print(a.replace('hello','zuishuai'))? # zuishuai xuhan
# print(a.replace('xu','han'))? # hello hanhan
# b = 'xu han han han'
# print(b.replace('han','6',2))? # xu 6 6 han
# list = ['123','456']
# a = ('dasd','xuhan')
# print(''.join(list))? # 123456
# print('@'.join(list))? # 123@456
# print('*'.join(a))? # dasd*xuhan
# print('^'.join('xuhanzuishuaila'))? # x^u^h^a^n^z^u^i^s^h^u^a^i^l^a
#######################################################################################################
# 字符串的比較操作
# 1.運算符>,>=,<,<=,==,!=? ord是查看原始值的雁芙,也就是原始值的比較 chr是用原始值查看本身值的,ord的反轉
# 2.==和is的區(qū)別? ==比較的是值是否相等 is比較的是id是否相等
# print('old'>'older')? # False
# print('red'>'green')? # 114>103 True
# print(ord('r'),ord('g'))? # 114 103
# print(chr(97),chr(98))? # a b 97就是a的原時值钞螟,98就是b的原始值
# print(ord('徐'))? # 24464
# print(ord('晗'))? # 26199
# print(chr(24464),chr(26199))? # 徐 晗
# a = b = 'xuhan'
# c = 'xuhan'
# print(a==b)? # True
# print(a==c)? # True
# print(b==c)? # True
# print(a is b)? # True
# print(a is c)? # True
# print(b is c)? # True
# print(id(a))? # 1896614936304
# print(id(b))? # 1896614936304
# print(id(c))? # 1896614936304
#######################################################################################################
# 字符串的切片操作
# 字符串是不可變的類型兔甘,不具備增,刪鳞滨,改等操作洞焙,切片操作將產(chǎn)生新的對象
# a = 'hello,china'
# b = a[:5]
# c = a[6:]
# d = b + '&' + c
# print(d)? # hello&china
# print(a[1:5:2])? # el
# print(a[::2])? # hlocia是0 2 4 6 8 10怎么結的,步長為2拯啦,間隔就是1
# print(a[::1]) # hello,china,步長為1間隔就是0
# print(a[::-1])? # anihc,olleh? 元素倒置
# print(a[-5:])? # china
#######################################################################################################
# 格式化字符串
# 1.%占位符
# 2.{}占位符
# 3.f-string占位符
# name = '徐晗'
# age = 18
# gender = '男'
# print('我叫%s,今年%d' % (name,age))? # 只能用%s和%d? 我叫徐晗,今年18
# print('我叫{0}澡匪,今年{1},性別{2}'.format(name,age,gender))? # 我叫徐晗褒链,今年18唁情,性別男? {0}代表的索引
# print(f'我叫{name},今年{age}碱蒙,性別{gender}')? # 我叫徐晗荠瘪,今年18,性別男
# print('%7d' % 7)? # '? ? ? 7' 7代表寬度? 總寬度是7
# print('%.2f' %? 3.982)? # 3.98赛惩,f代表小數(shù)哀墓,.2代表要保留2位小數(shù)
# print('%9.2f' % 8.63214)? # '? ? 8.63' 同時加寬度和保留小數(shù)的方法? 總寬度是9,保留3位小數(shù)
# print('{0:.3}'.format(3.1415926))? # 3.14? .3表示的是一共輸出3位數(shù) 0是占位符
# print('{0:.3f}'.format(3.1415926))? # 3.142? .3f表示的是保留3位小數(shù)? 0是占位符
# print('{0:10.3f}'.format(3.1415926))? # ’? ? 3.142‘? .3f表示的是保留3位小數(shù)? 0是占位符 10代表一共占10位
#######################################################################################################
# 字符串的編碼轉換
# 編碼
# s = '海上升明月'
# print(s.encode(encoding='GBK'))? # 在GBK這種模式中 一個中文占兩個字節(jié)? b'\xba\xa3\xc9\xcf\xc9\xfd\xc3\xf7\xd4\xc2'? b表示2進制喷兼,后面表示1個字占兩個字符
# print(s.encode(encoding='UTF-8')) # 在UTF-8這種模式中 一個中文占三個字節(jié)b'\xe6\xb5\xb7\xe4\xb8\x8a\xe5\x8d\x87\xe6\x98\x8e\xe6\x9c\x88'
# 解碼
# a = '我本將心向明月篮绰,可耐明月照溝渠'
# b = a.encode(encoding='GBK')
# print(b.decode(encoding='GBK'))? # 我本將心向明月,可耐明月照溝渠
# b = a.encode(encoding='UTF-8')
# print(b.decode(encoding='UTF-8'))? # 我本將心向明月季惯,可耐明月照溝渠
#######################################################################################################
# 函數(shù)的創(chuàng)建和調用
# def fun(a,b):
#? ? c = a+b
#? ? return c
# cale = fun(1,2)
# print(cale)
#######################################################################################################
# 函數(shù)的參數(shù)傳遞
# 1.順序傳參
# 2.關鍵字傳參
# def fun(a,b):
#? ? c = a+b
#? ? return c
# func = fun(3,6)
# print(func)
# def fun(a,b):
#? ? c = a+b
#? ? return c
# func = fun(b=8,a=6)? # a:6 b:8? # 只有在調用的時候賦值才是關鍵字傳參
# print(func)
#######################################################################################################
# 函數(shù)的返回值
# 1.如果函數(shù)沒有返回值(函數(shù)執(zhí)行完畢之后吠各,不需要給調用處提供數(shù)據(jù))臀突,return可以省略不寫
# 2.函數(shù)的返回值如果是1,直接返回原類型(是列表就返回列表是元組就返回元組)
# 3.函數(shù)的返回值如果是多個贾漏,返回的類型是一個元組
# 用函數(shù)寫一個100以內返回奇數(shù)偶數(shù)的方法
# def fun(num):
#? ? event = []
#? ? odd = []
#? ? for i in num:
#? ? ? ? if i%2==0:
#? ? ? ? ? ? event.append(i)
#? ? ? ? else:
#? ? ? ? ? ? odd.append(i)
#? ? return event,odd
# a = fun(range(0,101))
# print(a)
# 沒有返回值的情況
# def fun():
#? ? print('你今天有點怪啊')
# fun()
# 返回值為1的
# def fun(a):
#? ? a.append(5)
#? ? return a
# b = fun([4,3])? ? # [4, 3, 5]
# print(b)
# a = input('lol')
# if a=='1':
#? ? print('True')
# else:
#? ? print('false')
# 函數(shù)參數(shù)定義
# 1.個數(shù)可變的位置參數(shù)
# 2.個數(shù)可變的關鍵字參數(shù)
# def fun(*res):? # 函數(shù)定義時 可變的位置參數(shù)
#? ? print(res)
# fun(10)? ? # (10,)
# fun(10,50)? ? # (10, 50)
# fun(10,50,80)? ? # (10, 50, 80)
# def fun(**res):
#? ? print(res)
# fun(a=1,b=2)? ? # {'a': 1, 'b': 2}
# fun(a=3)? ? # {'a': 3}
# fun(a="77",b=3.1415,c=range(0,1))? ? # {'a': '77', 'b': 3.1415, 'c': range(0, 1)}
# 變量的作用域
# def fun():
#? ? global age? ? # 函數(shù)內部定義的變量候学,使用global聲明之后就變成了全局變量
#? ? age = 18
#? ? print(age)
# fun()
# 遞歸函數(shù)
# def fun(n):
#? ? if n == 1:
#? ? ? ? return 1
#? ? else:
#? ? ? ? return n * fun(n-1)
#
# print(fun(7))
# 遞歸實現(xiàn)斐波那契數(shù)列
# def fun(n):
#? ? if n==1:
#? ? ? ? return 1
#? ? elif n==2:
#? ? ? ? return 1
#? ? else:
#? ? ? ? res = fun(n-1)+fun(n-2)
#? ? ? ? return res
# # print(fun(6))? ? # 8
# for i in range(1,7):
#? ? print(fun(i))? # 1 1 2 3 5 8
#######################################################################################################
# 練習
# age = input('請輸入您的真實年齡')
# if age >= '18':
#? ? print('你成年了')
# else:
#? ? print('未成年')
# for i in range(3):
#? ? name = input('用戶名')
#? ? password = input('密碼')
#? ? if name == 'xuhan' and password == '123':
#? ? ? ? print('success')
#? ? ? ? break
#? ? else:
#? ? ? ? print('Error')
# else:
#? ? print('3ci')
# arr = [
#? ? {'name': '張三豐', 'age': 108, 'gender': '女'},
#? ? {'name': ['張無忌','a'], 'age': 6, 'gender': '男'},
#? ? {'name': ['張宇航', 'a'], 'age': 18, 'gender': '男'}
# ]
# answer = input('請輸入你要搜索的內容')
# for item in arr:
#? ? nameArr = item['name']
#? ? if answer in nameArr:
#? ? ? ? print(answer, '的年齡是', item['age'])
#######################################################################################################
# try except
# try:
#? ? a = int(input('請輸入一個整數(shù)'))
#? ? b = int(input('請輸入一個整數(shù)'))
#? ? print(a / b)
# except ZeroDivisionError:
#? ? print('0不能作為除數(shù)')
# except ValueError:
#? ? print('不能是字符串')
#######################################################################################################
# try...except...else
# 如果try中的代碼沒有出現(xiàn)異常執(zhí)行else中的代碼,如果出現(xiàn)異常執(zhí)行except中的代碼
# try:
#? ? a = int(input('請輸入一個整數(shù)'))
#? ? b = int(input('請輸入一個整數(shù)'))
#? ? c = a / b
# except BaseException as e:
#? ? print(e)
# else:
#? ? print(c)
#######################################################################################################
# try...except...else...finally
# finally塊中的代碼纵散,無論是否異常都會執(zhí)行梳码,通常用來釋放try中申請的資源
# try:
#? ? a = int(input('請輸入一個整數(shù)'))
#? ? b = int(input('請輸入一個整數(shù)'))
#? ? c = a / b
# except BaseException as e:
#? ? print(e)
# else:
#? ? print(c)
# finally:
#? ? print('歡迎下次光臨')
#######################################################################################################
# traceback模塊的使用
# import? traceback
# try:
#? ? print(10/0)
# except:
#? ? traceback.print_exc()