目录
一、条件循环
1.if 语句
2.if-else 语句
3.if-elif-else 语句
4.assert 关键字
二、循环语句
1.while 循环
2.while -else 循环
3.for 循环
4.for -else 循环
5.range()函数
6.enumerate() 函数
7.break 语句
8.continue 语句
9.pass 语句
10.推导式
11.综合例子
正文
一、条件循环中
if之前有仔细研究过,今天就不赘述了
主要说一下elif 和esle 的区别,elif有条件表达式,二esle没有
#elif 和else 的区别是elif有条件表达式,另外一个没有 age=3 if age>=18: print('adult') elif age>6: print('teenager') else: print('kid') #else age=int(input('age:')) if age>=18: print('adult') else: print('not adult')
主要记录一下没有接触过的assert
assert 关键字
用法如下
assert +条件表达式
当条件表达式为真时,才能让程序正常进行,但条件为假时,抛出AssertionError
#assert assert 2>3 assert 3>2
二、循环语句
1.while循环
while 布尔表达式: 代码块
代码会一直循环执行下去,直到布尔表达式的值为假
n=10 i=0 while i <n: print(i) i=i+1
如果布尔表达式不带有<、>、==、!=、in、not in
等运算符,仅仅给出数值之类的条件,也是可以的。
当while
后写入一个非零整数时,视为真值,执行循环体;写入0
时,视为假值,不执行循环体。
也可以写入str、list
或任何序列,长度非零则视为真值,执行循环体;否则视为假值,不执行循环体
#死循环了,最好不要写这样的死循环 while 1: print('hi') #list l=list('abc') while l: print(l) l=l[1:] #除了位置为0的不要,其他都要
2.while-else 循环
while 布尔表达式: 代码块 else: 代码块
当布尔表达时为真是,循环执行while的代码块,但是当布尔表达式为假时,则执行else的代码块
count = 0 while count < 5: print("%d is less than 5" % count) count = count + 1 else: print("%d is not less than 5" % count)
3.for 循环
在工作中,主要用于可迭代对象的遍历
for 迭代变量 in 可迭代对象: 代码块
list 的遍历
#list 的迭代 l=list('abcdefg') for i in l: print(i) #位置和值 for i ,j in enumerate(l): print((i,j)) #len和range for i in range(len(l)): print(l[i])
dict的遍历
#dict的迭代 dic = {'a': 1, 'b': 2, 'c': 3, 'd': 4} #value的遍历 for i in dic.values(): print(i,end=' ') #key的遍历 for i in dic.keys(): print(i,end=' ') #key 和value 的遍历 for i ,j in dic.items(): print(i,j,sep=':',end=' ')
当然string也可以迭代
#string a='hello,python' for i in a: print(i,end=' ')
4.for -else 循环
当for
循环正常执行完的情况下,执行else
输出,如果for
循环中执行了跳出循环的语句,比如 break
,将不执行else
代码块的内容,与while - else
语句一样
for 迭代变量 in 可迭代对象: 代码块 else: 代码块
for num in range(10, 20): # 迭代 10 到 20 之间的数字 for i in range(2, num): # 根据因子迭代 if num % i == 0: # 确定第一个因子 j = num / i # 计算第二个因子 print('%d 等于 %d * %d' % (num, i, j)) break # 跳出当前循环 else: # 循环的 else 部分 print(num, '是一个质数')
5.range()函数
一般用于生产一个数字序列
range([start,] stop, [step=1])
start 和step这两个参数可以不输入,如果只输入stop值,那么将会生产一个从0到stop-1的的序列
list(range(10)) #[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] list(range(1,10)) #[1, 2, 3, 4, 5, 6, 7, 8, 9] list(range(1,10,2)) #[1, 3, 5, 7, 9] #0 1 2 3 4 5 6 7 8 9 for i in range(10): print(i,end=' ')
6.enumerate()函数
enumerate(sequence, [start=0]) #start参数可以不输入
sequence -- 一个序列、迭代器或其他支持迭代对象。
start -- 下标起始位置。
返回 enumerate(枚举) 对象
我一般用于list迭代时,位置和value的输出
#位置和值 l=list('abcdefg') for i ,j in enumerate(l): print((i,j),end=' ') #(0, 'a') (1, 'b') (2, 'c') (3, 'd') (4, 'e') (5, 'f') (6, 'g')
还可以直接使用
list(enumerate(l)) # [(0, 'a'), (1, 'b'), (2, 'c'), (3, 'd'), (4, 'e'), (5, 'f'), (6, 'g')]
7.break 语句
break 语句可以跳出当前所在层的循环
import random secret = random.randint(1, 10) #[1,10]之间的随机数 while True: temp = input("不妨猜一下小哥哥现在心里想的是那个数字:") guess = int(temp) if guess > secret: print("大了,大了") else: if guess == secret: print("你这样懂小哥哥的心思啊?") print("哼,猜对也没有奖励!") break else: print("小了,小了") print("游戏结束,不玩儿啦!")
8.continue 语句
终止本轮循环并开始下一轮循还
#首先是0,然后就结束了if本轮的循环,直接到0+2,并输出2,再到1,1可以不可以整除2,于是输出1,然后到2,2可以整除,就直接到2+2,然后到3,,,, for i in range(10): if i % 2 != 0: print(i) continue i += 2 print(i)
9.pass
主要用于定义函数时,暂时不知道要函数要做什么用,但是又得然程序正常运行下去,就是要pass先占住位置
def f(): pass
10.推导式
应该叫列表生成器吧
练习题
1.编写一个Python程序来查找那些既可以被7整除又可以被5整除的数字,介于1500和2700之间
l=[] for i in range(1500,2701): if i%5==0 and i%7==0: l.append(i) l
2.