python基础—05–双for循环

双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]))








  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值