python学习_day2-----流程控制&函数&列表

流程控制

"""
流程:程序执行的顺序
流程控制:控制程序执行的顺序
流程控制三种形式:
1、顺序控制(从上往下依次执行)
2、条件控制
3、循环控制
"""

一、顺序控制

print("打开冰箱")
print("放进大象")
print("关闭冰箱")

二、条件控制

1、简单条件控制

"""
if 条件:
    满足条件执行的代码
else:
    条件不成立时执行的代码
print("条件判断结束")
"""
# 如果体温超过37.3,不让进学校
temp=float(input("请输入你的体温:")) #注意:input接收到数据为string类型
print(type(temp)) #<class 'float'>
if temp>37.3:
    print("不可以进学校")
else:
    print("可以进入")

2、多条件控制

"""
if 条件1:
    满足条件1执行的代码块1
elif 条件2:
    不满足条件1,但是满足条件2 执行的代码块
elif 条件3:
    不满足条件1、2,但是满足条件3 执行的代码块
else:
    上述均不满足,执行该代码块
"""
#成绩>90 优;80-90 良;70-80 中;<70 勉强
score=int(input("please input your score:"))
if score>90:
    print("优")
elif score>80:
    print("良")
elif score>70:
    print("中")
else:
    print("勉强")

3、条件嵌套

"""
if 条件1:
    执行代码块1
    if 条件2:
        满足条件1和条件2,执行的代码块
        if 条件3:
            满足条件1、2、3,执行的代码块
"""
#--------------练习--------------
#进火车站
#1、有没有票
#2、刀的长度<20cm
ticket=float(input("请输入是否有票:"))
knife_len=float(input("请输入刀的长度:"))
if ticket:
    if knife_len<20:
        print("进")
else:
    print("不能进")

三、循环控制:往复执行某段代码

1、while循环

"""
while 条件:
    条件满足时执行的代码块

如果条件永远成立,循环变成死循环
"""
money=0
year=0
while money<100000000:
    #学习、工作、赚钱
    print("第{}年学习、工作、赚钱".format(year))
    money+=300000
    year+=1
    #60岁退休
    if year==60:
        break #跳出循环
    if year%12==0:
        year += 1
        continue #跳出本次循环
print("一共需要多少年",year)
print("一共赚到多少钱",money)

2、for循环

"""
XX是可迭代对象---字符串是可迭代对象
for tmp in XX:
    print(tmp)
"""
#range函数--产生结果为可迭代对象
# range(start,stop,step)  生成一组指定范围的数值
# 会取start,不取stop,前闭后开,0--9
# start默认值是0,step默认为1
# 如果只写一个值,表示是stop的值;如果是两个值,是start和stop的值
for tmp in range(0,10):
    print(tmp,end=' ')
# 练习:输出9*9乘法表
for i in range(1,10):
    for j in range(1,i+1):
        print('%d*%d=%d' % (i,j,i*j),end='\t')
    print('\n')
   
for i in range(1,10):
    for j in range(i,10):
        print("{}*{}={}".format(i,j,i*j),end='\t')
    print('\n')

函数

"""
减少代码的重复
def 函数名([参数1,参数2...]):
    函数体(代码段)
    [return xxx]

函数:先定义,后调用;不调用,不执行
"""

一、函数声明

def show_sep(str1):
    print(str1.center(60,'*'))
    # print('*'*60)

二、函数调用

# show_sep()
show_sep("开始学习")

三、函数参数

show_sep("函数参数")
def add(a,b=0):
    print("{}和{}相加等于{}".format(a,b,a+b))

# #位置参数要在默认值参数之前
# def add(a=1,b):
#     print("{}和{}相加等于{}".format(a,b,a+b))

1、位置参数,实参和形参一一对应

add(10,20)

2、关键字参数(在函数调用时设置)

add(b=20,a=10)

3、默认参数(在函数定义时设置)

add(10)
add(10,20)

4、可变长度参数(在函数定义时设置)

def add_multi(*args):
    print(type(args))  # <class 'tuple'>
    sum1=0
    for tmp in args:
        sum1+=tmp
        print(tmp,end=' ')
    print("多个数值相加等于",sum1)
add_multi(10,20,30,40)

5、可变长度参数2(在函数定义时设置)

# **kwargs对于函数调用,只能传递关键字参数
# 将多个关键字参数组织成字典的形式
def show_info(**kwargs):
    print(type(kwargs)) # <class 'dict'>
    print(kwargs)
    for tmp in kwargs:
        print(tmp)
# 只能传关键字参数,不能接收位置参数
show_info(name="张三",age=20)
# *args 将实参中的位置参数,转换为元组的形式
# **kwargs 将实参中的关键字参数,转换为字典的形式

# 同时存在于形参中,位置参数 默认参数 *args(元组参数) **kwargs(字典参数)的顺序
# 1>位置参数->默认参数 add(a,b=1)√ add(a=1,b)×
# 2>默认参数和*args的先后顺序:默认参数->*args
def add(*args,a=10):
    print(a)  #10
    print(args)  #(10,20,30)
add(10,20,30)
# add(10,20,a=100)
def add(a=10,*args):
    print(a)  #10
    print(args)  #(20,30)
add(10,20,30)
# 3>*args和**kwargs的先后关系:**kwargs->*args
def add(*args,**kwargs):  # √
    print(kwargs)  #
    print(args)  #
add(10,20,30,name="张三",age=20)
# def add(**kwargs,*args):  # ×
#     print(kwargs)  #
#     print(args)  #
# add(10,20,30,name="张三",age=20)
# 4>位置参数和*args的先后顺序

# 调用时关键字参数的顺序
# 位置参数 -> *args(元组参数) ->  默认参数 -> **kwargs(字典参数)
# def print(self, *args, sep=' ', end='\n', file=None)

四、函数返回值

# 如果函数没有返回值,默认返回None
# 如果返回值有多个,默认会被组织成元组的形式
# 求平均值和总和
def fun(*args):
    sum1=0
    for tmp in args:
        sum1+=tmp
    mean1=sum1/len(args)
    return sum1,mean1

res=fun(10,30)
print(res)

五、递归函数

1、阶乘

def jiecheng(n):
    if n==1:
        return 1
    else:
        res=n*jiecheng(n-1)
        return res
res=jiecheng(3)
print(res)

2、斐波那契数列

def fibo(n):
    if n==1 or n==2:
        return 1
    else:
        return fibo(n-1)+fibo(n-2)
res=fibo(4)
print(res)

列表

"""
列表
定义[元素1,元素2,....]
可以修改的有序序列
"""

一、定义一个空列表

# 1>方式1
# list1=[]
# 2>方式2
list1=list()
print(list1)  # []
print(type(list1)) # <class 'list'>

# 列表里边可以有不同类型的值
list2=["张三","里斯",12,34,0.08,True]
print(list2)

二、列表的加法和乘法

list3=["hah","heih"]
print(list2+list3)
print(list3*2)
print([None]*2) # 生成指定长度的列表

三、增删改查

1>查-----和字符串完全一致,下标法和切片法

# 列表里边可以有不同类型的值
list2=["张三","里斯",12,34,0.08,True]
# 访问12
print(list2[2])
# 访问12和34
print(list2[2:4])
# 访问 张三和里斯
print(list2[0:2])

# 使用下标法会降低维度;切片法不会降低维度
print(list2[0]) # 张三
print(list2[0:1]) # ['张三']

2>增

"""
1>用+ 的形式
2>append:会将追加的内容(数据)作为一个整体,添加到列表中
         作为列表中的一个新元素
3>extend:将增加的数据拆分成单个元素,添加刀列表中;
         必须传递可迭代对象(是否可以提取元素)
4>insert:在指定的位置增加元素
"""
list3=["haha","xixi"]
list3.append("hehe")
list3.append(["pp","qq"])
list3.append(1)
print(list3) # ['haha', 'xixi', 'hehe', ['pp', 'qq'],1]
list3=["haha","xixi"]
list3.extend(["pp","qq"])
# list3.extend(1) 不可以
print(list3) # ['haha', 'xixi', 'pp', 'qq']
list3=["haha","xixi"]
list3.insert(1,"hehe")
list3.insert(100,["pp","qq"])  #超出索引范围,插到最后
# list3.insert(-1,["aa","bb"])
print(list3)

3>改:可以针对某个索引的元素,也可以修改某一段

list3=["haha","xixi",1,2,3,4]
# list3[0]="aa"
list3[0]=["aa","bb"]
list3[-4:]=[11,12]
print(list3)

4>删

"""
1>pop:返回最后一个元素,并且将最后一个元素从列表中删除
2>remove:删除指定元素
3>del
"""
list4=["张三","里斯",12,34,0.08,True]
list4.pop()
list4.remove(12)
del list4[0] # 删除一个元素
# del list4 # 删除整个列表
print(list4)

5>查找

list4=["张三","里斯",12,34,0.08,True]
ind=list4.index("里斯")
print(list4[ind:])

6>count:统计某元素在列表中存在的次数

7>翻转

list4=["张三","里斯",12,34,0.08,True]
list4.reverse()
print(list4)

8>排序

# 排序关键字key 按照什么方式进行排序
# list5=[-1,-3,-2,"12"]
list5=[-1,-3,-2,100]
# list5.sort(key=str) # 默认升序排序
# list5.sort(key=int,reverse=True) # reverse=True降序排序
list5.sort(key=abs) #按绝对值进行升序排序
print(list5)

猜你喜欢

转载自blog.csdn.net/weixin_45800653/article/details/121407370