干貨滿滿,32個常用 Python 實現(xiàn),你學廢了嘛!

1、 冒泡排序

lis = [56,12,1,8,354,10,100,34,56,7,23,456,234,-58]

def sortport():

? ? for i in range(len(lis)-1):

? ? ? ? for j in range(len(lis)-1-i):

? ? ? ? ? ? if lis[j]>lis[j+1]:

? ? ? ? ? ? ? ? lis[j],lis[j+1] = lis[j+1],lis[j]

? ? return lis

if __name__ == '__main__':

? ? sortport()

? ? print(lis)

? 2、計算x? 的n次方?

def power(x, n):

? ? s = 1

? ? while n > 0:

? ? ? ? n = n - 1

? ? ? ? s = s * x

? ? return s

調用方法:

print(power(2,4))

? 3、計算a*a +? b*b + c*c + …?

def calc(*numbers):

? ? sum=0

? ? for n in numbers:

? ? ? ? sum=sum+n*n

? ? return sum

print(calc(2,4,5))

? 4、計算? 階乘 n!?

#方法一

def fac():

? ? num = int(input("請輸入一個數(shù)字:"))

? ? factorial = 1

? ? #查看數(shù)字是負數(shù),0或者正數(shù)

? ? if num<0:

? ? ? ? print("抱歉,負數(shù)沒有階乘")

? ? elif num == 0:

? ? ? ? print("0的階乘為1")

? ? else:

? ? ? ? for i in range(1,num+1):

? ? ? ? ? ? factorial = factorial*i

? ? ? ? print("%d的階乘為%d"%(num,factorial))

if __name__ == '__main__':

? ? fac()

#方法二

def fac():

? ? num = int(input("請輸入一個數(shù)字:"))

? ? #查看數(shù)字是負數(shù),0或者正數(shù)

? ? if num<0:

? ? ? ? print("抱歉,負數(shù)沒有階乘")

? ? elif num == 0:

? ? ? ? print("0的階乘為1")

? ? else:

? ? ? ? print("%d的階乘為%d"%(num,factorial(num)))

def factorial(n):

? ? result = n

? ? for i in range(1,n):

? ? ? ? result=result*i

? ? return result

if __name__ == '__main__':

? ? fac()

#方法三

def fac():

? ? num = int(input("請輸入一個數(shù)字:"))

? ? #查看數(shù)字是負數(shù),0或者正數(shù)

? ? if num<0:

? ? ? ? print("抱歉,負數(shù)沒有階乘")

? ? elif num == 0:

? ? ? ? print("0的階乘為1")

? ? else:

? ? ? ? print("%d的階乘為%d"%(num,fact(num)))

def fact(n):

? ? if n == 1:

? ? ? ? return 1

? ? return n * fact(n - 1)

if __name__ == '__main__':

? ? fac()

? 5、列出當前目錄? 下的所有文件和目錄名?

import os

for d in os.listdir('.'):

? ? print(d)

另外列表推導式代碼:

[d for d in os.listdir('.')]

? 6、把一個list中? 所有的字符串變成小寫:?

L = ['Hello','World','IBM','Apple']

for s in L:

? ? s=s.lower()

? ? print(s)? ? #將list中每個字符串都變成小寫,返回每個字符串

另外列表推導式代碼:

L = ['Hello','World','IBM','Apple']

print([s.lower() for s in L])#整個list所有字符串都變成小寫,返回一個list

? 7、輸出某個路徑下的所? 有文件和文件夾的路徑?

def print_dir():

? filepath = input("請輸入一個路徑:")

? if filepath == "":

? ? print("請輸入正確的路徑")

? else:

? ? for i in os.listdir(filepath):? ? ? #獲取目錄中的文件及子目錄列表

? ? ? print(os.path.join(filepath,i))? #把路徑組合起來

print(print_dir())

? 8、輸出某個路徑及其子目? 錄下的所有文件路徑?

def show_dir(filepath):

? for i in os.listdir(filepath):

? ? path = (os.path.join(filepath, i))

? ? print(path)

? ? if os.path.isdir(path):? ? ? #isdir()判斷是否是目錄

? ? ? show_dir(path)? ? ? ? ? ? #如果是目錄,使用遞歸方法

filepath = "C:\Program Files\Internet Explorer"

show_dir(filepath)

? 9、輸出某個路? 徑及其子目錄下所有以.html為后綴的文件?

def print_dir(filepath):

? for i in os.listdir(filepath):

? ? path = os.path.join(filepath, i)

? ? if os.path.isdir(path):

? ? ? print_dir(path)

? ? if path.endswith(".html"):

? ? ? print(path)

filepath = "E:\PycharmProjects"

print_dir(filepath)

? 10、把原字典的鍵值對顛倒? 并生產新的字典?

dict1 = {"A":"a","B":"b","C":"c"}

dict2 = {y:x for x,y in dict1.items()}

print(dict2)

#輸出結果為{'a': 'A', 'b': 'B', 'c': 'C'}

? 11、打印九? 九乘法表?

for i in range(1,10):

? ? for j in range(1,i+1):

? ? ? ? print('%d x %d = %d \t'%(j,i,i*j),end='')? #通過指定end參數(shù)的值,可以取消在末尾輸出回車符,實現(xiàn)不換行。

? ? print()

? 12、替換列表中? 所有的3為3a?

num = ["harden","lampard",3,34,45,56,76,87,78,45,3,3,3,87686,98,76]

print(num.count(3))

print(num.index(3))

for i in range(num.count(3)):? ? ? #獲取3出現(xiàn)的次數(shù)

? ? ele_index = num.index(3)? ? ? ? #獲取首次3出現(xiàn)的坐標

? ? num[ele_index]="3a"? ? ? ? ? ? #修改3為3a

print(num)

? 13、打印每? 個名字?

L = ["James","Meng","Xin"]

for i in range(len(L)):

? ? print("Hello,%s"%L[i])

? 14、合并? 去重?

list1 = [2,3,8,4,9,5,6]

list2 = [5,6,10,17,11,2]

list3 = list1 + list2

print(list3)? ? ? ? ? ? ? #不去重只進行兩個列表的組合

print(set(list3))? ? ? ? #去重,類型為set需要轉換成list

print(list(set(list3)))

? 15、隨機生成驗證碼的兩種方式? (數(shù)字字母)?

import random

list1=[]

for i in range(65,91):

? ? list1.append(chr(i))? ? ? ? #通過for循環(huán)遍歷asii追加到空列表中

for j in range (97,123):

? ? list1.append(chr(j))

for k in range(48,58):

? ? list1.append(chr(k))

ma = random.sample(list1,6)

print(ma)? ? ? ? ? ? ? ? ? ? ? #獲取到的為列表

ma = ''.join(ma)? ? ? ? ? ? ? #將列表轉化為字符串

print(ma)

import random,string

str1 = "0123456789"

str2 = string.ascii_letters? ? # string.ascii_letters 包含所有字母(大寫或小寫)的字符串

str3 = str1+str2

ma1 = random.sample(str3,6)? ? #多個字符中選取特定數(shù)量的字符

ma1 = ''.join(ma1)? ? ? ? ? ? ? #使用join拼接轉換為字符串

print(ma1)? ? ? ? ? ? ? ? ? ? ? #通過引入string模塊和random模塊使用現(xiàn)有的方法

? 16、隨機數(shù)? 字小游戲?

#隨機數(shù)字小游戲

import random

i = 1

a = random.randint(0,100)

b = int( input('請輸入0-100中的一個數(shù)字\n然后查看是否與電腦一樣:'))

while a != b:

? ? if a > b:

? ? ? ? print('你第%d輸入的數(shù)字小于電腦隨機數(shù)字'%i)

? ? ? ? b = int(input('請再次輸入數(shù)字:'))

? ? else:

? ? ? ? print('你第%d輸入的數(shù)字大于電腦隨機數(shù)字'%i)

? ? ? ? b = int(input('請再次輸入數(shù)字:'))

? ? i+=1

else:

? ? print('恭喜你,你第%d次輸入的數(shù)字與電腦的隨機數(shù)字%d一樣'%(i,b))

? 17、計算平方? 根?

num = float(input('請輸入一個數(shù)字:'))

num_sqrt = num ** 0.5

print('%0.2f 的平方根為%0.2f'%(num,num_sqrt))

? 18、判斷字符? 串是否只由數(shù)字組成?

#方法一

def is_number(s):

? ? try:

? ? ? ? float(s)

? ? ? ? return? True

? ? except ValueError:

? ? ? ? pass

? ? try:

? ? ? ? import unicodedata

? ? ? ? unicodedata.numeric(s)

? ? ? ? return? True

? ? except(TypeError,ValueError):

? ? ? ? pass

? ? return False

t="a12d3"

print(is_number(t))

#方法二

t = "q123"

print(t.isdigit())? #檢測字符串是否只由數(shù)字組成

#方法三

t = "123"

print(t.isnumeric())? #檢測字符串是否只由數(shù)字組成,這種方法是只針對unicode對象

? 19、判斷? 奇偶數(shù)?

#方法一

num = int(input('請輸入一個數(shù)字:'))

if (num % 2) == 0:

? ? print("{0}是偶數(shù)".format(num))

else:

? ? print("{0}是奇數(shù)".format(num))

#方法二

while True:

? ? try:

? ? ? ? num = int(input('請輸入一個整數(shù):'))? ? ? #判斷輸入是否為整數(shù),不是純數(shù)字需要重新輸入

? ? except ValueError:

? ? ? ? print("輸入的不是整數(shù)!")

? ? ? ? continue

? ? if (num % 2) == 0:

? ? ? ? print("{0}是偶數(shù)".format(num))

? ? else:

? ? ? ? print("{0}是奇數(shù)".format(num))

? ? break

? 20、判? 斷閏年?

#方法一

year = int(input("請輸入一個年份:"))

if (year % 4) == 0:

? ? if (year % 100) == 0:

? ? ? ? if(year % 400) ==0:

? ? ? ? ? ? print("{0}是閏年".format(year))? ? ? #整百年能被400整除的是閏年

? ? ? ? else:

? ? ? ? ? ? print("{0}不是閏年".format(year))

? ? else:

? ? ? ? print("{0}是閏年".format(year))? ? ? ? ? #非整百年能被4整除的為閏年

else:

? ? print("{0}不是閏年".format(year))

#方法二

year = int(input("請輸入一個年份:"))

if (year % 4) == 0 and (year % 100)!=0 or (year % 400) == 0:

? ? print("{0}是閏年".format(year))

else:

? ? print("{0}不是閏年".format(year))

#方法三

import calendar

year = int(input("請輸入年份:"))

check_year=calendar.isleap(year)

if check_year == True:

? ? print("%d是閏年"%year)

else:

? ? print("%d是平年"%year)

? 21、獲取最? 大值?

N = int(input('輸入需要對比大小的數(shù)字的個數(shù):'))

print("請輸入需要對比的數(shù)字:")

num = []

for i in range(1,N+1):

? ? temp = int(input('請輸入第%d個數(shù)字:'%i))

? ? num.append(temp)

print('您輸入的數(shù)字為:',num)

print('最大值為:',max(num))

N = int(input('輸入需要對比大小的數(shù)字的個數(shù):\n'))

num = [int(input('請輸入第%d個數(shù)字:\n'%i))for i in range(1,N+1)]

print('您輸入的數(shù)字為:',num)

print('最大值為:',max(num))

? 22、斐波那? 契數(shù)列?

斐波那契數(shù)列指的是這樣一個數(shù)列 0, 1, 1, 2, 3, 5, 8, 13;特別指出:第0項是0,第1項是第一個1。從第三項開始,每一項都等于前兩項之和。

# 判斷輸入的值是否合法

if nterms <= 0:

? print("請輸入一個正整數(shù)。")

elif nterms == 1:

? print("斐波那契數(shù)列:")

? print(n1)

else:

? print("斐波那契數(shù)列:")

? print(n1, ",", n2, end=" , ")

? while count < nterms:

? ? nth = n1 + n2

? ? print(n1+n2, end=" , ")

? ? # 更新值

? ? n1 = n2

? ? n2 = nth

? ? count += 1

? 23、十進制轉二進制? 、八進制、十六進制?

# 獲取輸入十進制數(shù)

dec = int(input("輸入數(shù)字:"))

print("十進制數(shù)為:", dec)

print("轉換為二進制為:", bin(dec))

print("轉換為八進制為:", oct(dec))

print("轉換為十六進制為:", hex(dec))

? 24、最大? 公約數(shù)?

def hcf(x, y):

? """該函數(shù)返回兩個數(shù)的最大公約數(shù)"""

? # 獲取最小值

? if x > y:

? ? smaller = y

? else:

? ? smaller = x

? for i in range(1, smaller + 1):

? ? if ((x % i == 0) and (y % i == 0)):

? ? ? hcf = i

? return hcf

# 用戶輸入兩個數(shù)字

num1 = int(input("輸入第一個數(shù)字: "))

num2 = int(input("輸入第二個數(shù)字: "))

print(num1, "和", num2, "的最大公約數(shù)為", hcf(num1, num2))

? 25、最小? 公倍數(shù)?

# 定義函數(shù)

def lcm(x, y):

? #? 獲取最大的數(shù)

? if x > y:

? ? ? greater = x

? else:

? ? ? greater = y

? while(True):

? ? ? if((greater % x == 0) and (greater % y == 0)):

? ? ? ? ? lcm = greater

? ? ? ? ? break

? ? ? greater += 1

? return lcm

# 獲取用戶輸入

num1 = int(input("輸入第一個數(shù)字: "))

num2 = int(input("輸入第二個數(shù)字: "))

print( num1,"和", num2,"的最小公倍數(shù)為", lcm(num1, num2))

? 26、簡? 單計算器?

# 定義函數(shù)

def add(x, y):

? ? """相加"""

? ? return x + y

def subtract(x, y):

? ? """相減"""

? ? return x - y

def multiply(x, y):

? ? """相乘"""

? ? return x * y

def divide(x, y):

? ? """相除"""

? ? return x / y

# 用戶輸入

print("選擇運算:")

print("1、相加")

print("2、相減")

print("3、相乘")

print("4、相除")

choice = input("輸入你的選擇(1/2/3/4):")

num1 = int(input("輸入第一個數(shù)字: "))

num2 = int(input("輸入第二個數(shù)字: "))

if choice == '1':

? ? print(num1, "+", num2, "=", add(num1, num2))

elif choice == '2':

? ? print(num1, "-", num2, "=", subtract(num1, num2))

elif choice == '3':

? ? print(num1, "*", num2, "=", multiply(num1, num2))

elif choice == '4':

? ? if num2 != 0:

? ? ? ? print(num1, "/", num2, "=", divide(num1, num2))

? ? else:

? ? ? ? print("分母不能為0")

else:

? ? print("非法輸入")

? 27、生成? 日歷?

# 引入日歷模塊

import calendar

# 輸入指定年月

yy = int(input("輸入年份: "))

mm = int(input("輸入月份: "))

# 顯示日歷

print(calendar.month(yy, mm))

? 28、文? 件IO?

# 寫文件

with open("test.txt", "wt") as out_file:

? ? out_file.write("該文本會寫入到文件中\(zhòng)n看到我了吧!")

# Read a file

with open("test.txt", "rt") as in_file:

? ? text = in_file.read()

print(text)

? 29、字? 符串判斷?

# 測試實例一

print("測試實例一")

str = "runoob.com"

print(str.isalnum()) # 判斷所有字符都是數(shù)字或者字母

print(str.isalpha()) # 判斷所有字符都是字母

print(str.isdigit()) # 判斷所有字符都是數(shù)字

print(str.islower()) # 判斷所有字符都是小寫

print(str.isupper()) # 判斷所有字符都是大寫

print(str.istitle()) # 判斷所有單詞都是首字母大寫,像標題

print(str.isspace()) # 判斷所有字符都是空白字符、\t、\n、\r

print("------------------------")

# 測試實例二

print("測試實例二")

str = "Bake corN"

print(str.isalnum())

print(str.isalpha())

print(str.isdigit())

print(str.islower())

print(str.isupper())

print(str.istitle())

print(str.isspace())

? 30、字符串? 大小寫轉換?

str = "https://www.cnblogs.com/ailiailan/"

print(str.upper())? ? ? ? ? # 把所有字符中的小寫字母轉換成大寫字母

print(str.lower())? ? ? ? ? # 把所有字符中的大寫字母轉換成小寫字母

print(str.capitalize())? ? # 把第一個字母轉化為大寫字母,其余小寫

print(str.title())? ? ? ? ? # 把每個單詞的第一個字母轉化為大寫,其余小寫

? 31、計算? 每個月天數(shù)?

import calendar

monthRange = calendar.monthrange(2016,9)

print(monthRange)

? 32、獲? 取昨天的日期?

# 引入 datetime 模塊

import datetime

def getYesterday():

? ? today=datetime.date.today()

? ? oneday=datetime.timedelta(days=1)

? ? yesterday=today-oneday?

? ? return yesterday

# 輸出

print(getYesterday())

源碼地址

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容