Python循环语句
循环结构用来重复执行一条或多条语句。表达这样的逻辑:如果符合条件,则反复执行循环体里的语句。在每次执行完后都会判断一次条件是否为True,如果为True则重复执行循环体里的语句。图示如下:
循环体里面的语句至少应该包含改变条件表达式的语句,以使循环趋于结束;否则,就会变成一个死循环。
Python 中的循环语句有 for 和 while。
while循环
''' while循环的语法格式如下: while 条件表达式: 循环体语句 注:注意冒号和缩进 '''
n = 1 while n < 10: print(n) n += 1 # 等价于 n = n + 1
# 【案例】使用while循环计算 1+2+3+...+100 的总和 n = 1 sum = 0 while n <101: sum += n n += 1 print(sum)
# 【案例】使用while循环计算 1-100 的奇数和/偶数和 n = 1 odd_sum = 0 even_sum = 0 while n < 101: if n % 2 == 1: odd_sum += n else: even_sum += n n+=1 print('1-100奇数和为:',odd_sum) print('1-100偶数和为:',even_sum)
无限循环
我们可以通过设置条件表达式永远不为 false 来实现无限循环。
你可以使用 CTRL+C 来退出当前的无限循环。
while True: name = input('请输入你的名字:') print('你的名字是:',name)
上面代码执行后程序会一直让你输入名字,然后打印出来。
while 循环使用 else 语句
''' 如果 while 后面的条件语句为 false 时,则执行 else 的语句块。语法格式如下: while <expr>: <statement(s)> else: <additional_statement(s)> 注:expr 条件语句为 true 则执行 statement(s) 语句块,如果为 false,则执行 additional_statement(s)。 ''' n = 10 while n < 18: print(f'你今年{n}岁了,是未成年!') n += 1 else: print(f'你今年{n}岁了,已经成年了!')
for 循环
Python for 循环可以遍历任何可迭代对象,如一个列表或者一个字符串。
''' for循环的一般格式如下: for 变量 in 可迭代对象: 循环体语句 ''' for i in 'Python': print(i)
for i in ['张三','李四',12,'abc']: print(i)
range对象
range对象 是一个迭代器对象,用来产生指定范围的数字序列。格式为:range(start, end ,step)
生成的数值序列从 start 开始到 end 结束(不包含 end )。
若没有填写 start ,则默认从0开始。 step 是可选的步长,默认为1。如下是几种典型示例:
for i in range(10) 产生序列:0 1 2 3 4 5 6 7 8 9
for i in range(3,10) 产生序列:3 4 5 6 7 8 9
for i in range(3,10,2) 产生序列:3 5 7 9
# 整数范围值可以配合 range() 函数使用: for i in range(5): print(i)
# 使用内置 enumerate 函数进行遍历 l = ['a','b','c'] for index,value in enumerate(l): print(index,value)
列表推导式
''' 列表推导式格式为: [表达式 for 变量 in 列表] 或者 [表达式 for 变量 in 列表 if 条件] ''' s1 = [i*i for i in range(10)] print(s1) s2 = [i*i for i in range(10) if i % 2 == 0] print(s2)
for循环使用else语句
''' 在 Python 中,for...else 语句用于在循环结束后执行一段代码。语法格式如下: for item in iterable: # 循环主体 else: # 循环结束后执行的代码 注:当循环执行完毕(即遍历完 iterable 中的所有元素)后,会执行 else 子句中的代码。 如果在循环过程中遇到了 break 语句,则会中断循环,此时不会执行 else 子句。 ''' for x in range(6): print(x) else: print("代码执行完毕!")
# 【综合练习】使用循环打印九九乘法表 for i in range(1,10): for j in range(1,i+1): print(f"{j}*{i}={i*j}",end="\t") print()