python常用功能

1. 获取昨天日期

  引入datetime模块

import datetime
def getYesterday():
    today = datetime.date.today()   #返回当前本地日期
#    oneday = datetime.timedelta(day=1) #两个日期对象的最小间隔
    oneday = datetime.date.resolution   #两个日期对象的最小间隔
    yesterday = today - oneday
    return yesterday
print(getYesterday())

#2020-10-17

  

2.  计算每个月天数

import calendar  #导入日历模块
monthRange = calendar.monthrange(2020,10)  #当月的天数
print(monthRange)  #输出当月的天数
# (3, 31)

3.  字符串大小转换

str = "https://www.cnblogs.com/kevin.hou"
print(str.upper())  #把所字符中的小写字母转换成大写字母
print(str.lower())  #把所有字符中的大写字母转换成小写字母
print(str.capitalize()) #把第一个字母转化为大写字母,其余小写
print(str.title())  #把每个单词的第一个字母转化为大写,其余小写

# HTTPS://WWW.CNBLOGS.COM/KEVIN.HOU
# https://www.cnblogs.com/kevin.hou
# Https://www.cnblogs.com/kevin.hou
# Https://Www.Cnblogs.Com/Kevin.Hou

4.  字符串判断

#测试实例1
print("测试实例1")
str = "runoob.com"  #
print(str.isalnum())    #判断所有的字符都是数字或者字母
print(str.isalpha())    #判断所有的字符都是字母
print(str.isdigit())    #判断所有的字符都是数字
print(str.islower())    #判断所有的字符都是小写
print(str.isupper())    #判断所有的字符都是大写
print(str.istitle())    #判断所有的单词都是首字母大写,像标题
print(str.isspace())    #判断所有的字符都是空白字符、	、
、
print("----------------------------------")

#测试实例2
print("测试实例2")
str = "Bake corN"
print(str.isalnum())    #判断所有的字符都是数字或者字母
print(str.isalpha())    #判断所有的字符都是字母
print(str.isdigit())    #判断所有的字符都是数字
print(str.islower())    #判断所有的字符都是小写
print(str.isupper())    #判断所有的字符都是大写
print(str.istitle())    #判断所有的单词都是首字母大写,像标题
print(str.isspace()) 
# 测试实例1
# False
# False
# False
# True
# False
# False
# False
# ----------------------------------
# 测试实例2
# False
# False
# False
# False
# False
# False
# False

5. 生成日历

#引入日历模块
import calendar
#输入指定年月
yy = int(input("输入年份:"))
mm = int(input("输入月份:"))
#显示日历
print(calendar.month(yy, mm))
# 输入年份:2020
# 输入月份:10
#     October 2020
# Mo Tu We Th Fr Sa Su
#           1  2  3  4
#  5  6  7  8  9 10 11
# 12 13 14 15 16 17 18
# 19 20 21 22 23 24 25
# 26 27 28 29 30 31

 

输入年份:2020
输入月份:11
   November 2020
Mo Tu We Th Fr Sa Su
                   1
 2  3  4  5  6  7  8
 9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30

6. 简单计算器

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("输入第一个数字:"))
num2 = int(input("输入第二个数字:"))
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("非法输入")

 

选择运算:
1、相加
2、相减
3、相乘
4、相除
输入你的选择(1/2/3/4):1
输入第一个数字:2
输入第二个数字:3
2 + 3 = 5

选择运算:
1、相加
2、相减
3、相乘
4、相除
输入你的选择(1/2/3/4):2
输入第一个数字:3
输入第二个数字:5
3 - 5 = -2

选择运算:
1、相加
2、相减
3、相乘
4、相除
输入你的选择(1/2/3/4):3
输入第一个数字:4
输入第二个数字:5
4 * 5 = 20

选择运算:
1、相加
2、相减
3、相乘
4、相除
输入你的选择(1/2/3/4):4
输入第一个数字:8
输入第二个数字:4
8 / 4 = 2.0

7. 最小公倍数

#定义函数
def lcm(x,y):
    #获取最大的数
    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("输入第一个数字:"))
num2 = int(input("输入第一个数字:"))

print(num1, "和", num2, "的最小公倍数为", lcm(num1, num2))
# 输入第一个数字:3
# 输入第一个数字:5
# 3 和 5 的最小公倍数为 15

8. 最大公约数

def hcf(x,y):
"""该函数返回两个数的最大公约数"""
#获取最小值
    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
#用户输入两个数字
num1 = int(input("输入第一个数字:"))
num2 = int(input("输入第二个数字:"))

print(num1, "和", num2, "的最大公约数为", hcf(num1, num2))

 

输入第一个数字:1
输入第二个数字:2
1 和 2 的最大公约数为 1

输入第一个数字:3
输入第二个数字:5
3 和 5 的最大公约数为 1

9.  十进制转二进制、十六进制、八进制

#获取输入十进制数
dec = int(input("输入数字:"))
print("十进制数为:", dec)
print("转换为二进制为:", bin(dec))
print("转换为八进制为:",oct(dec))
print("转换为十六进制为:",hex(dec))
# 输入数字:2
# 十进制数为: 2
# 转换为二进制为: 0b10
# 转换为八进制为: 0o2
# 转换为十六进制为: 0x2

10. 斐波那契数列

#斐波那契数列指的是这样一个数列0,1,1,2,3,5,8,13;特别指出:第0项是0,第1项是第一个1.
#从第三项开始,每一项都等于前两项之和。
#获取用户输入数据
nterms = int(input("你需要几项?"))
#第一和第二项
n1 = 0
n2 = 1
count = 2
#判断输入的值是否合法
if nterms <= 0:
    print("请输入一个正整数。")
elif nterms == 1:
    print("斐波那契数列:")
    print(n1)
else:
    print("斐波那契数列:")
    print(n1, ",", n2 ,end = ",")
    while count < nterms:
        nth = n1 + n2
        print(n1+n2, end=",")
        #更新值
        n1 = n2
        n2 = nth
        count +=1

  

你需要几项?0
请输入一个正整数。

你需要几项?1
斐波那契数列:
0

你需要几项?2
斐波那契数列:
0 , 1,

你需要几项?3
斐波那契数列:
0 , 1,1,

你需要几项?8
斐波那契数列:
0 , 1,1,2,3,5,8,13,

11. 文件I/O

with open("test.txt", "wt") as out_file:
    out_file.write("该文本会写入到文件中
看到我了吧!")
#Read a file
with open("test.txt", "rt") as in_file:
    text = in_file.read()
print(text)

 

 12.  获取最大值

N = int(input('输入需要对比大小数字的个数:'))
print("请输入需要对比的数字:")
num = []
for i in range(1, N+1):
    temp = int(input('输入第%d个数字:' %i))
    num.append(temp)
print('您输入的数字为:',num)
print('最大值为:',max(num))

N = int(input('输入需要对比数字的个数:
'))
num = [int(input('请输入第%d 个对比数字:
' %i)) for i in range(1, N+1)]
print('您输入的数字为:', num)
print('最大值为:',max(num))
# 输入需要对比大小数字的个数:2
# 请输入需要对比的数字:
# 输入第1个数字:12
# 输入第2个数字:23
# 您输入的数字为: [12, 23]
# 最大值为: 23
# 输入需要对比数字的个数: # 4 # 请输入第1 个对比数字: # 1 # 请输入第2 个对比数字: # 2 # 请输入第3 个对比数字: # 3 # 请输入第4 个对比数字: # 4 # 您输入的数字为: [1, 2, 3, 4] # 最大值为: 4 

13.  判断闰年

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))
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)

# 输入一个年份:1990
# 1990不是闰年
# 请输入一个年份:1001
# 1001不是闰年
# 请输入年份:2014
# 2014是平年

14. 判断奇偶数

num = int(input("输入一个数字:"))
if (num % 2) == 0:
    print("{0}是偶数".format(num))
else:
    print("{0}是奇数".format(num))
while True:
    try:
        num = int(input('输入一个整数:'))
    except ValueError:
        print("输入的不是整数!")
        continue
    if num % 2 ==0:
        print('偶数')
    else:
        print('奇数')
    break
# 输入一个数字:0
# 0是偶数
# 输入一个整数:1
# 奇数

15. 计算平方根

num = float(input('请输入一个数字:'))
num_sqrt = num ** 0.5
print('%0.2f的平方根为%0.2f'%(num,num_sqrt))

# 请输入一个数字:9
# 9.00的平方根为3.0

16. 随机生成验证码的两种方式

import random   #导入随机函数
list1 = []      #新建列表
for i in range(65,91):
    list1.append(chr(i))    #通过for循环遍历assii追加到空列表中
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
i = 1
a = random.randint(0,100)
b = int(input('请输入0-100中的一个数字
然后查看是否与电脑一样:'))
while a !=b:
    if a > b:
        print('你第%d输入的数字小于电脑随机数字'%i)
        b = int(input('请再次输入数字:'))
    else:
        print('你第%d输入的数字大于电脑随机数字'%i)
        b = int(input('请再次输入数字:'))
    i+=1
else:
    print('恭喜你,你第%d次输入的数字与电脑的随机数字%d一样'%(i,b))
    
# 请输入0-100中的一个数字
# 然后查看是否与电脑一样:1
# 你第1输入的数字小于电脑随机数字
# 请再次输入数字:4
# 你第2输入的数字小于电脑随机数字
# 请再次输入数字:6
# 你第3输入的数字小于电脑随机数字
# 请再次输入数字:90
# 你第4输入的数字大于电脑随机数字
# 请再次输入数字:12
# 你第5输入的数字小于电脑随机数字
# 请再次输入数字:16
# 你第6输入的数字小于电脑随机数字
# 请再次输入数字:24
# 你第7输入的数字小于电脑随机数字
# 请再次输入数字:56
# 恭喜你,你第8次输入的数字与电脑的随机数字56一样

17. 合并去重

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
# [2, 3, 8, 4, 9, 5, 6, 5, 6, 10, 17, 11, 2]
# {2, 3, 4, 5, 6, 8, 9, 10, 11, 17}

18. 打印每个名字

L = ["James", "Meng", "Xin"]
for i in range(len(L)):
    print("Hello,%s"%L[i])
# Hello,James
# Hello,Meng
# Hello,Xin

19. 替换列表中所有的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出现的次数
    ele_index = num.index(3)    #获取首次3出现的坐标
    num[ele_index] = "3a"   #修改3为3
    print(num)
# 4
# 2
# ['harden', 'lampard', '3a', 34, 45, 56, 76, 87, 78, 45, 3, 3, 3, 87686, 98, 76]
# ['harden', 'lampard', '3a', 34, 45, 56, 76, 87, 78, 45, '3a', 3, 3, 87686, 98, 76]
# ['harden', 'lampard', '3a', 34, 45, 56, 76, 87, 78, 45, '3a', '3a', 3, 87686, 98, 76]
# ['harden', 'lampard', '3a', 34, 45, 56, 76, 87, 78, 45, '3a', '3a', '3a', 87686, 98, 76]

20. 打印9*9乘法表

for i in range(1, 10):
    for j in range(1, i+1):
        # print('{}x{}={}	'.format(j,i,i*j),end='')
        print('%d x %d =%d 	'%(i,j,i*j),end='')
    print()

1 x 1 =1
2 x 1 =2 	2 x 2 =4
3 x 1 =3 	3 x 2 =6 	3 x 3 =9
4 x 1 =4 	4 x 2 =8 	4 x 3 =12 	4 x 4 =16
5 x 1 =5 	5 x 2 =10 	5 x 3 =15 	5 x 4 =20 	5 x 5 =25
6 x 1 =6 	6 x 2 =12 	6 x 3 =18 	6 x 4 =24 	6 x 5 =30 	6 x 6 =36
7 x 1 =7 	7 x 2 =14 	7 x 3 =21 	7 x 4 =28 	7 x 5 =35 	7 x 6 =42 	7 x 7 =49
8 x 1 =8 	8 x 2 =16 	8 x 3 =24 	8 x 4 =32 	8 x 5 =40 	8 x 6 =48 	8 x 7 =56 	8 x 8 =64
9 x 1 =9 	9 x 2 =18 	9 x 3 =27 	9 x 4 =36 	9 x 5 =45 	9 x 6 =54 	9 x 7 =63 	9 x 8 =72 	9 x 9 =81

21.把原字典的键值对颠倒并生产新的字典

dict1 = {"A": "a", "B": "b", "C": "c"}
dict2 = {y:x for x,y in dict1.items()}
print(dict2)
# {'a': 'A', 'b': 'B', 'c': 'C'}

22. 合并去重

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
# [2, 3, 8, 4, 9, 5, 6, 5, 6, 10, 17, 11, 2]
# {2, 3, 4, 5, 6, 8, 9, 10, 11, 17}

23. 输出某个路径及其子目录下所有以.html为后缀的文件

import os
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:Anaconda"
print_dir(filepath)

E:AnacondaLibidlelibhelp.html
E:AnacondaLibsite-packagesalabasterabout.html
E:AnacondaLibsite-packagesalabasterdonate.html
E:AnacondaLibsite-packagesalabasterlayout.html
E:AnacondaLibsite-packagesalabaster
avigation.html

24. 输出某个路径及其子目录下的所有文件路径

import os
def show_dir(filepath):
    for i in os.listdir(filepath):
        path = (os.path.join(filepath, i))  #isdir()判断是否是目录
        print(path)     #如果是目录,使用递归方法
filepath = "C:Program FilesInternet Explorer"
show_dir(filepath)

C:Program FilesInternet ExplorerD3DCompiler_47.dll
C:Program FilesInternet ExplorerDiagnosticsHub.DataWarehouse.dll
C:Program FilesInternet ExplorerDiagnosticsHub.ScriptedSandboxPlugin.dll
C:Program FilesInternet ExplorerDiagnosticsHub_is.dll
C:Program FilesInternet ExplorerDiagnosticsTap.dll
C:Program FilesInternet Exploreren-US
C:Program FilesInternet ExplorerExtExport.exe
C:Program FilesInternet ExplorerF12.dll
C:Program FilesInternet ExplorerF12Resources.dll
C:Program FilesInternet ExplorerF12Tools.dll
C:Program FilesInternet Explorerie9props.propdesc
C:Program FilesInternet Exploreriediagcmd.exe
C:Program FilesInternet Exploreriedvtool.dll
C:Program FilesInternet Explorerieinstal.exe
C:Program FilesInternet Explorerielowutil.exe
C:Program FilesInternet Explorerieproxy.dll
C:Program FilesInternet ExplorerIEShims.dll
C:Program FilesInternet Exploreriessetup.ceb
C:Program FilesInternet Exploreriessetup.dll
C:Program FilesInternet Exploreriexplore.exe
C:Program FilesInternet Explorerimages
C:Program FilesInternet Explorerjsdbgui.dll
C:Program FilesInternet Explorerjsdebuggeride.dll
C:Program FilesInternet ExplorerJSProfilerCore.dll
C:Program FilesInternet Explorerjsprofilerui.dll
C:Program FilesInternet Explorerlog
C:Program FilesInternet ExplorerMemoryAnalyzer.dll
C:Program FilesInternet Explorermsdbg2.dll
C:Program FilesInternet Explorer
etworkinspection.dll
C:Program FilesInternet Explorerpdm.dll
C:Program FilesInternet Explorerpdmproxy100.dll
C:Program FilesInternet Explorerperfcore.dll
C:Program FilesInternet Explorerperf_nt.dll
C:Program FilesInternet ExplorerPlugins
C:Program FilesInternet ExplorerSIGNUP
C:Program FilesInternet Explorersqmapi.dll
C:Program FilesInternet ExplorerTimeline.cpu.xml
C:Program FilesInternet ExplorerTimeline.dll
C:Program FilesInternet ExplorerTimeline_is.dll
C:Program FilesInternet Explorerzh-CN

25. 输出某个路径下的所有文件和文件夹的路径

import os
def print_dir():
    filepath = input("请输入一个路径:")
    if filepath == "":
        print("请输入正确的路径")
    else:
        for i in os.listdir(filepath):  #获取目录中的文件及其子目录列表
            print(os.path.join(filepath,i)) #把路径组合起来
print(print_dir())

 26. 把一个list中所有的字符串变成小写:

L = ['Hello', 'World', 'SONY', 'SHARP', 'GEA']
for s in L:
    s.lower()
    print(s.lower())

hello
world
sony
sharp
gea

27. 列出当前目录下的所有文件和目录名

 

import os
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 = "E:/"
print(show_dir(filepath))

 28.计算阶乘n!

def fac():
    num = int(input("请输入一个数字:"))
    factorial = 1
#查看数字是负数,0或正数
    if num < 0:
        print("抱歉,负数没有阶乘!!!")
    elif num == 0:
        print("0的阶乘为1")
    else:
        for i in range(1, num + 1):
            factorial = factorial * i
        print("%d 的阶乘为 %d" %(num, factorial))
def factorial(n):
    result = n
    for i in range(1, n):
        result *=i
    return result
# def fact(n):
#     if n==1:
#         return 1
#     return n * fact(n-1)
print(fac())

 

请输入一个数字:-1
抱歉,负数没有阶乘!!!
None

请输入一个数字:0
0的阶乘为1
None

请输入一个数字:3
3 的阶乘为 6
None

29. 计算a*a +b*b +c*c +..........

#求平方和
def calc(numbers):
    sum = 0
    for n in numbers:
        sum = sum + n*n
    return sum

print(calc(numbers=[1,2,3] ))
#14

30. 计算x的n 次方

def power(x,n):
    s = 1
    while n >0 :
        n = n-1
        s = s*x
    return s
print(power(2,3))
# 8

31. 冒泡排序

list = [56,12,1,8,354,10,100,34,56,7,23,456,234,-58]    #需要排序的列表

def sortport(): #定义排序函数
    for i in range(len(list)-1):    #判断i在len(list)-1列表中
        for j in range(len(list)-1-i):  #判断j在len(list)-1-i列表中
            if list[j] > list[j+1]: #判断list[j]的值和list[j+1]的值大小
                list[j],list[j+1] = list[j+1],list[j]   #进行排序
    return list #返回最终排好序的列表,按从小到大顺序排列
print(sortport())
# [-58, 1, 7, 8, 10, 12, 23, 34, 56, 56, 100, 234, 354, 456]
print(len(list)) #len(list)为计算list中值的个数,为14

  

  

  

  

 

  

 

 

  

  

 

 

 

原文地址:https://www.cnblogs.com/kevin-hou1991/p/13828821.html