(一)三大结构
分支结构和循环结构可以参考我们的入门版代码。
【1】https://www.jianshu.com/p/8eb0fc8ca8a5
函数可参考:
【1】https://www.jianshu.com/p/392b994b3fae
(1)顺序结构
顺序结构的意思如字面所示,代码从上往下执行。在我们的一般的代码运行中我们的代码是顺序结构运行的。从上往下运行,也就是说我们如果定义了一个变量,但是在定义变量之前使用了这个变量,根据顺序结构python会报错。
print(b) # NameError: name 'b' is not defined
b=0
(2)分支结构
也就是常说的判断语句,意为:如果……则,如果……则……。
python 的分支结构为if elif else
,其中的判断条件常配合比较运算符使用。如果判断条件为True
则执行相应代码块,否则不执行该代码块。在一个条件分支中,如果有一个条件已经满足,其他判断条件均不执行。
-
等同True的判断条件:
- True
- 非空字符串,非空数组,非空字典,非空元组
- 非0数字
-
等同False的判断条件:
- False
- 空字符串,空数组,空字典,空元组
- 数字0
if -1:
print(123) # 123
if "":
print(234) #
if (1):
print(345) # 345
if True:
print(456) # 456
else:
print("567") #
if -1:
print(123) # 123
elif "":
print(234) #
elif (1):
print(345) #
elif True:
print(456) #
else:
print("上面有满足条件的话,这行代码不执行!") #
列表生成式:一个用于生成列表的特定表达,是一种简洁的写法,用于和for循环结合快速生成列表。
还有元组生成式、字典生成式都是同样的写法。
list1 = [i for i in range(10)] # 列表生成式
print(list1) # [0, 1, 2, 3, 4]
tuple1 = tuple([i for i in list1 if i != 5]) # 元组生成器
print(tuple1) # (0, 1, 2, 3, 4, 6, 7, 8, 9)
dict1 = {i:j for i,j in enumerate(tuple1)} # 字典生成器
print(dict1) # {0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 6, 6: 7, 7: 8, 8: 9}
(3)循环结构
python中仅提供两种循环结构:
-
for……else……
循环,else可省略 -
while……else……
循环,else可省略
range(开始, 结束, 步长)
函数用于生成一个序列
使用break
关键字可以跳出当前循环体。
使用continue
关键字可以跳过一次循环,但不能跳出循环体
for i in range(0,10,1): # 等价于for i in range(10)
print(i,end=" ") # 0 1 2 3 4 5 6 7 8 9
for j in range(0,10,2):
print(j,end=" ") # 0 2 4 6 8
for str in ["1","2","3"]:
print(str,end=" ") # 1 2 3
n=10
while n:
n-=1 # n = n-1
print(n,end=" ") # 9 8 7 6 5 4 3 2 1 0
else:
print("执行结束!") # 执行结束!
n2=10
while n2:
if n2 == 5:
break
n2-=1 # n = n-1
print(n2,end=" ") # 9 8 7 6 5
n3=10
while n3: # 9 8 7 6 5 (死循环)
if n3 == 5:
continue
n3-=1 # n = n-1
print(n3,end=" ") # 9 8 7 6 5
(二)函数
函数时可重复使用的代码段,能提高程序的复用性。
(1) 函数的定义
定义函数时,根据需要看是否需要传入参数。函数的返回值根据需要看是否返回参数。
def print_str(str):
"""打印一个句子加个句号"""
print(str+".")
def return_str(str):
"""返回一个句子加个句号"""
return str+"."
str1 = print_str("hello") # hello.
str2 = return_str("hello") #
print(str1, str2) # None hello.
(2)函数的参数
上一篇中提过
- 不可变参数:number,str,tuple
- 可变参数:list,set, dictionary
在使用函数时我们需要注意传入参数是否可变,否则可能会出现奇怪的现象(其具体原因是因为地址的变化)。
关键字参数:在定义函数的时候在()里的参数名就是关键字,在调用的时候就能够通过关键字传入参数。优点是不用按照顺序,并且知道自己传入的参数是什么意思。
默认参数:定义函数时给()里的参数一个默认值,即使不传值,也不会报错。
不定长参数:暂时不确定参数会有多少个,共有两种方式。
- 函数名(*x),这里可以传入多个参数,python会将多个参数放到一个元组里面
- 函数名(**x),这里可以传入多个参数,python会将多个参数放到一个字典里面,
# 不可变参数 number,str,tuple
def print_a(a):
print(id(a), a) # 140719524671840 20
a = 10
print(id(a), a) # 140719524671520 10
a = 20
print(id(a), a) # 140719524671840 20
print_a(a)
print(id(a), a) # 140719524671840 20
# 可变参数 list,set, dictionary
def print_list(list1):
print(id(list1), list1) # 2739927802696 [1, 2, 3]
list1[0] = "a"
print(id(list1), list1) # 2739927802696 ['a', 2, 3]
list1 = [1,2,3]
print(id(list1), list1) # 2739927802696 [1, 2, 3]
print_list(list1)
print(id(list1), list1) # 2739927802696 ['a', 2, 3]
# 关键字参数
list2 = [2,3,4,5]
print_list(list1=list1)
print_list(list1=list2)
# 默认参数
def sum1(a=0,b=0): # 有默认值
"""这个函数用于求两数之和"""
print(a+b)
def sum2(a,b): # 无默认值
"""这个函数用于求两数之和"""
print(a+b)
sum1() # 不报错
sum1(1,2)
sum2() # 报错 TypeError: sum2() missing 2 required positional arguments: 'a' and 'b'
sum2(1,2)
# 不定长参数
def print_info(*x):
print(type(x)) # <class 'tuple'>
for i in x:
print(i,end=" ")
print_info("1","2","3") # 1 2 3
def print_info(**x):
print(type(x)) # <class 'dict'>
for i in x:
print(x[i],end=" ")
print_info(a="1",b="2",c="3") # 1 2 3
(3) lambda 函数
可以使用lambda函数创建匿名函数,又称之为lambda表达式。函数体是一行操作。可理解为函数的简单版,lambda表达式返回的是函数值,定义的函数返回值是函数体操作后的结果。
pow = lambda x,n: x**n # 返回一个函数,用于求x的n次方
print(pow(3,2)) # 9
(4)递归函数
函数间接或者直接调用函数本身。
def print_num(i):
print(i)
if i == 0:
return
else:
print_num(i-1)
print_num(5)
# 使用递归函数就阶乘 n!=1×2×3×...×(n-1)×n
def f(i):
c=1
if i>1:
c = i*f(i-1)
else:
i=1
return c
f(5)
# 使用递归读取E:\download\tinymce下所有文件夹
from genericpath import isdir
import os
def read_dir(path):
file_list = os.listdir(path)
file_list = [os.path.join(path,dir) for dir in file_list if os.path.isdir(os.path.join(path,dir))]
for route in file_list:
print(route)
read_dir(route)
path = r"E:\download\tinymce"
read_dir(path)
网友评论