format内置函数
效果和format格式控制效果一样,不过不是打点调用
示例代码:
print(format(10,"20"))#数值型默认右对齐
print(format("hellow","20"))#字符串默认左对齐
print(format("hellow","*<20"))
print(format("hellow","*>20"))
print(format("hellow","*^20"))
print(format(3.1415926,".2f"))
print(format(10,"b"))#二进制
print(format(10,"o"))#八进制
print(format(10,"x"))#十六进制
代码结果:
10
hellow
hellow**************
**************hellow
*******hellow*******
3.14
1010
12
a
函数参数细节
位置参数
函数的形参和调用时的实参
个数要相同
顺序要相同
可能会导致报错 不然使用关键字传参
关键字传参
def happy_birthday(name,age):
print("祝",name,"生日快乐")
print(f"你已经{age}岁")
happy_birthday(age=18,name="111")
'''
这是关键字传参,可以调整顺序,但是关键字要和形参名一样
可以和位置参数联用,但是要位置参数在前,关键字参数在后,不然会报错
'''
happy_birthday("123",age=18)
可变参数
示例代码:
#个数可变的位置参数
#个数可变的位置参数
def fun(*num):
print(type(num))
for item in num:
print(item)
fun(10,20,30,4)
print()
fun([10,20,30,40])
print()
fun(*[10,20,30,40])#加个*号,可以执行解包操作
print()
#个数可变的关键字参数
def fun2(**content):
print(type(content))
for key,value in content.items():
print(key,"----->",value)
fun2(name="111",age=18)
d={'name':"111",'age':18}
print()
fun2(**d)#以字典为参数要进行系列解包** 不可以fun2(d)会报错
代码结果:
<class 'tuple'>
10
20
30
4
<class 'tuple'>
[10, 20, 30, 40]
<class 'tuple'>
10
20
30
40
<class 'dict'>
name -----> 111
age -----> 18
函数返回值
示例代码:
def calc(a,b):
s=a+b
c=a*b
return s,c
print(calc(10,20))
print(type(calc(10,20)))
z,x=calc(10,20) #可以分解赋值 无返回值不能
print(z,x)
代码结果:
(30, 200)
<class 'tuple'>
30 200
变量的作用域细节
函数内多为局部变量 函数外为全局变量 函数内用global去定义变量也为全局变量 当全局变量和局部变量重复时,局部变量优先级更高
匿名函数的使用
示例代码
#当函数只有一行代码时用来简化 关键字为lambda
s=lambda a,b:a+b
print(type(s))#<class 'function'> 为函数
print(s(10,20))
print()
#正常的列表取值
lst=[10,20,30,44]
for i in range(len(lst)):
print(lst[i])
print()
#使用匿名函数
for i in range(len(lst)):
result=lambda x:x[i] #x为形参
print(result(lst)) #lst为实参
#排序
lst2=[
{"name":1,"sorce":90},
{"name":2,"sorce":95},
{"name":3,"sorce":98}
]
lst2.sort(key=lambda x:x.get("sorce"),reverse=True)
print(lst2)
代码结果:
<class 'function'>
30
10
20
30
44
10
20
30
44
[{'name': 3, 'sorce': 98}, {'name': 2, 'sorce': 95}, {'name': 1, 'sorce': 90}]
常见数学函数的使用
示例代码
print("绝对值:",abs(100),abs(-100),abs(0))
print("商和余数",divmod(13,4),divmod(6,3))
print("最大值:",max(13,98,45),max("hellow"))
print("最小值:",min(13,98,45),min("hellow"))
print("求和:",sum([1,100,200]))
print("x的y次幂:",pow(2,3))
#四舍五入
print(round(3.1415))#只有一个参数,保留整数
print(round(3.1415,3))#第二个参数是保留的位数
print(round(314.14,-1))#第二个参数为-1即对个位进行四舍五入
print(round(314.14,-2))#第二个参数为-2即对十位进行四舍五入,以此类推
代码结果:
绝对值: 100 100 0
商和余数 (3, 1) (2, 0)
最大值: 98 w
最小值: 13 e
求和: 301
x的y次幂: 8
3
3.142
310.0
300.0
迭代器操作函数的使用
迭代的解释:
在编程中,迭代是重复反馈过程的活动,其目的通常是为了逼近所需目标或结果
从程序设计的角度来讲,迭代是一种重复执行一段代码块的方式,用于对一个集合、序列或者其他可迭代的数据结构中的元素进行逐个处理和操作。
例如,在循环结构(如 for 循环、 while 循环)中,程序会不断地重复执行循环体中的代码,每次循环都会对数据进行一定的处理或操作,这就是迭代的过程。通过迭代,可以对数据进行遍历、计算、修改等操作,以实现各种功能和任务。
例如在 Python 中以下 for 循环就是一个迭代的过程:
numbers = [1, 2, 3, 4, 5]
for num in numbers:
print(num)
在上述代码中, for 循环依次取出 numbers 列表中的每个元素,并将其赋值给变量 num ,然后执行循环体中的 print(num) 语句,这个过程就是对 numbers 列表的迭代。
示例代码:
#sorted
lst=[10,20,11,25,44,56]
asc_lst=sorted(lst)
desc_lst=sorted(lst,reverse=True)
print(lst)
print(asc_lst)
print(desc_lst)
print()
#reversed
new_lst=reversed(lst)
print(type(new_lst)) #<class 'list_reverseiterator'> 不是列表需要转换才能看到
print(list(new_lst))
print()
#zip
lst2=["a","b","c","d"]
lst3=[1,2,3,4,5,6]
zipobj=zip(lst2,lst3)
print(type(zipobj))
# print(list(zipobj))#[('a', 1), ('b', 2), ('c', 3), ('d', 4)]
print()
#enumerate
enum=enumerate(lst3,1)
print(type(enum))
print(tuple(enum))#转为列表也可以
print()
#all
lst4=[1,"",100]
print(all(lst4)) #False
print(all(lst))#Ture,全部为Ture才为Ture
print()
#any
print(any(lst4))#一个为ture就为Ture
print()
#next 找没有被转化的
print(next(zipobj))
print(next(zipobj))
print(next(zipobj))
print(next(zipobj))
print()
#filter 按照指定条件进行筛选,第一个参数为函数
def fun(n):
return n%2==1 #返回Ture或者Flase
print(list(filter(fun,range(10))))#将返回值为Ture的留下,记得转换才能看得见
print()
#map
def change(x):
return x.upper()
new_lst2=["hellow","baby","world"]
obj2=map(change,new_lst2)
print(list(obj2))
代码结果:
[10, 20, 11, 25, 44, 56]
[10, 11, 20, 25, 44, 56]
[56, 44, 25, 20, 11, 10]
<class 'list_reverseiterator'>
[56, 44, 25, 11, 20, 10]
<class 'zip'>
<class 'enumerate'>
((1, 1), (2, 2), (3, 3), (4, 4), (5, 5), (6, 6))
False
True
True
('a', 1)
('b', 2)
('c', 3)
('d', 4)
[1, 3, 5, 7, 9]
['HELLOW', 'BABY', 'WORLD']
示例题目
斐波那契数列
示例代码
#第一项和第二项为1,其他项为前两项的和
def fac(n):
if n==1 or n==2:
return 1
else:
return fac(n-1)+fac(n-2)
for i in range(1,10):
print("第{1}个的斐波拉契数列的数字为{0}".format(fac(i),i))
代码结果
第1个的斐波拉契数列的数字为1
第2个的斐波拉契数列的数字为1
第3个的斐波拉契数列的数字为2
第4个的斐波拉契数列的数字为3
第5个的斐波拉契数列的数字为5
第6个的斐波拉契数列的数字为8
第7个的斐波拉契数列的数字为13
第8个的斐波拉契数列的数字为21
第9个的斐波拉契数列的数字为34
对其修改一下来达到你想要的效果,比如输出到第几个数,加一个参数限制进行
计算阶乘
代码示例:
def fac(n):
if n==1:
return 1
else:
return n*fac(n-1)
n=eval(input("请输入要计算到几的阶乘"))
print(f"{n}的阶乘等于{fac(n)}")
代码结果:
请输入要计算到几的阶乘4
4的阶乘等于24
最大公约数,最小公倍数
示例代码:
def gcd(m,n):
if m>n:
temp=n
else:
temp=m
for i in range(1,temp+1):
if((m%i==0) and (n%i==0)):
gcd=i
return gcd
def lcm(m,n):
if m>n:
temp=n
else:
temp=m
for i in range(1,temp+1):
if((m%i==0) and (n%i==0)):
lcm=i
result=m*n/lcm
return result
num1=eval(input("请输入第一个整数"))
num2=eval(input("请输入第二个整数"))
print(num1,"和",num2,"的最大公约数是",gcd(num1,num2))
print(num1,"和",num2,"的最小公倍数是",lcm(num1,num2))
代码结果:
请输入第一个整数24
请输入第二个整数13
24 和 13 的最大公约数是 1
24 和 13 的最小公倍数是 312.0