Python学习 06:python 基础语句:if/for/while
前面学习了 python 中的基础数据类型,现在开始学习 python 中和程序结构相关的内容,首先从基础语句开始
- 语句简单分类
- if 语句
- for 语句
- while 语句
- 解析式语句
语句类型
python 程序语言里面语句较多,基本是一个或多个关键字对应一个语句类型,常用的语句类型如下:
- 赋值语句
- 判断语句
- 循环语句
- 解析式语句
- 异常捕获语句
- 函数定义语句
- 函数调用语句
- 类定义语句
- 类使用语句
- 包引入语句
这里我们只介绍 赋值语句 、 判断语句 、 *循环语句*、解析式语句 ,其他语句适合特定类容相关的,在后面和内容一起介绍。
在 python 中语句嵌套组合,形成更复杂的程序结构。
赋值语句
还记的变量吧,赋值语句主要是针对变量的。每个赋值语句一定包含 =
操作符,或者含有 =
语义的操作符,例如:+=
、*=
、/=
等。
一个赋值语句包含三部分:=
操作符、左值、右值。在=
左边的的表达式计算结果称为左值,在=
右边的表达式计算结果称为右值。
- 左值的计算结果一定是一个变量或引用
- 右值的计算记过一定是一个对象
例如:
a=1
, 这里a
表示左值,是一个变量;1
表示右值,是一个对象L[a+1]=5*3
, 这里L[a+1]
表示左值,计算的结果是表示一个引用;5*3
表示右值,计算的结果是一个对象
a=1
a
a += 5
a
注意:
=
操作不要求左值变量已经创建,如果没有定义会自行创建。但是在使用+=
、*=
、/=
等类似操作符时,要求 左值既是一个对象,也是一个变量或引用。因为这类操作符是先计算并获取左值引用的对象,然后使用这个对象和右值计算的对象做运算,最后在赋值给左值的变量或引用。
# 由于 变量 b 没有定义,所以在计算 b 的对象时会发生错误
b += 1
if 语句
Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块。
可以通过下图来简单了解条件语句的执行过程:
Python程序语言指定任何非0和非空(null)值为true,0 或者 null 为false。
Python 编程中 if 语句用于控制程序的执行,基本形式为:
if 判断条件:
执行语句……
else:
执行语句……
其中”判断条件”成立时(非零),则执行后面的语句,而执行内容可以多行,以缩进来区分表示同一范围。
else 为可选语句,当需要在条件不成立时执行内容则可以执行相关语句,具体例子如下:
name='Lilei'
if name=='Lilei':
print("My name is Lilei!")
else:
print("My name is Hanmeimei!")
if 语句的判断条件可以用>(大于)、<(小于)、==(等于)、>=(大于等于)、<=(小于等于)来表示其关系。
当判断条件为多个值时,可以使用以下形式
if 判断条件1:
执行语句1……
elif 判断条件2:
执行语句2……
elif 判断条件3:
执行语句3……
else:
执行语句4……
name='Hanmeimei'
if name=='Lilei':
print("My name is Lilei!")
elif name=='Hanmeimei':
print("My name is Hanmeimei!")
elif name=='dog':
print("Sorry, this is a dog!")
else:
print("This is an ET!")
name='apple'
if name=='Lilei':
print("My name is Lilei!")
elif name=='Hanmeimei':
print("My name is Hanmeimei!")
elif name=='dog':
print("Sorry, this is a dog!")
else:
print(name + " is an ET!")
if
语句的判断条件
item = 2
L = [1,2,3]
# 成员运算
if item in L:
print("%d 在 %s 中" %(item, str(L)))
else:
print("%d 没在 %s 中" %(item, str(L)))
# 比较运算符
a = 1
b = 2
if a==b:
print("a 等于 b")
else:
print("a 不等于 b")
# 逻辑运算符
if a==b and item in L:
print("a 等于 b 同时 %d 在 %s 中" %(item, str(L)))
else:
print("a 不等于 b 或者 %d 不在 %s 中" %(item, str(L)))
循环语句
for 语句
Python for循环可以遍历任何序列的项目,如一个列表或者一个字符串。
for循环的语法格式如下:
for iterating_var in sequence:
statements(s)
流程图:
实例:
print("循环字符串:")
s = "Python!"
for letter in s:
print("\t当前字符:" + letter)
print("循环序列:")
l = [4,3,2,1,12]
for item in l:
print("\t当前元素:" + str(item))
fruits = ['apple', 'orange', 'banana']
for i in range(len(fruits)):
print("第 %d 个水果是 %s" %(i+1, fruits[i]))
objs = [{'a':'a1'}, {'a':'a2'}, {'a':'a3'}]
print(objs)
for obj in objs:
obj=1
print(obj)
print(objs)
objs = [{'a':'a1'}, {'a':'a2'}, {'a':'a3'}]
print(objs)
for obj in objs:
obj['a'] = 'aaa'
print(obj)
print(objs)
while 语句
Python 编程中 while 语句用于循环执行程序,即在某条件下,循环执行某段程序,以处理需要重复处理的相同任务。其基本形式为:
while 判断条件: 执行语句…… 执行语句可以是单个语句或语句块。判断条件可以是任何表达式,任何非零、或非空(null)的值均为true。
当判断条件假false时,循环结束。
执行流程图如下:
Gif 演示 Python while 语句执行过程
count = 0
while count < 9:
print('The count is:' + str(count))
count = count + 1
print("Good bye!")
s = ''
while s!='bye':
s = input("Enter a number :")
print("You entered: " + s)
print("Bye Bye!")
break、continue、pass 语句
再循环中常常会遇到提前结束整个循环或提前结束当前循环操作,这个时候就需要用到 break
和 continue
。
- break:结束整个循环,剩余的循环次数不再执行
- continue:结束本轮循环操作,本轮循环后面的语句不再执行,但是剩余的循环次数将继续执行
- pass:空语句,一个占位符,表示这里什么都每一偶
l = [1,2,3,4,5,6]
print("正常输出:")
for i in l:
print("i = %d" % i)
print("break 输出:")
for i in l:
if(i==3):
break # 这里将结束 i=3 以后的所有输出
print("i = %d" % i)
print("break 输出:")
for i in l:
if(i==3):
continue # 这里将跳过 i=3 的输出
print("i = %d" % i)
语句嵌套
从上面的实例可以看到,在 for
语句里面包含了 if
语句,其实任务语句都可以嵌套使用,语句嵌套使我们可以处理复杂的逻辑和流程。下面通过一个例子说明。
?输出常见的加法口诀表
for i in range(10):
for j in range(1, i+1):
print('%d+%d=%d' %(j,i,i+j), end='\t')
print()
for i in range(10):
for j in range(1, 10):
if(j>i):
break
print('%d+%d=%d' %(j,i,i+j), end='\t')
print()
解析式语句
解析式语句可以使我们更容易处理列表数据,它的所有能力都可以使用循环语句实现,可以看做循环语句的简略形式。解析式可以任何支持迭代操作的数据结构,包括:列表、元组、自定义支持迭代类型
看一下例子: > 将 L 列表中,所有数据都加上 20
L = [1,2,3,4,5,6,7,8,9,10]
# 循环实现
L1=[]
for item in L:
L1.append(item+20)
print("循环实现\t\t",end='');print(L1)
# 解析式实现
L2=[ item+20 for item in L]
print("解析式实现\t",end='');print(L2)
可以在解析式里面做数据过滤
找出 L 中所有的偶数
L = [1,2,3,4,5,6,7,8,9,10]
# 循环实现
L1=[]
for item in L:
if item % 2==0:
L1.append(item)
print("循环实现\t\t",end='');print(L1)
# 解析式实现
L2=[ item for item in L if item % 2==0]
print("解析式实现\t",end='');print(L2)
L1 = [1,2,3]
L2 = [3,4,5]
print([(x,y) for x in L1 for y in L2])
print([(x,y) for x in L1 for y in L2 if x==y])
L = [1,2,3,4,5,6]
print([x+1 for x in [x*2 for x in L]])
(x for x in [1,2,3])
时,这个其实是 生成表达式 语法,会在下次介绍。
L3 = [1,2,3]
print([x**2 for x in L3])
print({"i"+str(x):x**2 for x in L3})
print([x**2 for x in (4,5,6)])
print((x**2 for x in (4,5,6)))
试试
?给定三条线段的长度,判断是否能组成三角形,如果能输出三角形:普通三角形、等腰三角形、等边三角形或直角三角形
例如:
a=1; b=2; c=3 输出:不是三角形
a=3; b=4; c=5 输出:直角三角形
a=1; b=1; c=1 输出:等边三角形
文章作者 Threeq
上次更新 2018-07-19