笔记五(for 、while、自定义函数、lambde、eval、递归)

本文介绍了Python编程中的for循环、while循环及其相关语法,包括九九乘法表的打印、字典操作如遍历、条件判断。此外,还涉及了列表推导式、字典推导式、集合推导式和生成器推导式的使用,以及自定义函数、浅拷贝与深拷贝的概念。同时,展示了如何利用turtle模块画棋盘,以及递归函数的实现。内容涵盖基础编程技巧和数据结构的运用。
摘要由CSDN通过智能技术生成

for 循环

九九乘法表:

for x in range(1,10):
    for y in range(1,x+1):
        z=x*y
        print('{0}*{1}={2}'.format(x,y,z),end='\t')
    print()

表格:

r1={'姓名':'高小一','年龄':'18','薪资':30000,'城市':'上海' }

r2={'姓名':'高小二','年龄':'19','薪资':20000,'城市':'北京' }

r3={'姓名':'高小三','年龄':'20','薪资':10000,'城市':'南京' }
s=[r1,r2,r3]
for x in range(3):
    print(s[x])
    if s[x].get('薪资')>15000:
        print('纳税')



注意:字典建立时:先把每部分用变量表示,随后将其用dict(r1,r2.。。)统一到一个列表中

while语句

while
break:表示中断循环,跳出整个循环
例子:

s = []
while True:
    a = input('请输入员工工资:')
    if a.upper() == 'Q':
        print('录入完成')
        break
    elif float(a) < 0:
        continue
    elif float(a) >= 0:
        s.append(float(a))
        b = sum(s)
print('总工资是{0}'.format(b))
print('平均薪资是:{0}'.format(b/len(s)))


嵌套语句的细节:
尽量将内层嵌套全部搬到外层中,可以节省大量的运算,提升程序质量
列表频繁的数据尽量将数据放到最后,可以减少计算

while else语句

如果循环过程中并未执行break语句,在循环次数结束后,就会执行else语句,中间如果break,就不会只执行else语句

一下读取多个序列(元组):zip函数

在这里插入图片描述
第一部分的程序为zip函数,第二部分为一般方法

推导式

列表推导式:[x*2 for x in range(5)]

字典推导式:a={m:m.upper for m in s}

用两种方法显示一个字符串中各的数量:


a='i love you, i love dxt, i love gq'
b=[]
for m in a:
    if a.count(m)>=1:
        if b.count(m)==0:
            b.append(m)
for n in b:
    print('{0}:{1}'.format(n,a.count(n)),end='\t')
#普通方法

print('***************************')
s={n:a.count(n) for n in a}
print(s)
#推导式

集合推导式:
{x for x in range(10)}

生成器推导式(元组生成器):
(x for x in range(10))

元组生成器生成的数据只能使用一次

画棋盘:

import turtle
t=turtle.Pen()
turtle.speed(10)
for m in range(19):#0 1 2 3
    t.goto(0,m*10)
    t.pendown()
    t.goto(180,m*10)    #x:180 180 180  y:m*10
    t.penup()
for n in range(19):
    t.penup()
    t.goto(n*10,180)
    t.pendown()
    t.goto(n*10,0)

自定义函数:

def 函数名(变量)
#函数解释
函数体

函数也是对象

尽量使用局部变量,效率高,全局变量与局部变量重名时,系统优先使用局部变量

浅拷贝:只拷贝该对象本身,不拷贝子对象
深拷贝:拷贝该对象和子对象

使用时:浅拷贝中,复制出来的子对象的修改会导致原对象的变化,而深拷贝不会

不可变对象的拷贝是浅拷贝

函数定义时:形参如果有带默认值,则应放在无默认值的形参后面
如果放在前面,就要在使用函数时强制命名

函数定义时:有两种新的定义方式:
def hanshuming(a,b,*c):*c表示将a,b后的数据保存在一个元组中
def hanshuming(a,b,**c):**c表示将a,b后的数据保存在一个元组中

lambde表达式(匿名函数)

f=lambde 形参:表达式
f=[lambde a:a*5,lambde b:b/5]

eval函数

可以执行括号内的任意类型的函数

递归函数

自己调用自己

def hanshu(m):
    if m==0:
        print('over')
        return 1   #此处是给递归函数的最后一个值垫底用的,必须得返回一个数值

    else:
        return m*hanshu(m-1)

print(hanshu(5))~
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值