欢迎关注 『Python从入门到实战100天』 系列,持续更新中
欢迎关注 『Python从入门到实战100天』 系列,持续更新中
1. 计算组合数C(7,3)
先上组合公式
# 将求阶乘的功能封装成一个函数
def factorial(n):
result = 1
for num in range(1, n + 1):
result *= num
return result
print(factorial(7) // factorial(3) // factorial(4))#// 表示整除
2. 求最大公约数和最小公倍数
辗转相除法
辗转相除法:辗转相除法是求两个自然数的最大公约数的一种方法,也叫欧几里德算法。
例如,求(319,377):
∵ 319÷377=0(余319)
∴(319,377)=(377,319);
∵ 377÷319=1(余58)
∴(377,319)=(319,58);
∵ 319÷58=5(余29)
∴ (319,58)=(58,29);
∵ 58÷29=2(余0)
∴ (58,29)= 29;
∴ (319,377)=29。
可以写成右边的格式。
用辗转相除法求几个数的最大公约数,可以先求出其中任意两个数的最大公约数,再求这个最大公约数与第三个数的最大公约数,依次求下去,直到最后一个数为止。最后所得的那个最大公约数,就是所有这些数的最大公约数。(来自百度百科)
def gcd(x, y):
if x > y:
(x, y) = (y, x)
for factor in range(x, 1, -1):
if x % factor == 0 and y % factor == 0:
return factor
return 1
def lcm(x, y):
return x * y // gcd(x, y)
print(gcd(15, 27))
print(lcm(15, 27))
3. Python的内置函数
- 数学相关: abs / divmod / pow / round / min / max / sum
- 序列相关: len / range / next / filter / map / sorted / slice / reversed
- 类型转换: chr / ord / str / bool / int / float / complex / bin / oct / hex
- 数据结构: dict / list / set / tuple
- 其他函数: all / any / id / input / open / print / type
#返回长度为6的内容
def myfilter(mystr):
return len(mystr) == 6
# help()
print(chr(0x53d1),chr(0x73b0),chr(0x4f60),chr(0x8d70),chr(0x8fdc))
print(hex(ord('发')),hex(ord('现')))
print(abs(-3.1415))#绝对值
print(round(-3.1415,1))#四舍五入保留1位
print(pow(3.1415, 5))#5次方
fruits = ['orange', 'peach', 'durian', 'watermelon']
print(fruits[slice(1, 3)])#得到 1 2 位置的水果
fruits2 = list(filter(myfilter, fruits))#filter是条件过滤,myfilter是一种规则,把fruits列表中长度为6的水果选中
print(fruits)
print(fruits2)#字符串长度为6的水果
4. Python常用模块
- 运行时服务相关模块: copy / pickle / sys / …
- 数学相关模块: decimal / math / random / …
- 字符串处理模块: codecs / re / …
- 文件处理相关模块: shutil / gzip / …
- 操作系统服务相关模块: datetime / os / time / logging / io / …
- 进程和线程相关模块: multiprocessing / threading / queue
- 网络应用相关模块: ftplib / http / smtplib / urllib / …
- Web编程相关模块: cgi / webbrowser
- 数据处理和编码模块: base64 / csv / html.parser / json / xml / …
import time
import shutil
import os
seconds = time.time()
print(seconds)#打印时间戳
localtime = time.localtime(seconds)
print(localtime)#time.struct_time(tm_year=2022, tm_mon=3, tm_mday=3, tm_hour=9, tm_min=21, tm_sec=24, tm_wday=3, tm_yday=62, tm_isdst=0)
print("tm_year",localtime.tm_year)
print("tm_mon",localtime.tm_mon)
print("tm_mday",localtime.tm_mday)
asctime = time.asctime(localtime)
print(asctime)#Thu Mar 3 09:22:13 2022
strtime = time.strftime('%Y-%m-%d %H:%M:%S', localtime)
print(strtime)#格式化输出时间2022-03-03 09:22:32
mydate = time.strptime('2018-1-1', '%Y-%m-%d')
print(mydate)#打印指定时间 time.struct_time(tm_year=2018, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=0, tm_yday=1, tm_isdst=-1)
shutil.copy('hello.py', 'first.py')#用hello.py的内容替换掉first.py的内容 注意这里的2个文件要在同一目录下,或者你自己修改目录
#下面的四行初学者不太可能用到···
# os.system('ls -l')#打印当前目录内容
# # os.chdir('/Users/Hao')#转到某个路径的文件夹
# os.system('ls -l')#打印当前目录内容
# os.mkdir('test')#创建一个名为test的文件夹
随便新建2个py文件
5. 函数的参数
- 位置参数
- 可变参数
- 关键字参数
- 命名关键字参数
推荐这篇文章有更多具体的介绍
一篇文章学会def定义函数的可选参数,默认参数,有默认值的可选参数(保姆级注释)
# 参数默认值
def f1(a, b=5, c=10):
return a + b * 2 + c * 3
print(f1(1, 2, 3))
print(f1(100, 200))
print(f1(100))
print(f1(c=2, b=3, a=1))
# 可变参数,可以输入任意数量参数
def f2(*args):
sum = 0
for num in args:
sum += num
return sum
print(f2(1, 2, 3))
print(f2(1, 2, 3, 4, 5))
print(f2())
# 关键字参数
def f3(**kw):
if 'name' in kw:
print('欢迎你%s!' % kw['name'])
elif 'tel' in kw:
print('你的联系电话是: %s!' % kw['tel'])
else:
print('没找到你的个人信息!')
param = {'name': '南黎', 'age': 38}
f3(**param)
f3(name='南黎', age=38, tel='12345678999')#name正确,不再执行elif的tel输出语句
f3(user='南黎', age=38, tel='12345678999')#只有tel正确
f3(user='南黎', age=38, mobile='12345678999')#name和tel都没有
6. 函数的作用域
# 局部作用域
def foo1():
a = 5
foo1()
# print(a) # NameError
# 全局作用域
b = 10
def foo2():
print("foo2",b)
foo2()#打印10
def foo3():
b = 100 # 局部变量
print("foo3内部",b)
foo3()
print("foo3外部",b)
def foo4():
global b
b = 200 # 全局变量
print("foo4内部",b)
foo4()
print("foo4外部",b)
总结
大家喜欢的话,给个👍,点个关注!给大家分享更多有趣好玩的Python学习笔记!
本专栏系列内容基于开源项目jackfrued-Python-100-Days
欢迎关注 『Python从入门到实战100天』 系列,持续更新中
欢迎关注 『Python从入门到实战100天』 系列,持续更新中
【更多内容敬请期待】