双for循环
for i in range(3): # 外层循环控制行
for z in range(4): # 内层循环控制列
print("*", end=" ")
print()
for r in range(4):
for c in range(r + 1):
print("*", end = " ")
print()
###列表排序 —>从小到大
print(list01)
list01 = [3, 80, 45, 5, 7, 1]
for i in range(len(list01)-1):
for z in range(i+1,len(list01)):
if list01[i] > list01[z]:
list01[i] , list01[z] = list01[z],list01[i]
print(list01)
### 打印第一行第三个元素
list01 = [
[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12],
[13, 14, 15, 16]]
for i in range(len(list01)):
for z in range(len(list01[i])):
print(list01[i][z])
###列表转置
# 原矩阵
list01 = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
# 转置矩阵
result = []
for c in range(len(list01[0])): # 遍历列
result.append([]) # 将每列视为一个列表,将其添加到转置矩阵中
for r in range(len(list01)): # 遍历行
result[c].append(list01[r][c]) # 将原矩阵中对应的元素添加到转置矩阵中
print(result)
自定义函数
def sd(r,c):
"""
:param r:打印行数
:param c: 打印列数
:return:
"""
for i in range(r): # 外层循环控制行
for z in range(c): # 内层循环控制列
print("*", end=" ")
print()
sd(4,7)
###定义一个一维列表的函数
#例如:[1,2,3]->1 2 3
def list(target_list):
for item in target_list:
print(item, end = " ")
list01 = [
[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12],
[13, 14, 15, 16]]
list(list01[0])
list(list01)
###列表转置
list01 = [
[1,2,3,4],
[5,6,7,8],
[9,10,11,12]
]
for r in range(len(list01)):
for c in range(len(list01[r])):
list01[r][c], list01[c][r] = list01[c][r], list01[r][c]
print(list01)
函数返回值
##计算斤两
def get_weight_for_jin(liang_weight):
jin = liang_weight //16
liang = liang_weight % 16
return(jin,liang)
### 定义函数,根据年月判断天数,要求分辨闰年
def get_day_by_month(year, month):
if month < 1 or month > 12:
return 0
if month == 2:
if year % 4 == 0 and year % 100 != 0 or year % 400 ==0:
return 29
else:
return 28
if month in (4, 6, 9, 11):
return 30
return 31
get_day_by_month(1988, 3)
作用域
作用域指的是变量在程序中能够被访问的范围。Python 中包含四种作用域,分别是 L (本地)作用域,E (闭包)作用域,G (全局)作用域和 B (内置)作用域。
x = 1 # 这是全局作用域
def my_function():
y = 2 # 这是本地作用域
print("y 在 my_function() 中的值为:", y)
def my_nested_function():
z = 3 # 这是闭包作用域
print("z 在 my_nested_function() 中的值为:", z)
my_nested_function()
my_function()
print("x 的值为:", x)
函数参数
实际参数
# 位置实参:实参与形参根据位置对应
def printr(a,b,s):
print(a)
print(b)
print(s)
printr(3,25,5)
# 关键字实参:实参与形参根据名称进行对应
printr(s= 1,b=4,a=23)
# 序列实参:s星号将序列拆分后按位置与形参进行对应
list01 = ["b","a","s"]
printr(*list01)
#字典实参:
dict01 = {"b" : 34 ,"a":23,"s":34}
printr(**dict01)
形参
# 缺省(默认)参数:如果参数不提供,可以使用默认值
# 关键字实参 + 缺省形参:调用者可以随意传递参数
### 定义函数根据小时,分钟,秒,计算总秒数
def get_total_second(hour = 0 , minute = 0 , second = 0):
return hour *3600 +minute *60 +second
print(get_total_second(1,2,4))
print(get_total_second(minute=24,second=34))
print(get_total_second(4))
#星号元组形参:*将所有实参合并为一个元组
#作用:让参数个数无限
def fun01(*args):
print(args)
fun01(1)
fun01(1,"2")
###计算参数和
def fun02(*args):
result = 0
for item in args:
result += item
return result
print(fun02(1,4,5,3,6,3,6,346,5))
#关键字形参:在星号元组形参以后的位置形参
#目的:要求实参必须使用关键字实参
def fun03(a, *args, b):
print(a)
print(args)
print(b)
fun03(1,2, b=2)
fun03(1,828,5,3,4, b=2)
练习
###|位置| |星号元组| |命名关键字| |双星号字典|
def fun07(a, b, *args, c, d, **kwargs):
print(a)
print(b)
print(args)
print(c)
print(d)
print(kwargs)
fun07(1,2,3,4,5,c = 6, d = 7,e = 8,f = 9)
###判断一个数是不是素数
def get_prime(begin,end):
list_prime = []
for number in range(begin,end):
for item in range (2,number):
if number % item == 0:
break
else:
list_prime.append(number)
return list_prime
###拆分成两个做单一功能的的函数
##专门做素数判断的函数
def is_prime(number):
if number < 2:
return False
for item in range(2, int(number ** 0.5) + 1):
if number % item == 0:
return False
return True
##输出素数
def print_prime(begin, end):
list_result = []
for number in range(begin, end):
if is_prime(number):
list_result.append(number)
return list_result
print(print_prime(3, 40))
###将0元素移至末尾
def zero_to_end(list_merge):
for item in range(len(list_merge)-1):
if list_merge[item] == 0 :
del list_merge[item]
list_merge.append(0)
return list_merge
print(zero_to_end([1,0,4,9,4,0,4]))
###将相同数字合并
def zero_to_end(list_merge):
for item in range(len(list_merge)-1):
if list_merge[item] == 0:
del list_merge[item]
list_merge.append(0)
return list_merge
def sum_same_factor(list_merge):
zero_to_end(list_merge)
for item in range(len(list_merge)-1):
if list_merge[item] == list_merge[item+1]:#判断相邻元素相等
list_merge[item] += list_merge[item+1]
del list_merge[item+1]
list_merge.append(0) # 添加一个0,保证列表长度不变
return list_merge
li = [1, 0, 4, 9, 4, 0, 4]
print(zero_to_end(li))
print(sum_same_factor([1, 0, 4, 9, 4, 0, 4]))