1、一些內置函數app
一、revsered 翻轉,返回的是迭代器 函數
# 將 s 倒置 s = '不是上海自來水來自海上' # 方法一 print(s[::-1]) # 方法二 s1 = reversed(s) i = '' for el in s1: i +=el print(i)
二、slice 切片 ui
lis = ['nishi','woshi','shuia','benjim'] s = slice(1,3) print(lis[s])
三、format 編碼
# 格式化輸出 s = "我叫{name},我想去{adress},我喜歡{hobby}.".format(name='zhangmeng',adress='上海',hobby='dance') print(s) # 字符串 print(format('test', '<20')) # 左對齊 print(format('test', '>20')) # 右對齊 print(format('test', '^20')) # 居中 # 數值 print(format(3, 'b')) # 二進制 print(format(97, 'c')) # 轉換成unicode字符 print(format(11, 'd')) # 十進制 print(format(11, 'o')) # 八進制 print(format(11, 'x')) # 十六進制(小寫字母) print(format(11, 'X')) # 十六進制(大寫字母) print(format(11, 'n')) # 和d同樣 print(format(11)) # 和d同樣 # 浮點數 print(format(123456789, 'e')) # 科學計數法. 默認保留6位小數 print(format(123456789, '0.2e')) # 科學計數法. 保留2位小數(小寫) print(format(123456789, '0.2E')) # 科學計數法. 保留2位小數(大寫) print(format(1.23456789, 'f')) # 小數點計數法. 保留6位小數 print(format(1.23456789, '0.2f')) # 小數點計數法. 保留2位小數 print(format(1.23456789, '0.10f')) # 小數點計數法. 保留10位小數 print(format(1.23456789e+10000, 'F')) # 小數點計數法.
四、type() 返回類型 ord() 輸入字符找字符編碼的位置 chr() 輸入位置找出對應的字符 ascii()判斷給出的信息是不是ascii spa
for i in range(65536): print(chr(i), end="")
def func(): print('我是遞歸') func() func() # 官方顯示最多到1000.但不會跑到1000,實際到998
# 樹形結構的遍歷 import os def func(lujing, n): lis = os.listdir(lujing) # 打開文件夾,列出文件夾內的全部文件名 for el in lis: # el 爲文件的名字 # 還原文件路徑 path = os.path.join(lujing,el) if os.path.isdir(path):# 判斷路徑是不是文件夾 print('*' * n,el) # 顯示文件夾的名字 func(path, n+1) # 再來一次 else: print('/t'*n,el) # 顯示文件 func('f:/a', 0)
import os def func(lujing, n): lis = os.listdir(lujing ) # 打開文件夾,列出文件夾內的全部文件名 for el in lis: # el爲文件名 # 還原文件的路徑 path = os.path.join(lujing, el) if os.path.isdir(path): # 判斷路徑是不是文件夾 print('*'* n, el) # 顯示文件夾名稱 func(path, n+1) # 再來一次 else: with open(path,mode='wb') as f: # 打開文件,都寫入內容 f.write(b'123456') print('/t'*n, el) # 顯示文件 func('F:/a',0)
# 二分法查找 lst = [1,4,6,7,9,21,23,45,67,87,65,43,89] n = int(input('請輸入一個數:')) lst = sorted(lst) # print(lst) left = 0 right = len(lst)-1 while left <= right: mid = (left + right)//2 if n > lst[mid]: left = mid+1 elif n < lst[mid]: right = mid -1 else: print("存在") break else: print('不存在')
# 遞歸 切割列表 def func(n,lst): left = 0 right = len(lst)-1 if lst != []: mid = (left+right)//2 if n>lst[mid]: func(n,lst[mid+1:]) elif n < lst[mid]: func(n,lst[:mid]) else: print("找到了") return else: print("沒找到") return n = int(input('請輸入你要查找的數:')) lst = [1,4,6,7,9,21,23,45,67,87,65,43,89] func(n,lst)
# 遞歸2 def func(n,lst,left,right): # 遞歸找到什麼是可變的,什麼是不可變的 if left <= right: mid = (left+right)//2 if n > lst[mid]: left = mid+1 return func(n,lst,left,right) elif n < lst[mid]: right = mid - 1 return func(n, lst, left, right) else: print('找到了') return mid # 難點 else: print('找不到') return -1 n = int(input('請輸入你要查找的數:')) lst = [13,45,56,67,78,57,89,101] ret = func(n,lst,0,len(lst)-1) print(ret)
# 最快的查找方法 lst = [13,45,56,57,67,78,89,101] # 找出最大的數 new_lst = [] for i in range(99): new_lst.append(0) for i in lst: new_lst[i] = 1 i = int(input('請輸入你要找的數據:')) if new_lst[i] == 0: print('不存在') else: print('存在')