一、嵌套循环
#99乘法表 for x in range(1, 10): for y in range(1,x+1): print("%s*%s=%s"%(x,y,x*y), end='') #遍历完一次,不换行输出 print(" ") 控制台输出结果; 1*1=1 2*1=22*2=4 3*1=33*2=63*3=9 4*1=44*2=84*3=124*4=16 5*1=55*2=105*3=155*4=205*5=25 6*1=66*2=126*3=186*4=246*5=306*6=36 7*1=77*2=147*3=217*4=287*5=357*6=427*7=49 8*1=88*2=168*3=248*4=328*5=408*6=488*7=568*8=64 9*1=99*2=189*3=279*4=369*5=459*6=549*7=639*8=729*9=81
二、函数
- def 关键字 函数名/方法名():
- 函数名的要求:见名知意,小写字母 print_str()
- 写代码 这个函数要实现的功能一
- 个性化定制, 输入参数,逆函数在定义有几个参数,那么输入几个参数
- 参数:位置参数、默认参数必须放在位置参数的后面
#完成任意整数序列的累加 def sum(i,j): #位置参数 mun = 0 for L1 in range(i, j): mun += L1 t1_01 = mun print("新手题题1结果:%s" % t1_01) x = 1 y = 101 sum(x, y) #传递的参数
#第一种:报错(“默认参数”放在“位置参数”前) def sum(i=10,j): mun = 0 for L1 in range(i, j): mun += L1 t1_01 = mun print("新手题题1结果:%s" % t1_01) x = 1 y = 101 控制台打印结果: File "D:/python/day_04/tast/functions.py", line 3 def sum(i=10,j): ^ SyntaxError: non-default argument follows default argument
#第二种:成功(“默认参数”放在“位置参数”后) def sum(i,j=101): mun = 0 for L1 in range(i, j): mun += L1 t1_01 = mun print("新手题题1结果:%s" % t1_01) x = 1 y = 101 sum(x) 控制台打印结果: 新手题题1结果:5050
#第二种:成功(“位置参数”的优先级比“默认参数”高) def sum(i=1,j=101): mun = 0 for L1 in range(i, j): mun += L1 t1_01 = mun print("新手题题1结果:%s" % t1_01) x = 2 y = 11 sum(x,y) 控制台打印结果: 新手题题1结果:54
三、返回值 return
- 返回值 return表达式
- a、print会把结果直接打印到控制台(强制输出到控制台)
- b、return会把结果返回给你,由你处置
- c、返回值必须要有一个变量来进行接收
- d、return 后面的代码是不会被执行的
- 什么时候用return?(需要返回值进行处理;)
#第一种:使用print,会导致拿不到result的值def add_num(m,n): sum = 0 for i in range(m ,n+1): sum += i print(sum)result = add_num(1,100)print("函数调用计算结果值",result)控制台打印结果:5050函数调用计算结果值 None #第二种:使用return ,可以获得result的值 def add_num(m,n): sum = 0 for i in range(m ,n+1): sum += i # print(sum) return sum result = add_num(1,100) print("函数调用计算结果值",result) 控制台打印结果: 函数调用计算结果值 5050 #第三种:既能打印,又有返回值 def add_num(m,n): sum = 0 for i in range(m ,n+1): sum += i print(sum) return sum result = add_num(1,100) print("函数调用计算结果值",result) 控制台打印结果: 5050 函数调用计算结果值 5050 #第四种:return后面存在代码不会被执行 def add_num(m,n): sum = 0 for i in range(m ,n+1): sum += i return sum print(sum) result = add_num(1,100) print("函数调用计算结果值",result) 控制台打印结果: 函数调用计算结果值 5050
四、变量的作用范围
- 规范:全局变量:大写字母 局部变量:小写字母
- 区别1:作用域不一样:
a、全局变量:在当前Py模块中都可以调用
b、局部变量:只能在函数内部使用
- 区别2:调用优先级不一样:如果全局变量与局部变量名存在重复的情况下,优先调用局部变量
- 区别3:如何修改全局变量的值:global (需要先声明一下全局变量)
- 区别4:列表和字典都可以去做更改值 (这是一种特殊情况)
#区别一:作用域不一样: C = 6 #全局变量 def add_num(): a = 8 #局部变量 print(a+C) add_num() print(C) print(a) 控制台输出: 14 6 Traceback (most recent call last): File "D:/python/day_05/tast/05_02.py", line 8, in <module> print(a) NameError: name 'a' is not defined
#区别二:调用优先级不一样 C = 6 def add_num(): a = 8 C = 2 #重名 print(a+C) add_num() print(C) 控制台输出: 10 6
#区别三:修改全局变量的值 C = 6 #全局变量 def add_num(): a = 8 global C #声明全局变量 C = 2 print(a+C) add_num() print(C) 控制台输出: 10 2
#区别四:列表和字典都可以去做更改值:第一种 List_1 =[1, 2, 3] def print_list(): List_1 =10 # List_1.append(10) # List_1[2] = 10 print(List_1) print_list() print(List_1) 控制台打印: 10 [1, 2, 3]
#区别四:列表和字典都可以去做更改值:第二种(如果值是列表,那么在函数里面进行赋值运算,那么全局变量也会被更改) List_1 =[1, 2, 3] def print_list(): List_1[2] = 10 print(List_1) print_list() print(List_1) 控制台打印: [1, 2, 10] [1, 2, 10]
五、参数
- 位置参数、默认参数:函数:从左往右传递值
- 动态参数:一个参数:把传递的参数当做元组处理
- 动态参数:两个星号:把传递进来的参数作为字典处理
#位置参数、默认参数 def add(a=1,b=2,c=3): print(a+b+c) add(b=6) #6传递给b add(6) #6传递给a 控制台输出值: 10 11
#动态参数 def add_1(*args): print(args) add_1(1,2,3,4) 控制台输出: (1, 2, 3, 4) def add_2(*args): print(args) add_2([1, 2, 3, 4]) 控制台输出: ([1, 2, 3, 4],)
#两个星号的动态参数:将输入的参数当做字典处理 def add_3(**args): print(args) add_3(x=1, y=2) 控制台输出: {'x': 1, 'y': 2} #一个星号/两个星号:参数输入 def add_4(*args,**kwargs): print("第一个参数", args) print("第二个参数", kwargs) add_4(1, 2, 3, 4, x=1, y=2) 控制台输出: 第一个参数 (1, 2, 3, 4) 第二个参数 {'x': 1, 'y': 2} #一个星号/两个星号:参数输入 def add_5(*args,**kwargs): print("第一个参数", args) print("第二个参数", kwargs) dict_1={"age":18,"sex":"f"} add_5(1, 2, 3, 4,**dict_1 ) 控制台输出: 第一个参数 (1, 2, 3, 4) 第二个参数 {'age': 18, 'sex': 'f'}