python循环嵌套及函数

今天学习了while循环嵌套、for循环以及Python函数,是Python基础中的重点。因为在后面的学习中会经常用到。

1、while 循环嵌套  

pass 占位符 :是为了保持程序结构的完整性。pass不做任何事情,一般用做占位语句。

while True: 

      pass

下面是while循环嵌套的一个例子: 

i = 0
# 外层循环
while i<5:
    #内层循环
    j = 0
    print("这是第%d行"%i) # 外层循环执行 1 次 内层循环执行5次
    while j<5:
        print("----------------") #print 默认换行
        j+=1 #0 1 2 3 4
    #换行
    print()
    i+=1

练习:打印三角形

row = 0
# 外层循环打印行
while row<5:
    col = 0
    # 内层循环控制列
    while col<=row:
        print("*",end=" ")
        col+=1
    print(" ")
    row+=1 # 增加行数

下面我们用while循环嵌套实现九九乘法表:

i = 1
#外层循环控制行数
while i<=9:
    j = 1
    #内层循环控制 列数
    while j<=i:
        print("%d * %d = %d"%(j,i,j*i),end="  ")
        j+=1
    print()
    i+=1

假设a = "ABCDfdsafdsafds" ,下标索引 从 0 开始 len() 返回字符串的长度 

可通过 len(a)-1 获取字符串最大下标

例如:统计字母下划线数字个数

a= "ABCD_abcd_1234"
i = 0
#定义计数器
zm = 0
shuzi = 0
xhx = 0

while i<len(a): #ascii码
    if a[i]>="0" and a[i]<="9":
        shuzi+=1
    elif (a[i]>="A" and a[i]<="Z") or (a[i]>="a" and a[i]<="z"):
        zm+=1
    else:
        xhx+=1
    i+=1

print("数字是%d,下划线是%d,字母是%d"%(shuzi,xhx,zm))

2、for循环

 遍历:就是将元素一个一个取出来的过程

可迭代对象:可以进行遍历的对象  iterable(迭代)

用一个例子说明for循环的作用:

a = "1234567890%$#@"
b = 10
# i 临时变量
for i in a:
    print(i,end=" ")

由上面的例子可以看出for 循环的基本结构:

for 临时变量 in 可迭代对象:

         pass

range(start,end,step)    (起始参数,结束参数,步长)

例如1:

for i in range(2,20): # 不包含end
    print(i,end="  ")

加上步长后:

for i in range(1,10,3): # range 函数步长默认为 1
    print(i,end="  ")

3、for循环嵌套:外层循环执行一次,内层执行多次

基本结构:

for i in range():

      for j in range():

              pass

for循环嵌套案例:

①实心矩阵

for i in range(5):
    for j in range(5):#0 ,1,2,3,4

       print("*",end=" ")
    #换行
    print()

②空心矩阵

# 外层控制行
for i in range(5):
    #内层控制列
    for j in range(5): #第一行 *   第五行 *  第一列 * 第五列 *  其余 “ ”
        if i==0 or i==4 or j==0 or j==4:
            print("*",end=" ")
        else:
            print(" ",end=" ")
    #换行
    print()

4、数字炸弹

# format 格式化数据
import random
ret = random.randint(1,99)
# print("随机生成的: %d"%ret)
start = 0
end = 99
#用户输入的数字
while True:
    boom = int(input("请输入{}到{}你要的数字:".format(start,end))) # 将输入的数字转成int类型
    if boom >ret:
        print("大了")
        end = boom
    elif boom <ret:
        print("小了")
        start=boom
    else:
        print("Boom!!")
        break

 

5、函数

格式:def 函数名称():

                   pass

注意函数名称不能用中文!

def print_num():

    print("=" * 40)
    print("   名片管理系统 v.10"    )
    print("1.xxx")
    print("2.xxx")
    print("=" * 40)

print_num()

函数的参数:

#形参
def func(num): # func被调用时 将传递过来的参数 赋值给了num ,func函数就可以使用num变量
    print("传递过来的参数是%s"%num)
a = "nihao"

func(a) #实参

#传递过来的参数是nihao
def fun_ret(a,b,c): # 传递过来的参数会按照位置 找对应的形参进行赋值  (位置传参)
    print("传递过来第一个参数:%s,第二个参数%s"%(a,b))
    print("颜色是%s"%c)

username = input("请输入你的名字:")
password = input("请输入你的密码:")
color = "Black"
#调用函数,传递两个参数
fun_ret(username,password,color)

return返回值:具有返回功能,返回值,谁调用就返给谁

def test(num):#num = 10                       
    ret = num * 2                             
    a = "nihao"                               
      # return   具有返回功能  返回值   谁调用就返给谁,       
    return a        # return 后面不写             
    # 数据,默认返回None                             
# 此处调用函数,用变量接收返回值                             
# result = ret                                
result = test(10)                             
print(result)     #nihao                              

返回多个参数 return 无返回值 注意:执行return后 这个函数就不在往下执行了

def func(a,b): #a = x =10  b = y = 20               
    m = a*10  #100                                  
    n = b*10  #200                                  
    return m,n  # 返回的是2个参数                          
                                                    
x = 10                                              
y = 20                                              
#用变量接收 返回的是一个 元祖对象 可迭代 就可以遍历                        
i,j= func(x,y)                                      
print(i,j)     #100 200                                      

return 无返回值 注意:执行return后 这个函数就不在往下执行了

def func():            
                       
    print("-----")     
    print("-----")     
    return "aa"        
    print("-----")     
                       
a = func()             
print(a) #None         

 

6、函数的嵌套调用

例如:

# 函数的嵌套调用
def func1():
    print("func1-------start")

def func2():
    print("func2-------start")
    func1()
    print("func2-------end")

def func3():
    print("func3-------start")
    func2()
    print("func3-------end")

#调用 func3
func3()

函数嵌套调用应用

 

def print_num():
    print("--------")

def func():
    i = 0
    while i<5:
        #调用函数
        print_num()
        i+=1
func()

 

7、关键字参数和默认参数

关键字参数:根据形参里面定义好的变量名称,实参名称也一样

def test(bnum,anum):

    print("第一个参数%d,第二个参数%d"%(anum,bnum))

test(anum=20,bnum=30)
 #第一个参数20,第二个参数30

默认参数: 已经在接收的函数中定义好的参数

 

def test(a,b,c=20):
    print("a:%d , b%d , c%d"%(a,b,c))

test(10,20,100)  #a:10 , b20 , c100

 8、可变参数:会将传入的参数变成 元组 或者 字典

*args会将传递的元素变成一个元组 ()

def sum_nums(a,b,*args): #*args会将传递的元素变成一个元组 ()
    print(a) #11
    print(b) #22
    print(args) #(33, 44, 55, 66, 77, 88, 99)
    result = a+b
    for temp in args:
        result +=temp

    print(result)
sum_nums(11,22,33,44,55,66,77,88,99)

 **kwargs 将传递过来的数据变成字典 {} 以 : 隔开 key value 形式存储数据

def func_dict(a,b,*args,**kwargs):                # : 左边 是key  一般是字符串类型
    print(a)  #11                                 # : 右边  value  值
    print(b)  #22
    print(args) #(33, 44)
    print(kwargs) # {'nn': 100, 'mm': 200}

func_dict(11,22,33,44,nn = 100,mm=200)

 

 

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值