Python学习(是我的课堂上学到的东西)不包含课外

2023-09-19课堂

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
"""
这里写的是2023-09-25晚上课堂内容回顾
"""
import random
# 斐波那契数列,这个很关键
def inputnum():
# 这个是调用函数来进行输入
x = int(input(""))
return x
def Fibonacci(i):
# 这个是调用函数求斐波那契
if i < 0:
# 第一个判断是判断负数,如果是负数,则调用函数重新输入
print(f"输入有误,请输入一个非负数")
print(f"请输入你要输出对应的斐波那契数:", end='')
fibonacci = inputnum()
# 这个地方需要定义一个全局变量,可以回到输出结果
global a
a = fibonacci
return fibonacci
elif i == 0:
return 1
elif i == 1:
return 1
elif i == 2:
return 2
else:
x = Fibonacci(i-1) + Fibonacci(i-2)
return x
def Sum_Fibonacci(i):
if i == 0:
return 1
elif i == 1:
return 2
elif i == 2:
return 4
else:
# 运用到了求和公式
x = 0
x = 2*Fibonacci(i)+Fibonacci(i-1)-1
return x
print(f"请输入你要输出对应斐波那契数:(这里指的是F(value)):", end='')
# 调用函数,传递数据进入变量
fibonacci = inputnum()
# 赋值给a
a = fibonacci
# 然后进行计算
num = Fibonacci(fibonacci)
sumnum = Sum_Fibonacci(fibonacci)
print(f"F({a})={num}")
print(f"第{a+1}个斐波那契的数是{num}")
print(f"前{a+1}项的和是{sumnum}")
print(f"验证序列")
for b in range(0,a+1):
print(f"{Fibonacci(b)} ", end='')
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 没有函数
str01 = "time is monny"
str02 = "all for one,one for all"
str03 = "he laughs best who laugh last"
# 代码块01
count = 0
for ch in str01:
count+=1
print(f"{str01}的长度:{count}")
# 代码块02
count = 0
for ch in str02:
count += 1
print(f"{str02}的长度:{count}")
# 代码块03
count = 0
for ch in str03:
count += 1
print(f"{str03}的长度:{count}")
1
2
3
4
5
6
7
8
9
10
11
12
""""
这是阶乘计算方法
"""
def jiechen(i):
if i == 1:
return i
else:
x = i * jiechen(i-1)
return x
x = int(input("请输入要被阶乘的数:"))
num = jiechen(x)
print(f"结果是:{num}")
1
2
3
4
5
6
7
# 有了函数
str01 = "time is monny"
str02 = "all for one,one for all"
str03 = "he laughs best who laugh last"
print(f"{str01}的长度:{len(str01)}")
print(f"{str02}的长度:{len(str02)}")
print(f"{str03}的长度:{len(str03)}")
1
2
3
4
5
6
7
8
9
10
11
12
# 自定义函数
def str_len(str):
count = 0
for ch in str:
count += 1
return count
str01 = "time is monny"
str02 = "all for one,one for all"
str03 = "he laughs best who laugh last"
print(f"{str01}的长度:{len(str01)}")
print(f"{str02}的长度:{len(str02)}")
print(f"{str03}的长度:{len(str03)}")
1
2
3
4
5
6
# 自定义函数
def welcome():
print("欢迎来到这里")
print("让我们开启学习")
# 调用函数
welcome()
1
2
3
4
5
6
7
8
# 自定义带参数的函数
def print_data(data):
for n in data:
print(f"{n}", end='')
print()
# 调用函数
print_data("hello world")
print_data(range(1,11))
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 自定义带参数有返回值函数
def shopping(monney , name , price, count):
pay_money = price * count
return_money = monney - pay_money
if return_money >= 0:
print(f"购物小票\n商品:{name}\n数量:{count}\n消费:{pay_money}")
return return_money
else:
print("金额不足,请重新支付")
return -1
# 函数调用:接收返回值
money = shopping(100,"足球",44.5,2)
print(f"找零:{money}")
# 函数调用:接收返回值
money = shopping(100,"足球",44.5,3)
print(f"找零:{money}")
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 自定义函数
def welcome():
print("欢迎来到这里")
print("让我们开启学习")
# 调用函数
result = welcome()
print(f"默认返回值:{result}\nNone字面量类型:{type(result)}")

# 有返回值函数显示返回None
def div(x,y):
if y == 0:
return None
else:
return x/y
# 调用函数
result = div(10,3)
print(f"10/3={result}")
result = div(10,0)
print(f"10/0={result}")
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 全局变量
num00 = 10
def fun_test01():
# 局部变量
num01 = 20
print(f"funt01局部变量:num01={num01}")
print(f"funt01的全局变量:num00={num00}")
def fun_test02():
# 局部变量
num02 = 30
print(f"funt01局部变量:num01={num02}")
print(f"funt01的全局变量:num00={num00}")
# 全局环境
print(f"全局变量:num00={num00}")
fun_test01()
fun_test02()
# 访问局部变量:编辑器报错
# print(f"局部变量:num01={num01}")
# print(f"局部变量:num02={num02}")
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 全局变量
num = 10
def fun_test01():
# 全局声明
global num
# 局部变量:同名
num = 20
def fun_test02():
# 全局声明
global num
# 局部变量:同名
num = 30
# 全局环境
print(f"num={num}")
fun_test01()
fun_test02()
print(f"num={num}")
1
2
3
4
5
6
7
8
9
# 定义多返回值函数
def test_return():
return "jack",23,False
# 获取函数返回值
name,age,isMarry = test_return()
# 输出返回值和类型
print(f"name={name}{type(name)}")
print(f"age={age}{type(age)}")
print(f"ismarry={isMarry}{type(isMarry)}")
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
32
33
34
35
def position_param(name,age,isMarry):
print(f"姓名:{name}年龄{age}婚后{isMarry}")
# 位置传参:实参对应的形参的定义位置传递参数
position_param("jack",30,True)
def keyword_param(name,age,isMarry):
print(f"姓名:{name}年龄{age}婚后{isMarry}")
# 关键字传参数:形参名=实参数。。。支持乱序传递
keyword_param(name="andi",age=26,isMarry=False)
keyword_param(isMarry=True,age=35,name="doci")
# 位置传参和关键字混用
keyword_param("mark",isMarry=False,age=28)
def default_param(name,age,isMarry=False):
print(f"姓名{name}年龄{age}婚后{isMarry}")
# 默认值传参
default_param("petre",18)
default_param("jame",age=32,isMarry=True)
# 可变参数位置传参
def sum(*args):
print(f"参数:{args}类型{type(args)}")
sum = 0
for n in args:
sum += n
return sum
# 调用可变参数
result = sum(1,2,3,4,5)
print(f"1~5的累加和{result}")
result = sum(1,2,3,4,5,6,7,8,9,10)
print(f"1~10的累加和{result}")
# 可变参数(关键字传参)
def staff_info(**kwargs):
# 参数以字典方式存储
print(f"参数:{kwargs}类型:{type(kwargs)}")
# 调用可变参数
staff_info(name="ldis",age=12)
staff_info(name="dafsdv",age=12,isMarry = False)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 定义一个求和函数
def add(args):
sum = 0
for n in args:
sum += n
return sum
# 定义形参为函数的函数
def print_result(func,*args):
# 输出函数参数和数据类型
print(f"{func}{type(func)}")
result = func(args)
print(f"{args}的累加值{result}")
# 调用函数
print_result((add,1,2,3,4,5))
print_result((add,1,2,3,4,5,6,7,8,9,10))
1
2
3
4
5
6
7
8
9
10
# 定义函数为参数的函数
def call_func(func,x,y):
result = func(x,y)
print(f"{x}+{y}={result}")
# 调用函数:参数为匿名函数
call_func(lambda a,b:a+b,10,20)
# 匿名函数:赋值给有名函数
add = lambda a,b:a+b
print(f"{add}{type(add)}")
print(f"{add(-10,-20)}")