python的逻辑控制
python逻辑执行
- python条件控制
- if嵌套
- 循环语句
- 内置函数range()
- Pass语句
- python迭代器与生成器
- 在python中创建一个迭代器
- 生成器yield
python条件控制
# 在python中,不使用括号将条件固定
if exp: # 条件满足则执行,后续语句不执行
# 不使用{}将执行语句固定,也没有;作为结尾
statement
elif exp:# 条件满足则执行,后续语句不执行
statement
else:# 上面的条件都不满足则执行
statement
以上就是条件语句基本执行过程。
a = [1,2,3,4,5]
if 1 in a:
print("1在a里面")
else:
print("1不在a里面")
if 1 not in a:
print("1不在a里面")
elif 1 in a:
print("在a里面")
if嵌套
if 表达式1:
语句
if 表达式2:
语句
elif 表达式3:
语句
else:
语句
elif 表达式4:
语句
else:
语句
if语句可以嵌套在if语句中,这样写时需要注意语句的对其方式,因为python是使用空格进行对齐的。
num = int(input("请输入一个数字:"))
if num % 5 == 0:
if num % 3 == 0:
print("你的数字可以被5和3整除")
else:
print("你的数字可以被5整除,不能被3整除")
else:
if num % 3 == 0:
print("你的数字可以被3整除,不能被5整除")
else:
print("你的数字不可以被5和3整除")
循环语句
# while :满足条件执行,不满足条件不执行
while True:
语句 # 无限循环
# for : 满足条件执行,不满足条件不执行
for 条件循环:
语句
示例:
# 简单示例
for i in range(1, 6):
print(i, end=",")
i = 5
while i >= 0:
print(i, end=",")
i -= 1
内置函数range()
range()是在python中比较常用的一个函数,在range()函数参数为数字
range(1,6)范围中等于1小于6的数字:12345
range(1,6,2)范围中1~5,跨步为2–》1,3,5步长也可以为负数,负数就是倒着进行读取
range(stop):可以填写列表,元组,集合以及其他数据类型。
示例:
# 配合函数一起使用
# 简单用法
for i in range(1, 6):
print(i, end=",")
print("分割线——————————")
# 跨步用法
for i in range(1, 6, 2):
print(i, end=",")
print("分割线——————————")
# 步长为负数
for i in range(6, 1, -2):
print(i, end=",")
print("分割线——————————")
# 应用列表
list1 = [1, 2, 3, 4, 5, 6]
for i in range(len(list1)):
print(i, end=",")
Pass语句
在一些暂时不用实现的方法来使用pass可以保证暂时不会报错。
在python中同样有bleak
和continue
语句,和其他语言都是一样的用法。
break:退出当前循环。
continue:结束当前执行的循环,直接开启下一段循环(如果有的话)。
for i in range(1, 6):
if i == 5:
break
print(i, end=",")
print("\n分割线——————————")
for i in range(1, 6):
if i == 3:
continue
print(i, end=",")
python迭代器与生成器
iter()和next(),配合使用。首先iter是作为一个对象存在的,而next是用于遍历这个对象存在的。
list = [1,2,3,4]
it = iter(list)
print(next(it))
print(next(it))
这个next相当于做了一个循环的作用。
在python中创建一个迭代器
在python中创建一个迭代器需要实现两个函数iter(),next()
。使用__iter__
中返回一个特殊的迭代对象。这个迭代器实现了一个__next__
方法将通过标识将迭代完成。
class MyNumbers:
def __iter__(self):
self.a = 1
return self
def __next__(self):
x = self.a
self.a += 1
return x
myclass = MyNumbers()
myiter = iter(myclass)
print(next(myiter), end=" ")
print(next(myiter), end=" ")
print(next(myiter), end=" ")
print(next(myiter), end=" ")
print(next(myiter), end=" ")
在实现迭代器中需要使用到一个标识符Stoplteration
用于终止标识迭代的完成。
def __next__(self):
if self.a <= 20:
x = self.a
self.a += 1
return x
else:
raise StopIteration
生成器yield
yield:相当于是一个暂停键!不过也可以将这个看作一个迭代器,因为作为一个生成器,当执行到生成器这段代码时,yield会将结果返回,执行下一段代码,然后执行后又会回到这段代码中。
使用yeild来写一个__斐波那契__数(也就是a = 1 ,b = 1,c = a+b a = b,b = c+a……)相信记得的同学应该可以看明白
import sys
def fibonacci(n): # 生成器函数
a, b = 1, 1
count = 0
while True:
if count >= n: # 检查是否已达到所需的斐波那契数数量
break # 退出循环
yield a
a, b = b, a + b
count += 1 # 更新计数
yie = fibonacci(5) # 生成前5个斐波那契数
while True:
try:
print(next(yie), end=" ")
except StopIteration:
sys.exit() # 调用函数来退出程序