分支结构
if语句的使用
在Python中,要构造分支结构可以使用if 、elif 和else 关键字。所谓关键字就是有特殊含义的单词,像if 和else 就是专门用于构造分支结构的关键字,很显然你不能够使用它作为变量名。 分支结构可以嵌套使用,但要注意嵌套的深度。太深影响可读性 代码块:保持相同缩进的代码属于同一代码块。
Python中使用了缩进的方式来表示代码的层次结构,如果if 条件成立的情况下需要执行多条语句,只要保持多条语句具有相同的缩进就可以了。换句话说连续的代码如果又保持了相同的缩进那么它们属于同一个代码块,相当于是一个执行的整体。缩进可以使用任意数量的空格,但通常使用4个空格,强烈建议大家不要使用制表键来缩进代码,如果你已经习惯了这么做,可以设置代码编辑工具将1个制表键自动变成4个空格,
提示:if 和else 的最后面有一个: ,它是用英文输入法输入的冒号;程序中输入的' 、" 、= 、( 、) 等特殊字符,都是在英文输入法状态下输入的。有很多初学者经常不注意这一点,结果运行代码的时候就会遇到很多莫名其妙的错误提示。强烈建议大家在写代码的时候都打开英文输入法。
如果要构造出更多的分支,可以使用if...elif...else... 结构或者嵌套的if...else... 结构,下面的代码演示了如何利用多分支结构实现分段函数求值。
"""
2 -分段函数求值
3x - 5, x > 1
f(x) = x + 2 , -1 <= x <= 1
5x + 3, x<-1
分支结构可以嵌套使用,但要注意嵌套的深度。太深影响可读性
代码块:保持相同缩进的代码属于同一代码块。
Author: yang
Date: 2021/7/21
"""
x = float(input("x = "))
if x > 1:
y = 3 * x - 5
elif -1 <= x <= 1:
y = x + 2
else:
y = 5 * x + 3
print(f'f(x)={y}')
循环结构
for-in循环
for-in 循环,例如计算1到100的和。 被for-in 循环控制的语句块也是通过缩进的方式来确定的,这一点跟分支结构完全相同,大家看看下面的代码就明白了。
a = 0
for i in range(1, 101):
a += i
print(a)
上面代码中的range(1, 101) 可以用来构造一个从1到100的范围,当我们把这样一个范围放到for-in 循环中,就可以通过前面的循环变量x 依次取出从1到100的整数。当然,range 的用法非常灵活,下面给出了一个例子:
range(101) :可以用来产生0到100范围的整数,需要注意的是取不到101。range(1, 101) :可以用来产生1到100范围的整数,相当于前面是闭区间后面是开区间。range(1, 101, 2) :可以用来产生1到100的奇数,其中2是步长,即每次数值递增的值。range(100, 0, -2) :可以用来产生100到1的偶数,其中-2是步长,即每次数字递减的值。
知道了这一点,我们可以用下面的代码来实现1~100之间的奇数求和、偶数求和。
a = 0
b = 0
for i in range(1, 101):
if i % 2 == 0:
a += i
else:
b += i
print(a)
print(b)
while循环
Python 编程中 while 语句用于循环执行程序,即在某条件下,循环执行某段程序,以处理需要重复处理的相同任务。其基本形式为:
while 循环条件:
循环体
执行语句可以是单个语句或语句块。判断条件可以是任何表达式,任何非零、或非空(null)的值均为true。 当判断条件假 false 时,循环结束。
执行流程图如下:
while 语句时还有另外两个重要的命令 continue,break 来跳过循环,continue 用于跳过该次循环,break 则是用于退出循环,此外"判断条件"还可以是个常值,表示循环必定成立,具体用法如下:
- 无限循环
如果条件判断语句永远为 true,循环将会无限的执行下去。 注意:以上的无限循环你可以使用 CTRL+C 来中断循环。 - 循环使用 else 语句
在 python 中,while … else 在循环条件为 false 时执行 else 语句块:
import random
answer = random.randint(1, 100)
counter = 0
while True:
counter += 1
number = int(input('请输入: '))
if number < answer:
print('大一点')
elif number > answer:
print('小一点')
else:
print('恭喜你猜对了!')
break
print(f'你总共猜了{counter}次')
- 简单语句组
类似 if 语句的语法,如果你的 while 循环体中只有一条语句,你可以将该语句与while写在同一行中。
注意:以上的无限循环你可以使用CTRL+C来中断循环。
break语句
break语句用于结束循环,常与条件判断一起使用,在特定条件下结束循环,后续循环代码不再执行。
break语句的用法:
while 循环条件:
……
if 循环结束条件:
break
……
for 变量 in 循环序列:
……
if 循环结束条件:
break
……
实例如:
i = 0
while i < 5:
i = i + 1
if i == 3:
break
print(i)
print('循环结束')
for i in range(5):
i = i + 1
if i == 3:
break
print(i)
print('循环结束')
注意: break语句可以在特定条件下跳出死循环,相当于将循环条件放到了循环体中,用if和break语句来判断并终止循环。
continue语句
continue语句用于在特定情况下跳过当前循环体中的剩余语句,继续进行下一轮循环,常和条件判断一起使用。
while 循环条件:
……
if 循环结束条件:
continue
for 变量 in 循环序列:
……
if 循环结束条件:
continue
实例如:
i = 0
while i < 5:
i = i + 1
if i == 3:
continue
print(i)
print('循环结束')
for i in range(5):
i = i + 1
if i == 3:
continue
print(i)
print('循环结束')
注意: break语句用于结束循环,continue语句用于跳过当前循环,所以continue语句不能跳出死循环。
Note: break语句和continue语句都需缩进。
. 总结拓展
- while循环和for循环辨析
相同点:将一件事重复n遍; 不同点:while循环更适合循环次数不确定的情况,for循环更适合循环次数确定的情况。 - break和continue语句辨析
break:跳出整个循环; continue:跳出当前循环。 - zip()函数
zip()函数和for循环结合可以同时遍历多个列表。 zip()函数生成的列表中的元素是一个个元组,上例中name, book这样用逗号分隔开的写法可以获取元组中对应的元素。
注意: 当用zip()函数同时遍历多个列表时,如果两个列表长度不一样,遍历次数以长度短的列表长度为准。
- enumerate()函数
作用:同时给出序列的元素下标和元素。 注意: enumerate()函数返回值是enumerate类型,也需要用list()函数转换。 enumerate()函数生成的新列表中的元素也是元组,元组中第一个元素是索引,第二个元素是原来列表中对应索引的元素。
例子
"""
求两个数的最大公约数 -
Author: yang
Date: 2021/7/21
"""
a = int(input('a= '))
b = int(input('b= '))
while b % a != 0:
a, b = b % a, a
print(a)
"""
完美数 -
Author: yang
Date: 2021/7/21
"""
for i in range(1, 10001):
a = 0
for k in range(1, i):
if i % k == 0:
a += k
if i == a:
print(a)
"""
水仙花数 -
Author: yang
Date: 2021/7/21
"""
for i in range(100, 1000):
if i == (i // 100) ** 3 + (i % 100 // 10) ** 3 + (i % 100 % 10) ** 3:
print(i)
"""
判断是不是质数 -
Author: yang
Date: 2021/7/21
"""
a = int(input('请输入一个正整数:'))
if a==1:
print(f'不是质数{a}')
elif a==2:
print(f'是质数{a}')
for k in range(2, a):
if a % k == 0 :
print(f'不是质数{a}')
break
else:
print(f'是质数{a}')
break
|