python学习---------结构和函数

来了来了~~

 


声明一下~~目前每天都会抽出来最少一个小时学习,博客更新最少一周两次~~ohoh

 

这几天主要学习了python的结构和python的函数内容~~直接上干货

  1. 分支结构  

分支只会执行一个输出语句,只要满足其中一个条件,其余条件都将跳过

# 分支结构
a = 13
if a>15:
    print("111")
elif a>10:
    print("222")
else:
    print("333")
  1. while循环结构和break 
i = 1
while i<=10:
     print(i)
     i+=1
print("-------------------------------")
# 反向输出1到10
i=10
while i>0:
    print(i)
    i-=1
# 计算1到100之间的求和
i = 0
sum = 0
while i<=100:
    sum+=i
    i+=1
print(sum)

#死循环应用 break
'''

while True:
    val = input("请输入一个值:")
    print("输入的值为:"+val)
    if(val=='q'):
        break
'''
# for in循环 遍历列表[1,2,3],元组(1,2,3),set{1,2,3}  都可以
sum = 0
a = [1,2,3,4,5,6,7,8,9,10]
for i in a:
    sum+=i
print(sum)

#i 相当于是下标 j相当于是后面的值,enumerate这个关键字的作用就是把集合的下标也可以输出
for i,j in enumerate ([1,2,3,4,5,6,7,8,9,10]):
    print(i,j)

 遍历字典

两种方法找一种自己最擅长的就可以了,我喜欢使用for i in a的这种方式便于理解

a = {"name":"zhangsan","age":"33"}
print(a.items()) # 输出 dict_items([('name', 'zhangsan'), ('age', '33')])
for i in a:
    print(i,a[i])#name zhangsan   换行 age 33
#等价于上面的值
for i,j in a.items():
    print(i,j)

 

遍历嵌套数据结构

下面这种的遍历方法和上面的for i,j in其实是一样的

#遍历嵌套数据结构   一个list中含有的是元组
#输出 name ``` zhangsan age ``` 33
a = [('name', 'zhangsan'), ('age', '33')]
print(type(a))#<class 'list'>
for v1,v2 in a:
    print(v1,'```',v2)

 

总结一下: 看着有各种各样的遍历,表面看起来不同的数据结构使用不同的遍历放视,可能会觉得自己记不住这么多的情况,非常容易混淆,其实我个人觉得是看你需要它遍历输出什么内容,不要把事情想得太复杂,越复杂的数据结构越不好,只要掌握好 for x in y 就行了,以后用的多了,看的多了自然而然就可以了


下面说一下python中生成序列的东西 range()

# rang()生成序列 基本和for in配合使用去遍历的 单纯的 range(10)
#生成 0到9的list 可以使用 list(range(10)) 快速生成
# 输出0-9 range(10) ; 输出2-6 range(2,7); 反着输出 range(10,0,-1)
for i in range(10,0,-1):
    print(i,end=" ")#10 9 8 7 6 5 4 3 2 1 

下面又是比较经典的来了

打印九九乘法表,打印等边三角形,打印直角三角形,打印····等等等等,各种图案。。。

其实里只是更好的帮助我们理解for的循环结构以及此处的range的使用,还有format语法的使用,这里不是靠死记硬背,就是靠自己的理解,当然打印不出来也可能不是你理解的不到位,也可能是你数学不好····所以😄不用过分担心,还是要多敲多练

#实战 输出正向反向 九九乘法表
print("="*100)
print("="*100)
#print('{} * {} = {:<4}'.format(x,y,x*y), end='  ') <4表示左对齐 占位
print('正向输出')
for x in range(1,10):
    for y in range(1,x+1):
        print('{} * {} = {:<4}'.format(x,y,x*y), end='  ')
    print()
print()
for x in range(1,10):
    for y in range(x,0,-1):
        print(x,"*",y,'=',x*y,end='  ')
    print()

print('反向输出')
for x in range(9,0,-1):
    for y in range(1,x+1):
        print('{} * {} = {:>2}'.format(x, y, x * y), end='  ')
    print()

 

 

python中的所有函数 

#函数返回多个值的时候,默认返回的数据类型是 元组
def test():
    return 'a','b',1
a,b,c=test() #实际中 方法返回的参数都不是事先定义好,所以实际工作中基本不用
print(a,b,c) # a b 1
print(test())#('a', 'b', 1) 只需要注意这个就可以了

'''
    默认参数 x,n=2 表示的是默认参数。调用时即使不明确定义参数默认就是这个也不会报错
    可以用于方法的升级,对之前的调用老方法的代码不产生影响
'''
def defaultParameter(x,n=2):
    s=1
    while n>0:
        s=s*x
        n=n-1
    print(s)
defaultParameter(2)  #4  指的是2的2次方
defaultParameter(2,5)#32 指的是2*2*2*2*2

'''
可变参数
*Parameter 表示没有规定参数的个数,出入什么类型参数都可以,不过一般是默认的一个类型的参数
具体什么时候用不清楚···
'''
def changeParameter(*Parameter):
    for i in Parameter:
        print(i)
nums=[1,2,3,45,'123']
changeParameter(1,2,3,45,'123')
changeParameter(*nums)#通过list传入参数

'''
    关键字参数 **kw 类似键值对的形式 sex和address此处算作是关键字
    输出结果为:姓名: 张三  年龄: 18  其他信息: {'sex': '男', 'address': '北京朝阳'}
    用于函数调用,通过“键-值”形式加以指定。可以让函数更加清晰、容易使用,同时也清除了参数的顺序需求。
'''
def studentInfo(name,age,**kw):
    print("姓名:",name,' 年龄:',age,' 其他信息:',kw)

studentInfo('张三',18,sex='男',address='北京朝阳')

#字典形式传入关键字参数
dictStudent ={'特长':'拍片','身高':'目测160','体重':'不详','三围':"80,90,92"}
studentInfo('苍老师','30+',**dictStudent)

print("=========================================================="*2)


#使用关键字参数的时候可以根据关键判断传递过来的条件是否友想要获取的
#下面的name,age,*,city表示 当使用关键字传递的时候可以只能够使用city=值的这种,而且city不能使用位置参数不能直接赋值
#代码块如果是空的则会报错,添加一个pass表示的是空的方法,
def studentRegionInfo(name,age,*,city):
    print(city)
studentRegionInfo('zs',1,2,city=4)
print("=========================================================="*2)

#下面这个函数定义需要能看懂 输出结果 1 2 (3, 4, 5) {'sex': '男', 'address': '北京朝阳'}
def studentRegionInfo(name,age,*city,**kwargs):
    print(name,age,city,kwargs)

studentRegionInfo(1,2,3,4,5,sex='男',address='北京朝阳')
studentRegionInfo(1,2,*nums,sex='男',address='北京朝阳')
studentRegionInfo(1,2,*nums,**dictStudent) # 使用list传递可变参数,使用字典传入关键字参数 1 2 (1, 2, 3, 45, '123') {'特长': '拍片', '身高': '目测160', '体重': '不详', '三围': '80,90,92'}


#全局变量和局部变量

name = '张三'
def callMe():
    global name#声明一下我在这个函数内使用的参数是 全局变量
    name = 'lisi'
    print(name)
callMe()#lisi

 

总结一下python中的函数中的各种的参数:

 

'''
    1.位置参数(调用函数时根据函数定义的参数位置来传递参数)
        def print_hello(name, sex):
            print(name,sex)
         两个参数的顺序必须一一对应,且少一个参数都不可以
         print_hello('tanggu', 1)
    2.关键字参数(用于函数调用,通过“键-值”形式加以指定。可以让函数更加清晰、容易使用,同时也清除了参数的顺序需求)
         print_hello('tanggu', sex=1)
         print_hello(1, name='tanggu')
         print_hello(name='tanggu', sex=1)
         print_hello(sex=1, name='tanggu')
         上面这几种都是可以的总结一下:
         1.就都使用关键字传递参数,这样传参位置更加灵活,但是需要编写的代码更多一些(推荐使用,可读性更好)
         2.按照函数定义的顺序传参都不使用关键字
         3.位置参数在前,关键字参数在后的顺序需要牢记,
         4.基本上2个以上的参数,就按照前两种的参数定义传参,
    3.默认参数(需注意顺序,位置参数最靠前>默认参数位置)   
    4.可变参数(包裹位置传递(def func(*args):),包裹关键字传递(def func(**kw):)kw是一个字典(dict),收集所有关键字参数)
    5.*和**,也可以在函数调用的时候使用,称之为解包裹(unpacking) 就和上面的代码调用的时候是一样的
'''

 下一期 python中 文件读写内容学习~~~ヾ(•ω•`)o😄


 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值