-
if;else,缩进
- A:if的基础格式和缩进
- B:循环判断
- C:range()函数和len()函数
- D:break,contiue和pass语句
- for,while循环
- 函数基础
- A:函数的定义和返回值
- B:返回值的三种情况
- C:函数的注释
-
函数的进阶(命名空间和作用域)
- A:内置命名空间
- B:全局命名空间
- C:局部命名空间
- D:全局作用域
- E:局部作用域
- F:函数的嵌套和作用域链
- G:函数名的本质
-
闭包
♣一:if;else和缩进
A:if的基础格式和缩进
我们先看看if判断和循环能做什么。
在生产环境中,将会大量用到判断循环,来将一个需要重复执行的操作简化执行,如果没有判断循环,代码就和记流水账一样麻烦,会加大人工时间成本,比如说我要打印1到100的数字,按照普通的方式打印print(1)........print(100),需要输入100行相同的语句,会很麻烦,但是如果用循环判断,简单的几行就可以写出来。
打印0到20的数字:
#coding=gbk
a = 1 #定义变量的初始值是1
b = 21 #定义打印数字的结束值21,为什么是21要看下的a < b判断语句
for a in range(21): #for语句后面的range(21)在此是要for循环执行21次
if a < b: #1是否小于21,小于就执行下面的print语句
print(a, end=",") #上面的if条件满足就执行打印操作。
#执行结果
0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,
在上述的循环判断中,可以看到我们已经实现了0到20的数字打印,也基础的了解到了循环判断的用法,python的条件判断是通过代码块里面的运算符来控制输出的内容,前面基础篇(一)里面我们介绍了基础的运算符,现在就可以在循环判断里面进行实现重复的工作。
接下来我们通过if的基本模式来认识if的执行过程。
现在有一个要求:评判整个班级的分数等级,1;大于50小于65的学生需要每天晚自习到9点,2;大于65小于85的晚自习到8点,3;大于85小于100的晚自习到7点, 4;其余的晚自习到10点。
#coding=gbk
score = int(input("请输入你的分数:\n")) #在用户输入的时候就需要指定输入的类型,否则后面程序执行会报类型错误
if score >= 50 and score <= 65: #程序要求大于和小于某一个数字,但是在代码里面需要考虑到用户输入的数字是等于设定值的情况下,怎么处理
print("你需要晚自习到9点") #当用户输入数字了,那么该数字会和下面的每一条判断语句中的条件进行比对,满足指定的条件就会返回相应的结果
elif score >= 65 and score <= 85:
print("你需要晚自习到8点")
elif score >= 85 and score <= 100: #在每句判断语句结束之后必须要加上冒号(:),这个也是最基本的语法要求,而且接下来的打印语句前面是带空格的,这个也是python有别于其他语言的地方,在java语言里面可能看到判断
print("你需要晚自习到7点") #语句后面是一对{花括号},这个是让程序知道一段代码的作用域就是靠{花括号}来定义的,这样程序就知道这个判断是要执行这个作用域下面的语句,而python就是靠缩进来定义作用域
else: #的,而且这个缩进标准就是4个空格,大家默认都是这么遵守的,而且代码越复杂,缩进就越多,这个也成了python的特点,强制缩进。
print("你需要晚自习到10点")
#执行结果:
请输入你的分数: #后面执行代码如果出现IndentationError错误的,就是语法缩进有错误。
20
你需要晚自习到10点
请输入你的分数:
90
你需要晚自习到7点
可以通过下图来简单了解下语句执行的过程:
注:
- python里面每个条件语句后面都需要加冒号(:),表示满足条件之后接下来要执行的代码块,如果不加就会报错。
- 使用缩进来划分语句块,相同缩进数的语句在一起组成一个语句块。
- python中用elif替代了else if,语句形式为if xxxx:elif xxxx:else xxxx:
- 在Python中没有switch – case语句。
B:循环判断:
上面的if判断只能满足一次执行,一般在需要输入密码的地方都是需要限定次数的,如果超过这个次数限制可能就是有人在暴力破解,所以按照上面的代码是不能实现的,永远只能匹配到一次正确的,如果是本人不小心输错密码,直接终止了程序,那还需要重新执行下程序,这个是及其不友好的,所以就需要我们加上计数器这样的代码。
#coding=gbk
y = 1
username = "克鲁斯"
password = 123123
while True:
user = input("请输入用户名:\n")
ps = int(input("请输入密码:\n"))
if user == username and ps == password:
print("欢迎回来,%s" %user)
break
else:
y += 1 #通过y定义的初始值,当每次循环到这里的时候就加1,然后再去执行下一次循环,当y > 3了,就执行break的操作
if y > 3: #通过计数器的功能,可以让循环可控。
print("密码错误次数太多,请20秒之后在重新登录")
break #break是结束退出本次循环,还有一个continue是跳出本次循环,进行下一次循环
#exit() #和break的功能类似
执行结果:登陆成功
请输入用户名:
克鲁斯
请输入密码:
1
请输入用户名:
克鲁斯
请输入密码:
123123
欢迎回来,克鲁斯
登陆失败:
请输入用户名:
克鲁斯
请输入密码:
1
请输入用户名:
克鲁斯
请输入密码:
123123
欢迎回来,克鲁斯
C:range()函数和len()函数:
range()函数和len()函数经常会在一起使用,range()函数用于快速生成一个有序的数字列,而且range只能在后面添加整数,len()函数用于返回列的索引,也就是前面说的下标,这两个会经常一起出现
一: #coding=gbk for i in range(10): print(i, end=",") #执行结果: 0,1,2,3,4,5,6,7,8,9, 二: for i in range(5,20): #从5开始到20结束 print(i, end=",") #执行结果: 5,6,7,8,9,10,11,12,13,14,15,16,17,18,19, 三: #coding=gbk for i in range(0,20 ,3): #从0开始到20结束,每隔3位数打印一个数 print(i, end=",") #执行结果: 0,3,6,9,12,15,18, #当然也可以打印负数