一、嵌套循环
#99乘法表
for x in range(1, 10):
for y in range(1,x+1):
print("%s*%s=%s"%(x,y,x*y), end='') #遍历完一次,不换行输出
print("\n")
控制台输出结果;
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'}